PageSourceSearch

https://users.forexfortunefactory.com/assets/chroma-61d0aa20f0299d…fd8ef142f5f7fe6e31738657616836a01948d9de.js

js forexfortunefactory.com collected 2026-09-29 01:21:50 UTC 379,276 bytes, 9,571 lines download raw bytes

1(() => {
2  var __create = Object.create;
3  var __defProp = Object.defineProperty;
4  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5  var __getOwnPropNames = Object.getOwnPropertyNames;
6  var __getProtoOf = Object.getPrototypeOf;
7  var __hasOwnProp = Object.prototype.hasOwnProperty;
8  var __esm = (fn, res) => function __init() {
9    return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10  };
11  var __commonJS = (cb, mod) => function __require() {
12    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13  };
14  var __copyProps = (to, from, except, desc) => {
15    if (from && typeof from === "object" || typeof from === "function") {
16      for (let key of __getOwnPropNames(from))
17        if (!__hasOwnProp.call(to, key) && key !== except)
18          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19    }
20    return to;
21  };
22  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23    // If the importer is in node compatibility mode or this is not an ESM
24    // file that has been converted to a CommonJS file using a Babel-
25    // compatible transform (i.e. "__esModule" has not been set), then set
26    // "default" to the CommonJS "module.exports" for node compatibility.
27    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28    mod
29  ));
30
31  // <define:process>
32  var init_define_process = __esm({
33    "<define:process>"() {
34    }
35  });
36
37  
vendor: 265,498 bytes, lines 37-6480
37// node_modules/jquery/dist/jquery.js
38  var require_jquery = __commonJS({
39    "node_modules/jquery/dist/jquery.js"(exports, module) {
40      init_define_process();
41      init_jquery();
42      (function(global2, factory) {
43        "use strict";
44        if (typeof module === "object" && typeof module.exports === "object") {
45          module.exports = global2.document ? factory(global2, true) : function(w) {
46            if (!w.document) {
47              throw new Error("jQuery requires a window with a document");
48            }
49            return factory(w);
50          };
51        } else {
52          factory(global2);
53        }
54      })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) {
55        "use strict";
56        var arr = [];
57        var getProto = Object.getPrototypeOf;
58        var slice = arr.slice;
59        var flat = arr.flat ? function(array) {
60          return arr.flat.call(array);
61        } : function(array) {
62          return arr.concat.apply([], array);
63        };
64        var push = arr.push;
65        var indexOf = arr.indexOf;
66        var class2type = {};
67        var toString = class2type.toString;
68        var hasOwn = class2type.hasOwnProperty;
69        var fnToString = hasOwn.toString;
70        var ObjectFunctionString = fnToString.call(Object);
71        var support = {};
72        var isFunction = function isFunction2(obj) {
73          return typeof obj === "function" && typeof obj.nodeType !== "number";
74        };
75        var isWindow = function isWindow2(obj) {
76          return obj != null && obj === obj.window;
77        };
78        var document = window2.document;
79        var preservedScriptAttributes = {
80          type: true,
81          src: true,
82          nonce: true,
83          noModule: true
84        };
85        function DOMEval(code, node, doc) {
86          doc = doc || document;
87          var i, val, script = doc.createElement("script");
88          script.text = code;
89          if (node) {
90            for (i in preservedScriptAttributes) {
91              val = node[i] || node.getAttribute && node.getAttribute(i);
92              if (val) {
93                script.setAttribute(i, val);
94              }
95            }
96          }
97          doc.head.appendChild(script).parentNode.removeChild(script);
98        }
99        function toType(obj) {
100          if (obj == null) {
101            return obj + "";
102          }
103          return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj;
104        }
105        var version = "3.5.1", jQuery = function(selector, context) {
106          return new jQuery.fn.init(selector, context);
107        };
108        jQuery.fn = jQuery.prototype = {
109          // The current version of jQuery being used
110          jquery: version,
111          constructor: jQuery,
112          // The default length of a jQuery object is 0
113          length: 0,
114          toArray: function() {
115            return slice.call(this);
116          },
117          // Get the Nth element in the matched element set OR
118          // Get the whole matched element set as a clean array
119          get: function(num) {
120            if (num == null) {
121              return slice.call(this);
122            }
123            return num < 0 ? this[num + this.length] : this[num];
124          },
125          // Take an array of elements and push it onto the stack
126          // (returning the new matched element set)
127          pushStack: function(elems) {
128            var ret = jQuery.merge(this.constructor(), elems);
129            ret.prevObject = this;
130            return ret;
131          },
132          // Execute a callback for every element in the matched set.
133          each: function(callback) {
134            return jQuery.each(this, callback);
135          },
136          map: function(callback) {
137            return this.pushStack(jQuery.map(this, function(elem, i) {
138              return callback.call(elem, i, elem);
139            }));
140          },
141          slice: function() {
142            return this.pushStack(slice.apply(this, arguments));
143          },
144          first: function() {
145            return this.eq(0);
146          },
147          last: function() {
148            return this.eq(-1);
149          },
150          even: function() {
151            return this.pushStack(jQuery.grep(this, function(_elem, i) {
152              return (i + 1) % 2;
153            }));
154          },
155          odd: function() {
156            return this.pushStack(jQuery.grep(this, function(_elem, i) {
157              return i % 2;
158            }));
159          },
160          eq: function(i) {
161            var len = this.length, j = +i + (i < 0 ? len : 0);
162            return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
163          },
164          end: function() {
165            return this.prevObject || this.constructor();
166          },
167          // For internal use only.
168          // Behaves like an Array's method, not like a jQuery method.
169          push,
170          sort: arr.sort,
171          splice: arr.splice
172        };
173        jQuery.extend = jQuery.fn.extend = function() {
174          var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;
175          if (typeof target === "boolean") {
176            deep = target;
177            target = arguments[i] || {};
178            i++;
179          }
180          if (typeof target !== "object" && !isFunction(target)) {
181            target = {};
182          }
183          if (i === length) {
184            target = this;
185            i--;
186          }
187          for (; i < length; i++) {
188            if ((options = arguments[i]) != null) {
189              for (name in options) {
190                copy = options[name];
191                if (name === "__proto__" || target === copy) {
192                  continue;
193                }
194                if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
195                  src = target[name];
196                  if (copyIsArray && !Array.isArray(src)) {
197                    clone = [];
198                  } else if (!copyIsArray && !jQuery.isPlainObject(src)) {
199                    clone = {};
200                  } else {
201                    clone = src;
202                  }
203                  copyIsArray = false;
204                  target[name] = jQuery.extend(deep, clone, copy);
205                } else if (copy !== void 0) {
206                  target[name] = copy;
207                }
208              }
209            }
210          }
211          return target;
212        };
213        jQuery.extend({
214          // Unique for each copy of jQuery on the page
215          expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
216          // Assume jQuery is ready without the ready module
217          isReady: true,
218          error: function(msg) {
219            throw new Error(msg);
220          },
221          noop: function() {
222          },
223          isPlainObject: function(obj) {
224            var proto, Ctor;
225            if (!obj || toString.call(obj) !== "[object Object]") {
226              return false;
227            }
228            proto = getProto(obj);
229            if (!proto) {
230              return true;
231            }
232            Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
233            return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
234          },
235          isEmptyObject: function(obj) {
236            var name;
237            for (name in obj) {
238              return false;
239            }
240            return true;
241          },
242          // Evaluates a script in a provided context; falls back to the global one
243          // if not specified.
244          globalEval: function(code, options, doc) {
245            DOMEval(code, { nonce: options && options.nonce }, doc);
246          },
247          each: function(obj, callback) {
248            var length, i = 0;
249            if (isArrayLike(obj)) {
250              length = obj.length;
251              for (; i < length; i++) {
252                if (callback.call(obj[i], i, obj[i]) === false) {
253                  break;
254                }
255              }
256            } else {
257              for (i in obj) {
258                if (callback.call(obj[i], i, obj[i]) === false) {
259                  break;
260                }
261              }
262            }
263            return obj;
264          },
265          // results is for internal usage only
266          makeArray: function(arr2, results) {
267            var ret = results || [];
268            if (arr2 != null) {
269              if (isArrayLike(Object(arr2))) {
270                jQuery.merge(
271                  ret,
272                  typeof arr2 === "string" ? [arr2] : arr2
273                );
274              } else {
275                push.call(ret, arr2);
276              }
277            }
278            return ret;
279          },
280          inArray: function(elem, arr2, i) {
281            return arr2 == null ? -1 : indexOf.call(arr2, elem, i);
282          },
283          // Support: Android <=4.0 only, PhantomJS 1 only
284          // push.apply(_, arraylike) throws on ancient WebKit
285          merge: function(first, second) {
286            var len = +second.length, j = 0, i = first.length;
287            for (; j < len; j++) {
288              first[i++] = second[j];
289            }
290            first.length = i;
291            return first;
292          },
293          grep: function(elems, callback, invert) {
294            var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert;
295            for (; i < length; i++) {
296              callbackInverse = !callback(elems[i], i);
297              if (callbackInverse !== callbackExpect) {
298                matches.push(elems[i]);
299              }
300            }
301            return matches;
302          },
303          // arg is for internal usage only
304          map: function(elems, callback, arg) {
305            var length, value, i = 0, ret = [];
306            if (isArrayLike(elems)) {
307              length = elems.length;
308              for (; i < length; i++) {
309                value = callback(elems[i], i, arg);
310                if (value != null) {
311                  ret.push(value);
312                }
313              }
314            } else {
315              for (i in elems) {
316                value = callback(elems[i], i, arg);
317                if (value != null) {
318                  ret.push(value);
319                }
320              }
321            }
322            return flat(ret);
323          },
324          // A global GUID counter for objects
325          guid: 1,
326          // jQuery.support is not used in Core but other projects attach their
327          // properties to it so it needs to exist.
328          support
329        });
330        if (typeof Symbol === "function") {
331          jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
332        }
333        jQuery.each(
334          "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
335          function(_i, name) {
336            class2type["[object " + name + "]"] = name.toLowerCase();
337          }
338        );
339        function isArrayLike(obj) {
340          var length = !!obj && "length" in obj && obj.length, type = toType(obj);
341          if (isFunction(obj) || isWindow(obj)) {
342            return false;
343          }
344          return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;
345        }
346        var Sizzle = (
347          /*!
348           * Sizzle CSS Selector Engine v2.3.5
349           * https://sizzlejs.com/
350           *
351           * Copyright JS Foundation and other contributors
352           * Released under the MIT license
353           * https://js.foundation/
354           *
355           * Date: 2020-03-14
356           */
357          function(window3) {
358            var i, support2, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document2, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, expando = "sizzle" + 1 * /* @__PURE__ */ new Date(), preferredDoc = window3.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) {
359              if (a === b) {
360                hasDuplicate = true;
361              }
362              return 0;
363            }, hasOwn2 = {}.hasOwnProperty, arr2 = [], pop = arr2.pop, pushNative = arr2.push, push2 = arr2.push, slice2 = arr2.slice, indexOf2 = function(list, elem) {
364              var i2 = 0, len = list.length;
365              for (; i2 < len; i2++) {
366                if (list[i2] === elem) {
367                  return i2;
368                }
369              }
370              return -1;
371            }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", whitespace = "[\\x20\\t\\r\\n\\f]", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2)
372            "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5]
373            // or strings [capture 3 or capture 4]"
374            `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + `)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|` + attributes + ")*)|.*)\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rtrim2 = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = {
375              "ID": new RegExp("^#(" + identifier + ")"),
376              "CLASS": new RegExp("^\\.(" + identifier + ")"),
377              "TAG": new RegExp("^(" + identifier + "|[*])"),
378              "ATTR": new RegExp("^" + attributes),
379              "PSEUDO": new RegExp("^" + pseudos),
380              "CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
381              "bool": new RegExp("^(?:" + booleans + ")$", "i"),
382              // For use in libraries implementing .is()
383              // We use this for POS matching in `select`
384              "needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
385            }, rhtml2 = /HTML$/i, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, rquickExpr2 = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape, nonHex) {
386              var high = "0x" + escape.slice(1) - 65536;
387              return nonHex ? (
388                // Strip the backslash prefix from a non-hex escape sequence
389                nonHex
390              ) : (
391                // Replace a hexadecimal escape sequence with the encoded Unicode code point
392                // Support: IE <=11+
393                // For values outside the Basic Multilingual Plane (BMP), manually construct a
394                // surrogate pair
395                high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320)
396              );
397            }, rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, fcssescape = function(ch, asCodePoint) {
398              if (asCodePoint) {
399                if (ch === "\0") {
400                  return "\uFFFD";
401                }
402                return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
403              }
404              return "\\" + ch;
405            }, unloadHandler = function() {
406              setDocument();
407            }, inDisabledFieldset = addCombinator(
408              function(elem) {
409                return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
410              },
411              { dir: "parentNode", next: "legend" }
412            );
413            try {
414              push2.apply(
415                arr2 = slice2.call(preferredDoc.childNodes),
416                preferredDoc.childNodes
417              );
418              arr2[preferredDoc.childNodes.length].nodeType;
419            } catch (e) {
420              push2 = {
421                apply: arr2.length ? (
422                  // Leverage slice if possible
423                  function(target, els) {
424                    pushNative.apply(target, slice2.call(els));
425                  }
426                ) : (
427                  // Support: IE<9
428                  // Otherwise append directly
429                  function(target, els) {
430                    var j = target.length, i2 = 0;
431                    while (target[j++] = els[i2++]) {
432                    }
433                    target.length = j - 1;
434                  }
435                )
436              };
437            }
438            function Sizzle2(selector, context, results, seed) {
439              var m, i2, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9;
440              results = results || [];
441              if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
442                return results;
443              }
444              if (!seed) {
445                setDocument(context);
446                context = context || document2;
447                if (documentIsHTML) {
448                  if (nodeType !== 11 && (match = rquickExpr2.exec(selector))) {
449                    if (m = match[1]) {
450                      if (nodeType === 9) {
451                        if (elem = context.getElementById(m)) {
452                          if (elem.id === m) {
453                            results.push(elem);
454                            return results;
455                          }
456                        } else {
457                          return results;
458                        }
459                      } else {
460                        if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {
461                          results.push(elem);
462                          return results;
463                        }
464                      }
465                    } else if (match[2]) {
466                      push2.apply(results, context.getElementsByTagName(selector));
467                      return results;
468                    } else if ((m = match[3]) && support2.getElementsByClassName && context.getElementsByClassName) {
469                      push2.apply(results, context.getElementsByClassName(m));
470                      return results;
471                    }
472                  }
473                  if (support2.qsa && !nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && // Support: IE 8 only
474                  // Exclude object elements
475                  (nodeType !== 1 || context.nodeName.toLowerCase() !== "object")) {
476                    newSelector = selector;
477                    newContext = context;
478                    if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {
479                      newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
480                      if (newContext !== context || !support2.scope) {
481                        if (nid = context.getAttribute("id")) {
482                          nid = nid.replace(rcssescape, fcssescape);
483                        } else {
484                          context.setAttribute("id", nid = expando);
485                        }
486                      }
487                      groups = tokenize(selector);
488                      i2 = groups.length;
489                      while (i2--) {
490                        groups[i2] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i2]);
491                      }
492                      newSelector = groups.join(",");
493                    }
494                    try {
495                      push2.apply(
496                        results,
497                        newContext.querySelectorAll(newSelector)
498                      );
499                      return results;
500                    } catch (qsaError) {
501                      nonnativeSelectorCache(selector, true);
502                    } finally {
503                      if (nid === expando) {
504                        context.removeAttribute("id");
505                      }
506                    }
507                  }
508                }
509              }
510              return select(selector.replace(rtrim2, "$1"), context, results, seed);
511            }
512            function createCache() {
513              var keys = [];
514              function cache(key, value) {
515                if (keys.push(key + " ") > Expr.cacheLength) {
516                  delete cache[keys.shift()];
517                }
518                return cache[key + " "] = value;
519              }
520              return cache;
521            }
522            function markFunction(fn) {
523              fn[expando] = true;
524              return fn;
525            }
526            function assert(fn) {
527              var el = document2.createElement("fieldset");
528              try {
529                return !!fn(el);
530              } catch (e) {
531                return false;
532              } finally {
533                if (el.parentNode) {
534                  el.parentNode.removeChild(el);
535                }
536                el = null;
537              }
538            }
539            function addHandle(attrs, handler) {
540              var arr3 = attrs.split("|"), i2 = arr3.length;
541              while (i2--) {
542                Expr.attrHandle[arr3[i2]] = handler;
543              }
544            }
545            function siblingCheck(a, b) {
546              var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex;
547              if (diff) {
548                return diff;
549              }
550              if (cur) {
551                while (cur = cur.nextSibling) {
552                  if (cur === b) {
553                    return -1;
554                  }
555                }
556              }
557              return a ? 1 : -1;
558            }
559            function createInputPseudo(type) {
560              return function(elem) {
561                var name = elem.nodeName.toLowerCase();
562                return name === "input" && elem.type === type;
563              };
564            }
565            function createButtonPseudo(type) {
566              return function(elem) {
567                var name = elem.nodeName.toLowerCase();
568                return (name === "input" || name === "button") && elem.type === type;
569              };
570            }
571            function createDisabledPseudo(disabled) {
572              return function(elem) {
573                if ("form" in elem) {
574                  if (elem.parentNode && elem.disabled === false) {
575                    if ("label" in elem) {
576                      if ("label" in elem.parentNode) {
577                        return elem.parentNode.disabled === disabled;
578                      } else {
579                        return elem.disabled === disabled;
580                      }
581                    }
582                    return elem.isDisabled === disabled || // Where there is no isDisabled, check manually
583                    /* jshint -W018 */
584                    elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
585                  }
586                  return elem.disabled === disabled;
587                } else if ("label" in elem) {
588                  return elem.disabled === disabled;
589                }
590                return false;
591              };
592            }
593            function createPositionalPseudo(fn) {
594              return markFunction(function(argument) {
595                argument = +argument;
596                return markFunction(function(seed, matches2) {
597                  var j, matchIndexes = fn([], seed.length, argument), i2 = matchIndexes.length;
598                  while (i2--) {
599                    if (seed[j = matchIndexes[i2]]) {
600                      seed[j] = !(matches2[j] = seed[j]);
601                    }
602                  }
603                });
604              });
605            }
606            function testContext(context) {
607              return context && typeof context.getElementsByTagName !== "undefined" && context;
608            }
609            support2 = Sizzle2.support = {};
610            isXML = Sizzle2.isXML = function(elem) {
611              var namespace = elem.namespaceURI, docElem2 = (elem.ownerDocument || elem).documentElement;
612              return !rhtml2.test(namespace || docElem2 && docElem2.nodeName || "HTML");
613            };
614            setDocument = Sizzle2.setDocument = function(node) {
615              var hasCompare, subWindow, doc = node ? node.ownerDocument || node : preferredDoc;
616              if (doc == document2 || doc.nodeType !== 9 || !doc.documentElement) {
617                return document2;
618              }
619              document2 = doc;
620              docElem = document2.documentElement;
621              documentIsHTML = !isXML(document2);
622              if (preferredDoc != document2 && (subWindow = document2.defaultView) && subWindow.top !== subWindow) {
623                if (subWindow.addEventListener) {
624                  subWindow.addEventListener("unload", unloadHandler, false);
625                } else if (subWindow.attachEvent) {
626                  subWindow.attachEvent("onunload", unloadHandler);
627                }
628              }
629              support2.scope = assert(function(el) {
630                docElem.appendChild(el).appendChild(document2.createElement("div"));
631                return typeof el.querySelectorAll !== "undefined" && !el.querySelectorAll(":scope fieldset div").length;
632              });
633              support2.attributes = assert(function(el) {
634                el.className = "i";
635                return !el.getAttribute("className");
636              });
637              support2.getElementsByTagName = assert(function(el) {
638                el.appendChild(document2.createComment(""));
639                return !el.getElementsByTagName("*").length;
640              });
641              support2.getElementsByClassName = rnative.test(document2.getElementsByClassName);
642              support2.getById = assert(function(el) {
643                docElem.appendChild(el).id = expando;
644                return !document2.getElementsByName || !document2.getElementsByName(expando).length;
645              });
646              if (support2.getById) {
647                Expr.filter["ID"] = function(id) {
648                  var attrId = id.replace(runescape, funescape);
649                  return function(elem) {
650                    return elem.getAttribute("id") === attrId;
651                  };
652                };
653                Expr.find["ID"] = function(id, context) {
654                  if (typeof context.getElementById !== "undefined" && documentIsHTML) {
655                    var elem = context.getElementById(id);
656                    return elem ? [elem] : [];
657                  }
658                };
659              } else {
660                Expr.filter["ID"] = function(id) {
661                  var attrId = id.replace(runescape, funescape);
662                  return function(elem) {
663                    var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
664                    return node2 && node2.value === attrId;
665                  };
666                };
667                Expr.find["ID"] = function(id, context) {
668                  if (typeof context.getElementById !== "undefined" && documentIsHTML) {
669                    var node2, i2, elems, elem = context.getElementById(id);
670                    if (elem) {
671                      node2 = elem.getAttributeNode("id");
672                      if (node2 && node2.value === id) {
673                        return [elem];
674                      }
675                      elems = context.getElementsByName(id);
676                      i2 = 0;
677                      while (elem = elems[i2++]) {
678                        node2 = elem.getAttributeNode("id");
679                        if (node2 && node2.value === id) {
680                          return [elem];
681                        }
682                      }
683                    }
684                    return [];
685                  }
686                };
687              }
688              Expr.find["TAG"] = support2.getElementsByTagName ? function(tag, context) {
689                if (typeof context.getElementsByTagName !== "undefined") {
690                  return context.getElementsByTagName(tag);
691                } else if (support2.qsa) {
692                  return context.querySelectorAll(tag);
693                }
694              } : function(tag, context) {
695                var elem, tmp = [], i2 = 0, results = context.getElementsByTagName(tag);
696                if (tag === "*") {
697                  while (elem = results[i2++]) {
698                    if (elem.nodeType === 1) {
699                      tmp.push(elem);
700                    }
701                  }
702                  return tmp;
703                }
704                return results;
705              };
706              Expr.find["CLASS"] = support2.getElementsByClassName && function(className, context) {
707                if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
708                  return context.getElementsByClassName(className);
709                }
710              };
711              rbuggyMatches = [];
712              rbuggyQSA = [];
713              if (support2.qsa = rnative.test(document2.querySelectorAll)) {
714                assert(function(el) {
715                  var input;
716                  docElem.appendChild(el).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\r\\' msallowcapture=''><option selected=''></option></select>";
717                  if (el.querySelectorAll("[msallowcapture^='']").length) {
718                    rbuggyQSA.push("[*^$]=" + whitespace + `*(?:''|"")`);
719                  }
720                  if (!el.querySelectorAll("[selected]").length) {
721                    rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
722                  }
723                  if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
724                    rbuggyQSA.push("~=");
725                  }
726                  input = document2.createElement("input");
727                  input.setAttribute("name", "");
728                  el.appendChild(input);
729                  if (!el.querySelectorAll("[name='']").length) {
730                    rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`);
731                  }
732                  if (!el.querySelectorAll(":checked").length) {
733                    rbuggyQSA.push(":checked");
734                  }
735                  if (!el.querySelectorAll("a#" + expando + "+*").length) {
736                    rbuggyQSA.push(".#.+[+~]");
737                  }
738                  el.querySelectorAll("\\\f");
739                  rbuggyQSA.push("[\\r\\n\\f]");
740                });
741                assert(function(el) {
742                  el.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
743                  var input = document2.createElement("input");
744                  input.setAttribute("type", "hidden");
745                  el.appendChild(input).setAttribute("name", "D");
746                  if (el.querySelectorAll("[name=d]").length) {
747                    rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?=");
748                  }
749                  if (el.querySelectorAll(":enabled").length !== 2) {
750                    rbuggyQSA.push(":enabled", ":disabled");
751                  }
752                  docElem.appendChild(el).disabled = true;
753                  if (el.querySelectorAll(":disabled").length !== 2) {
754                    rbuggyQSA.push(":enabled", ":disabled");
755                  }
756                  el.querySelectorAll("*,:x");
757                  rbuggyQSA.push(",.*:");
758                });
759              }
760              if (support2.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {
761                assert(function(el) {
762                  support2.disconnectedMatch = matches.call(el, "*");
763                  matches.call(el, "[s!='']:x");
764                  rbuggyMatches.push("!=", pseudos);
765                });
766              }
767              rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
768              rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|"));
769              hasCompare = rnative.test(docElem.compareDocumentPosition);
770              contains = hasCompare || rnative.test(docElem.contains) ? function(a, b) {
771                var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode;
772                return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
773              } : function(a, b) {
774                if (b) {
775                  while (b = b.parentNode) {
776                    if (b === a) {
777                      return true;
778                    }
779                  }
780                }
781                return false;
782              };
783              sortOrder = hasCompare ? function(a, b) {
784                if (a === b) {
785                  hasDuplicate = true;
786                  return 0;
787                }
788                var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
789                if (compare) {
790                  return compare;
791                }
792                compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : (
793                  // Otherwise we know they are disconnected
794                  1
795                );
796                if (compare & 1 || !support2.sortDetached && b.compareDocumentPosition(a) === compare) {
797                  if (a == document2 || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {
798                    return -1;
799                  }
800                  if (b == document2 || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {
801                    return 1;
802                  }
803                  return sortInput ? indexOf2(sortInput, a) - indexOf2(sortInput, b) : 0;
804                }
805                return compare & 4 ? -1 : 1;
806              } : function(a, b) {
807                if (a === b) {
808                  hasDuplicate = true;
809                  return 0;
810                }
811                var cur, i2 = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];
812                if (!aup || !bup) {
813                  return a == document2 ? -1 : b == document2 ? 1 : (
814                    /* eslint-enable eqeqeq */
815                    aup ? -1 : bup ? 1 : sortInput ? indexOf2(sortInput, a) - indexOf2(sortInput, b) : 0
816                  );
817                } else if (aup === bup) {
818                  return siblingCheck(a, b);
819                }
820                cur = a;
821                while (cur = cur.parentNode) {
822                  ap.unshift(cur);
823                }
824                cur = b;
825                while (cur = cur.parentNode) {
826                  bp.unshift(cur);
827                }
828                while (ap[i2] === bp[i2]) {
829                  i2++;
830                }
831                return i2 ? (
832                  // Do a sibling check if the nodes have a common ancestor
833                  siblingCheck(ap[i2], bp[i2])
834                ) : (
835                  // Otherwise nodes in our document sort first
836                  // Support: IE 11+, Edge 17 - 18+
837                  // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
838                  // two documents; shallow comparisons work.
839                  /* eslint-disable eqeqeq */
840                  ap[i2] == preferredDoc ? -1 : bp[i2] == preferredDoc ? 1 : (
841                    /* eslint-enable eqeqeq */
842                    0
843                  )
844                );
845              };
846              return document2;
847            };
848            Sizzle2.matches = function(expr, elements) {
849              return Sizzle2(expr, null, null, elements);
850            };
851            Sizzle2.matchesSelector = function(elem, expr) {
852              setDocument(elem);
853              if (support2.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
854                try {
855                  var ret = matches.call(elem, expr);
856                  if (ret || support2.disconnectedMatch || // As well, disconnected nodes are said to be in a document
857                  // fragment in IE 9
858                  elem.document && elem.document.nodeType !== 11) {
859                    return ret;
860                  }
861                } catch (e) {
862                  nonnativeSelectorCache(expr, true);
863                }
864              }
865              return Sizzle2(expr, document2, null, [elem]).length > 0;
866            };
867            Sizzle2.contains = function(context, elem) {
868              if ((context.ownerDocument || context) != document2) {
869                setDocument(context);
870              }
871              return contains(context, elem);
872            };
873            Sizzle2.attr = function(elem, name) {
874              if ((elem.ownerDocument || elem) != document2) {
875                setDocument(elem);
876              }
877              var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn2.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0;
878              return val !== void 0 ? val : support2.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
879            };
880            Sizzle2.escape = function(sel) {
881              return (sel + "").replace(rcssescape, fcssescape);
882            };
883            Sizzle2.error = function(msg) {
884              throw new Error("Syntax error, unrecognized expression: " + msg);
885            };
886            Sizzle2.uniqueSort = function(results) {
887              var elem, duplicates = [], j = 0, i2 = 0;
888              hasDuplicate = !support2.detectDuplicates;
889              sortInput = !support2.sortStable && results.slice(0);
890              results.sort(sortOrder);
891              if (hasDuplicate) {
892                while (elem = results[i2++]) {
893                  if (elem === results[i2]) {
894                    j = duplicates.push(i2);
895                  }
896                }
897                while (j--) {
898                  results.splice(duplicates[j], 1);
899                }
900              }
901              sortInput = null;
902              return results;
903            };
904            getText = Sizzle2.getText = function(elem) {
905              var node, ret = "", i2 = 0, nodeType = elem.nodeType;
906              if (!nodeType) {
907                while (node = elem[i2++]) {
908                  ret += getText(node);
909                }
910              } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
911                if (typeof elem.textContent === "string") {
912                  return elem.textContent;
913                } else {
914                  for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
915                    ret += getText(elem);
916                  }
917                }
918              } else if (nodeType === 3 || nodeType === 4) {
919                return elem.nodeValue;
920              }
921              return ret;
922            };
923            Expr = Sizzle2.selectors = {
924              // Can be adjusted by the user
925              cacheLength: 50,
926              createPseudo: markFunction,
927              match: matchExpr,
928              attrHandle: {},
929              find: {},
930              relative: {
931                ">": { dir: "parentNode", first: true },
932                " ": { dir: "parentNode" },
933                "+": { dir: "previousSibling", first: true },
934                "~": { dir: "previousSibling" }
935              },
936              preFilter: {
937                "ATTR": function(match) {
938                  match[1] = match[1].replace(runescape, funescape);
939                  match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
940                  if (match[2] === "~=") {
941                    match[3] = " " + match[3] + " ";
942                  }
943                  return match.slice(0, 4);
944                },
945                "CHILD": function(match) {
946                  match[1] = match[1].toLowerCase();
947                  if (match[1].slice(0, 3) === "nth") {
948                    if (!match[3]) {
949                      Sizzle2.error(match[0]);
950                    }
951                    match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
952                    match[5] = +(match[7] + match[8] || match[3] === "odd");
953                  } else if (match[3]) {
954                    Sizzle2.error(match[0]);
955                  }
956                  return match;
957                },
958                "PSEUDO": function(match) {
959                  var excess, unquoted = !match[6] && match[2];
960                  if (matchExpr["CHILD"].test(match[0])) {
961                    return null;
962                  }
963                  if (match[3]) {
964                    match[2] = match[4] || match[5] || "";
965                  } else if (unquoted && rpseudo.test(unquoted) && // Get excess from tokenize (recursively)
966                  (excess = tokenize(unquoted, true)) && // advance to the next closing parenthesis
967                  (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
968                    match[0] = match[0].slice(0, excess);
969                    match[2] = unquoted.slice(0, excess);
970                  }
971                  return match.slice(0, 3);
972                }
973              },
974              filter: {
975                "TAG": function(nodeNameSelector) {
976                  var nodeName2 = nodeNameSelector.replace(runescape, funescape).toLowerCase();
977                  return nodeNameSelector === "*" ? function() {
978                    return true;
979                  } : function(elem) {
980                    return elem.nodeName && elem.nodeName.toLowerCase() === nodeName2;
981                  };
982                },
983                "CLASS": function(className) {
984                  var pattern = classCache[className + " "];
985                  return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(
986                    className,
987                    function(elem) {
988                      return pattern.test(
989                        typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || ""
990                      );
991                    }
992                  );
993                },
994                "ATTR": function(name, operator, check) {
995                  return function(elem) {
996                    var result = Sizzle2.attr(elem, name);
997                    if (result == null) {
998                      return operator === "!=";
999                    }
1000                    if (!operator) {
1001                      return true;
1002                    }
1003                    result += "";
1004                    return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false;
1005                  };
1006                },
1007                "CHILD": function(type, what, _argument, first, last) {
1008                  var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type";
1009                  return first === 1 && last === 0 ? (
1010                    // Shortcut for :nth-*(n)
1011                    function(elem) {
1012                      return !!elem.parentNode;
1013                    }
1014                  ) : function(elem, _context, xml) {
1015                    var cache, uniqueCache, outerCache, node, nodeIndex, start, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false;
1016                    if (parent) {
1017                      if (simple) {
1018                        while (dir2) {
1019                          node = elem;
1020                          while (node = node[dir2]) {
1021                            if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
1022                              return false;
1023                            }
1024                          }
1025                          start = dir2 = type === "only" && !start && "nextSibling";
1026                        }
1027                        return true;
1028                      }
1029                      start = [forward ? parent.firstChild : parent.lastChild];
1030                      if (forward && useCache) {
1031                        node = parent;
1032                        outerCache = node[expando] || (node[expando] = {});
1033                        uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
1034                        cache = uniqueCache[type] || [];
1035                        nodeIndex = cache[0] === dirruns && cache[1];
1036                        diff = nodeIndex && cache[2];
1037                        node = nodeIndex && parent.childNodes[nodeIndex];
1038                        while (node = ++nodeIndex && node && node[dir2] || // Fallback to seeking `elem` from the start
1039                        (diff = nodeIndex = 0) || start.pop()) {
1040                          if (node.nodeType === 1 && ++diff && node === elem) {
1041                            uniqueCache[type] = [dirruns, nodeIndex, diff];
1042                            break;
1043                          }
1044                        }
1045                      } else {
1046                        if (useCache) {
1047                          node = elem;
1048                          outerCache = node[expando] || (node[expando] = {});
1049                          uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
1050                          cache = uniqueCache[type] || [];
1051                          nodeIndex = cache[0] === dirruns && cache[1];
1052                          diff = nodeIndex;
1053                        }
1054                        if (diff === false) {
1055                          while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) {
1056                            if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
1057                              if (useCache) {
1058                                outerCache = node[expando] || (node[expando] = {});
1059                                uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
1060                                uniqueCache[type] = [dirruns, diff];
1061                              }
1062                              if (node === elem) {
1063                                break;
1064                              }
1065                            }
1066                          }
1067                        }
1068                      }
1069                      diff -= last;
1070                      return diff === first || diff % first === 0 && diff / first >= 0;
1071                    }
1072                  };
1073                },
1074                "PSEUDO": function(pseudo, argument) {
1075                  var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle2.error("unsupported pseudo: " + pseudo);
1076                  if (fn[expando]) {
1077                    return fn(argument);
1078                  }
1079                  if (fn.length > 1) {
1080                    args = [pseudo, pseudo, "", argument];
1081                    return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches2) {
1082                      var idx, matched = fn(seed, argument), i2 = matched.length;
1083                      while (i2--) {
1084                        idx = indexOf2(seed, matched[i2]);
1085                        seed[idx] = !(matches2[idx] = matched[i2]);
1086                      }
1087                    }) : function(elem) {
1088                      return fn(elem, 0, args);
1089                    };
1090                  }
1091                  return fn;
1092                }
1093              },
1094              pseudos: {
1095                // Potentially complex pseudos
1096                "not": markFunction(function(selector) {
1097                  var input = [], results = [], matcher = compile(selector.replace(rtrim2, "$1"));
1098                  return matcher[expando] ? markFunction(function(seed, matches2, _context, xml) {
1099                    var elem, unmatched = matcher(seed, null, xml, []), i2 = seed.length;
1100                    while (i2--) {
1101                      if (elem = unmatched[i2]) {
1102                        seed[i2] = !(matches2[i2] = elem);
1103                      }
1104                    }
1105                  }) : function(elem, _context, xml) {
1106                    input[0] = elem;
1107                    matcher(input, null, xml, results);
1108                    input[0] = null;
1109                    return !results.pop();
1110                  };
1111                }),
1112                "has": markFunction(function(selector) {
1113                  return function(elem) {
1114                    return Sizzle2(selector, elem).length > 0;
1115                  };
1116                }),
1117                "contains": markFunction(function(text) {
1118                  text = text.replace(runescape, funescape);
1119                  return function(elem) {
1120                    return (elem.textContent || getText(elem)).indexOf(text) > -1;
1121                  };
1122                }),
1123                // "Whether an element is represented by a :lang() selector
1124                // is based solely on the element's language value
1125                // being equal to the identifier C,
1126                // or beginning with the identifier C immediately followed by "-".
1127                // The matching of C against the element's language value is performed case-insensitively.
1128                // The identifier C does not have to be a valid language name."
1129                // http://www.w3.org/TR/selectors/#lang-pseudo
1130                "lang": markFunction(function(lang) {
1131                  if (!ridentifier.test(lang || "")) {
1132                    Sizzle2.error("unsupported lang: " + lang);
1133                  }
1134                  lang = lang.replace(runescape, funescape).toLowerCase();
1135                  return function(elem) {
1136                    var elemLang;
1137                    do {
1138                      if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
1139                        elemLang = elemLang.toLowerCase();
1140                        return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
1141                      }
1142                    } while ((elem = elem.parentNode) && elem.nodeType === 1);
1143                    return false;
1144                  };
1145                }),
1146                // Miscellaneous
1147                "target": function(elem) {
1148                  var hash = window3.location && window3.location.hash;
1149                  return hash && hash.slice(1) === elem.id;
1150                },
1151                "root": function(elem) {
1152                  return elem === docElem;
1153                },
1154                "focus": function(elem) {
1155                  return elem === document2.activeElement && (!document2.hasFocus || document2.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
1156                },
1157                // Boolean properties
1158                "enabled": createDisabledPseudo(false),
1159                "disabled": createDisabledPseudo(true),
1160                "checked": function(elem) {
1161                  var nodeName2 = elem.nodeName.toLowerCase();
1162                  return nodeName2 === "input" && !!elem.checked || nodeName2 === "option" && !!elem.selected;
1163                },
1164                "selected": function(elem) {
1165                  if (elem.parentNode) {
1166                    elem.parentNode.selectedIndex;
1167                  }
1168                  return elem.selected === true;
1169                },
1170                // Contents
1171                "empty": function(elem) {
1172                  for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
1173                    if (elem.nodeType < 6) {
1174                      return false;
1175                    }
1176                  }
1177                  return true;
1178                },
1179                "parent": function(elem) {
1180                  return !Expr.pseudos["empty"](elem);
1181                },
1182                // Element/input types
1183                "header": function(elem) {
1184                  return rheader.test(elem.nodeName);
1185                },
1186                "input": function(elem) {
1187                  return rinputs.test(elem.nodeName);
1188                },
1189                "button": function(elem) {
1190                  var name = elem.nodeName.toLowerCase();
1191                  return name === "input" && elem.type === "button" || name === "button";
1192                },
1193                "text": function(elem) {
1194                  var attr;
1195                  return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && // Support: IE<8
1196                  // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
1197                  ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
1198                },
1199                // Position-in-collection
1200                "first": createPositionalPseudo(function() {
1201                  return [0];
1202                }),
1203                "last": createPositionalPseudo(function(_matchIndexes, length) {
1204                  return [length - 1];
1205                }),
1206                "eq": createPositionalPseudo(function(_matchIndexes, length, argument) {
1207                  return [argument < 0 ? argument + length : argument];
1208                }),
1209                "even": createPositionalPseudo(function(matchIndexes, length) {
1210                  var i2 = 0;
1211                  for (; i2 < length; i2 += 2) {
1212                    matchIndexes.push(i2);
1213                  }
1214                  return matchIndexes;
1215                }),
1216                "odd": createPositionalPseudo(function(matchIndexes, length) {
1217                  var i2 = 1;
1218                  for (; i2 < length; i2 += 2) {
1219                    matchIndexes.push(i2);
1220                  }
1221                  return matchIndexes;
1222                }),
1223                "lt": createPositionalPseudo(function(matchIndexes, length, argument) {
1224                  var i2 = argument < 0 ? argument + length : argument > length ? length : argument;
1225                  for (; --i2 >= 0; ) {
1226                    matchIndexes.push(i2);
1227                  }
1228                  return matchIndexes;
1229                }),
1230                "gt": createPositionalPseudo(function(matchIndexes, length, argument) {
1231                  var i2 = argument < 0 ? argument + length : argument;
1232                  for (; ++i2 < length; ) {
1233                    matchIndexes.push(i2);
1234                  }
1235                  return matchIndexes;
1236                })
1237              }
1238            };
1239            Expr.pseudos["nth"] = Expr.pseudos["eq"];
1240            for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) {
1241              Expr.pseudos[i] = createInputPseudo(i);
1242            }
1243            for (i in { submit: true, reset: true }) {
1244              Expr.pseudos[i] = createButtonPseudo(i);
1245            }
1246            function setFilters() {
1247            }
1248            setFilters.prototype = Expr.filters = Expr.pseudos;
1249            Expr.setFilters = new setFilters();
1250            tokenize = Sizzle2.tokenize = function(selector, parseOnly) {
1251              var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "];
1252              if (cached) {
1253                return parseOnly ? 0 : cached.slice(0);
1254              }
1255              soFar = selector;
1256              groups = [];
1257              preFilters = Expr.preFilter;
1258              while (soFar) {
1259                if (!matched || (match = rcomma.exec(soFar))) {
1260                  if (match) {
1261                    soFar = soFar.slice(match[0].length) || soFar;
1262                  }
1263                  groups.push(tokens = []);
1264                }
1265                matched = false;
1266                if (match = rcombinators.exec(soFar)) {
1267                  matched = match.shift();
1268                  tokens.push({
1269                    value: matched,
1270                    // Cast descendant combinators to space
1271                    type: match[0].replace(rtrim2, " ")
1272                  });
1273                  soFar = soFar.slice(matched.length);
1274                }
1275                for (type in Expr.filter) {
1276                  if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
1277                    matched = match.shift();
1278                    tokens.push({
1279                      value: matched,
1280                      type,
1281                      matches: match
1282                    });
1283                    soFar = soFar.slice(matched.length);
1284                  }
1285                }
1286                if (!matched) {
1287                  break;
1288                }
1289              }
1290              return parseOnly ? soFar.length : soFar ? Sizzle2.error(selector) : (
1291                // Cache the tokens
1292                tokenCache(selector, groups).slice(0)
1293              );
1294            };
1295            function toSelector(tokens) {
1296              var i2 = 0, len = tokens.length, selector = "";
1297              for (; i2 < len; i2++) {
1298                selector += tokens[i2].value;
1299              }
1300              return selector;
1301            }
1302            function addCombinator(matcher, combinator, base) {
1303              var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++;
1304              return combinator.first ? (
1305                // Check against closest ancestor/preceding element
1306                function(elem, context, xml) {
1307                  while (elem = elem[dir2]) {
1308                    if (elem.nodeType === 1 || checkNonElements) {
1309                      return matcher(elem, context, xml);
1310                    }
1311                  }
1312                  return false;
1313                }
1314              ) : (
1315                // Check against all ancestor/preceding elements
1316                function(elem, context, xml) {
1317                  var oldCache, uniqueCache, outerCache, newCache = [dirruns, doneName];
1318                  if (xml) {
1319                    while (elem = elem[dir2]) {
1320                      if (elem.nodeType === 1 || checkNonElements) {
1321                        if (matcher(elem, context, xml)) {
1322                          return true;
1323                        }
1324                      }
1325                    }
1326                  } else {
1327                    while (elem = elem[dir2]) {
1328                      if (elem.nodeType === 1 || checkNonElements) {
1329                        outerCache = elem[expando] || (elem[expando] = {});
1330                        uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});
1331                        if (skip && skip === elem.nodeName.toLowerCase()) {
1332                          elem = elem[dir2] || elem;
1333                        } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
1334                          return newCache[2] = oldCache[2];
1335                        } else {
1336                          uniqueCache[key] = newCache;
1337                          if (newCache[2] = matcher(elem, context, xml)) {
1338                            return true;
1339                          }
1340                        }
1341                      }
1342                    }
1343                  }
1344                  return false;
1345                }
1346              );
1347            }
1348            function elementMatcher(matchers) {
1349              return matchers.length > 1 ? function(elem, context, xml) {
1350                var i2 = matchers.length;
1351                while (i2--) {
1352                  if (!matchers[i2](elem, context, xml)) {
1353                    return false;
1354                  }
1355                }
1356                return true;
1357              } : matchers[0];
1358            }
1359            function multipleContexts(selector, contexts, results) {
1360              var i2 = 0, len = contexts.length;
1361              for (; i2 < len; i2++) {
1362                Sizzle2(selector, contexts[i2], results);
1363              }
1364              return results;
1365            }
1366            function condense(unmatched, map, filter, context, xml) {
1367              var elem, newUnmatched = [], i2 = 0, len = unmatched.length, mapped = map != null;
1368              for (; i2 < len; i2++) {
1369                if (elem = unmatched[i2]) {
1370                  if (!filter || filter(elem, context, xml)) {
1371                    newUnmatched.push(elem);
1372                    if (mapped) {
1373                      map.push(i2);
1374                    }
1375                  }
1376                }
1377              }
1378              return newUnmatched;
1379            }
1380            function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
1381              if (postFilter && !postFilter[expando]) {
1382                postFilter = setMatcher(postFilter);
1383              }
1384              if (postFinder && !postFinder[expando]) {
1385                postFinder = setMatcher(postFinder, postSelector);
1386              }
1387              return markFunction(function(seed, results, context, xml) {
1388                var temp, i2, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(
1389                  selector || "*",
1390                  context.nodeType ? [context] : context,
1391                  []
1392                ), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? (
1393                  // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
1394                  postFinder || (seed ? preFilter : preexisting || postFilter) ? (
1395                    // ...intermediate processing is necessary
1396                    []
1397                  ) : (
1398                    // ...otherwise use results directly
1399                    results
1400                  )
1401                ) : matcherIn;
1402                if (matcher) {
1403                  matcher(matcherIn, matcherOut, context, xml);
1404                }
1405                if (postFilter) {
1406                  temp = condense(matcherOut, postMap);
1407                  postFilter(temp, [], context, xml);
1408                  i2 = temp.length;
1409                  while (i2--) {
1410                    if (elem = temp[i2]) {
1411                      matcherOut[postMap[i2]] = !(matcherIn[postMap[i2]] = elem);
1412                    }
1413                  }
1414                }
1415                if (seed) {
1416                  if (postFinder || preFilter) {
1417                    if (postFinder) {
1418                      temp = [];
1419                      i2 = matcherOut.length;
1420                      while (i2--) {
1421                        if (elem = matcherOut[i2]) {
1422                          temp.push(matcherIn[i2] = elem);
1423                        }
1424                      }
1425                      postFinder(null, matcherOut = [], temp, xml);
1426                    }
1427                    i2 = matcherOut.length;
1428                    while (i2--) {
1429                      if ((elem = matcherOut[i2]) && (temp = postFinder ? indexOf2(seed, elem) : preMap[i2]) > -1) {
1430                        seed[temp] = !(results[temp] = elem);
1431                      }
1432                    }
1433                  }
1434                } else {
1435                  matcherOut = condense(
1436                    matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut
1437                  );
1438                  if (postFinder) {
1439                    postFinder(null, results, matcherOut, xml);
1440                  } else {
1441                    push2.apply(results, matcherOut);
1442                  }
1443                }
1444              });
1445            }
1446            function matcherFromTokens(tokens) {
1447              var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i2 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) {
1448                return elem === checkContext;
1449              }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) {
1450                return indexOf2(checkContext, elem) > -1;
1451              }, implicitRelative, true), matchers = [function(elem, context, xml) {
1452                var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
1453                checkContext = null;
1454                return ret;
1455              }];
1456              for (; i2 < len; i2++) {
1457                if (matcher = Expr.relative[tokens[i2].type]) {
1458                  matchers = [addCombinator(elementMatcher(matchers), matcher)];
1459                } else {
1460                  matcher = Expr.filter[tokens[i2].type].apply(null, tokens[i2].matches);
1461                  if (matcher[expando]) {
1462                    j = ++i2;
1463                    for (; j < len; j++) {
1464                      if (Expr.relative[tokens[j].type]) {
1465                        break;
1466                      }
1467                    }
1468                    return setMatcher(
1469                      i2 > 1 && elementMatcher(matchers),
1470                      i2 > 1 && toSelector(
1471                        // If the preceding token was a descendant combinator, insert an implicit any-element `*`
1472                        tokens.slice(0, i2 - 1).concat({ value: tokens[i2 - 2].type === " " ? "*" : "" })
1473                      ).replace(rtrim2, "$1"),
1474                      matcher,
1475                      i2 < j && matcherFromTokens(tokens.slice(i2, j)),
1476                      j < len && matcherFromTokens(tokens = tokens.slice(j)),
1477                      j < len && toSelector(tokens)
1478                    );
1479                  }
1480                  matchers.push(matcher);
1481                }
1482              }
1483              return elementMatcher(matchers);
1484            }
1485            function matcherFromGroupMatchers(elementMatchers, setMatchers) {
1486              var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, outermost) {
1487                var elem, j, matcher, matchedCount = 0, i2 = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find["TAG"]("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
1488                if (outermost) {
1489                  outermostContext = context == document2 || context || outermost;
1490                }
1491                for (; i2 !== len && (elem = elems[i2]) != null; i2++) {
1492                  if (byElement && elem) {
1493                    j = 0;
1494                    if (!context && elem.ownerDocument != document2) {
1495                      setDocument(elem);
1496                      xml = !documentIsHTML;
1497                    }
1498                    while (matcher = elementMatchers[j++]) {
1499                      if (matcher(elem, context || document2, xml)) {
1500                        results.push(elem);
1501                        break;
1502                      }
1503                    }
1504                    if (outermost) {
1505                      dirruns = dirrunsUnique;
1506                    }
1507                  }
1508                  if (bySet) {
1509                    if (elem = !matcher && elem) {
1510                      matchedCount--;
1511                    }
1512                    if (seed) {
1513                      unmatched.push(elem);
1514                    }
1515                  }
1516                }
1517                matchedCount += i2;
1518                if (bySet && i2 !== matchedCount) {
1519                  j = 0;
1520                  while (matcher = setMatchers[j++]) {
1521                    matcher(unmatched, setMatched, context, xml);
1522                  }
1523                  if (seed) {
1524                    if (matchedCount > 0) {
1525                      while (i2--) {
1526                        if (!(unmatched[i2] || setMatched[i2])) {
1527                          setMatched[i2] = pop.call(results);
1528                        }
1529                      }
1530                    }
1531                    setMatched = condense(setMatched);
1532                  }
1533                  push2.apply(results, setMatched);
1534                  if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
1535                    Sizzle2.uniqueSort(results);
1536                  }
1537                }
1538                if (outermost) {
1539                  dirruns = dirrunsUnique;
1540                  outermostContext = contextBackup;
1541                }
1542                return unmatched;
1543              };
1544              return bySet ? markFunction(superMatcher) : superMatcher;
1545            }
1546            compile = Sizzle2.compile = function(selector, match) {
1547              var i2, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "];
1548              if (!cached) {
1549                if (!match) {
1550                  match = tokenize(selector);
1551                }
1552                i2 = match.length;
1553                while (i2--) {
1554                  cached = matcherFromTokens(match[i2]);
1555                  if (cached[expando]) {
1556                    setMatchers.push(cached);
1557                  } else {
1558                    elementMatchers.push(cached);
1559                  }
1560                }
1561                cached = compilerCache(
1562                  selector,
1563                  matcherFromGroupMatchers(elementMatchers, setMatchers)
1564                );
1565                cached.selector = selector;
1566              }
1567              return cached;
1568            };
1569            select = Sizzle2.select = function(selector, context, results, seed) {
1570              var i2, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize(selector = compiled.selector || selector);
1571              results = results || [];
1572              if (match.length === 1) {
1573                tokens = match[0] = match[0].slice(0);
1574                if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
1575                  context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0];
1576                  if (!context) {
1577                    return results;
1578                  } else if (compiled) {
1579                    context = context.parentNode;
1580                  }
1581                  selector = selector.slice(tokens.shift().value.length);
1582                }
1583                i2 = matchExpr["needsContext"].test(selector) ? 0 : tokens.length;
1584                while (i2--) {
1585                  token = tokens[i2];
1586                  if (Expr.relative[type = token.type]) {
1587                    break;
1588                  }
1589                  if (find = Expr.find[type]) {
1590                    if (seed = find(
1591                      token.matches[0].replace(runescape, funescape),
1592                      rsibling.test(tokens[0].type) && testContext(context.parentNode) || context
1593                    )) {
1594                      tokens.splice(i2, 1);
1595                      selector = seed.length && toSelector(tokens);
1596                      if (!selector) {
1597                        push2.apply(results, seed);
1598                        return results;
1599                      }
1600                      break;
1601                    }
1602                  }
1603                }
1604              }
1605              (compiled || compile(selector, match))(
1606                seed,
1607                context,
1608                !documentIsHTML,
1609                results,
1610                !context || rsibling.test(selector) && testContext(context.parentNode) || context
1611              );
1612              return results;
1613            };
1614            support2.sortStable = expando.split("").sort(sortOrder).join("") === expando;
1615            support2.detectDuplicates = !!hasDuplicate;
1616            setDocument();
1617            support2.sortDetached = assert(function(el) {
1618              return el.compareDocumentPosition(document2.createElement("fieldset")) & 1;
1619            });
1620            if (!assert(function(el) {
1621              el.innerHTML = "<a href='#'></a>";
1622              return el.firstChild.getAttribute("href") === "#";
1623            })) {
1624              addHandle("type|href|height|width", function(elem, name, isXML2) {
1625                if (!isXML2) {
1626                  return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2);
1627                }
1628              });
1629            }
1630            if (!support2.attributes || !assert(function(el) {
1631              el.innerHTML = "<input/>";
1632              el.firstChild.setAttribute("value", "");
1633              return el.firstChild.getAttribute("value") === "";
1634            })) {
1635              addHandle("value", function(elem, _name, isXML2) {
1636                if (!isXML2 && elem.nodeName.toLowerCase() === "input") {
1637                  return elem.defaultValue;
1638                }
1639              });
1640            }
1641            if (!assert(function(el) {
1642              return el.getAttribute("disabled") == null;
1643            })) {
1644              addHandle(booleans, function(elem, name, isXML2) {
1645                var val;
1646                if (!isXML2) {
1647                  return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
1648                }
1649              });
1650            }
1651            return Sizzle2;
1652          }(window2)
1653        );
1654        jQuery.find = Sizzle;
1655        jQuery.expr = Sizzle.selectors;
1656        jQuery.expr[":"] = jQuery.expr.pseudos;
1657        jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
1658        jQuery.text = Sizzle.getText;
1659        jQuery.isXMLDoc = Sizzle.isXML;
1660        jQuery.contains = Sizzle.contains;
1661        jQuery.escapeSelector = Sizzle.escape;
1662        var dir = function(elem, dir2, until) {
1663          var matched = [], truncate = until !== void 0;
1664          while ((elem = elem[dir2]) && elem.nodeType !== 9) {
1665            if (elem.nodeType === 1) {
1666              if (truncate && jQuery(elem).is(until)) {
1667                break;
1668              }
1669              matched.push(elem);
1670            }
1671          }
1672          return matched;
1673        };
1674        var siblings = function(n, elem) {
1675          var matched = [];
1676          for (; n; n = n.nextSibling) {
1677            if (n.nodeType === 1 && n !== elem) {
1678              matched.push(n);
1679            }
1680          }
1681          return matched;
1682        };
1683        var rneedsContext = jQuery.expr.match.needsContext;
1684        function nodeName(elem, name) {
1685          return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
1686        }
1687        ;
1688        var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
1689        function winnow(elements, qualifier, not) {
1690          if (isFunction(qualifier)) {
1691            return jQuery.grep(elements, function(elem, i) {
1692              return !!qualifier.call(elem, i, elem) !== not;
1693            });
1694          }
1695          if (qualifier.nodeType) {
1696            return jQuery.grep(elements, function(elem) {
1697              return elem === qualifier !== not;
1698            });
1699          }
1700          if (typeof qualifier !== "string") {
1701            return jQuery.grep(elements, function(elem) {
1702              return indexOf.call(qualifier, elem) > -1 !== not;
1703            });
1704          }
1705          return jQuery.filter(qualifier, elements, not);
1706        }
1707        jQuery.filter = function(expr, elems, not) {
1708          var elem = elems[0];
1709          if (not) {
1710            expr = ":not(" + expr + ")";
1711          }
1712          if (elems.length === 1 && elem.nodeType === 1) {
1713            return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];
1714          }
1715          return jQuery.find.matches(expr, jQuery.grep(elems, function(elem2) {
1716            return elem2.nodeType === 1;
1717          }));
1718        };
1719        jQuery.fn.extend({
1720          find: function(selector) {
1721            var i, ret, len = this.length, self2 = this;
1722            if (typeof selector !== "string") {
1723              return this.pushStack(jQuery(selector).filter(function() {
1724                for (i = 0; i < len; i++) {
1725                  if (jQuery.contains(self2[i], this)) {
1726                    return true;
1727                  }
1728                }
1729              }));
1730            }
1731            ret = this.pushStack([]);
1732            for (i = 0; i < len; i++) {
1733              jQuery.find(selector, self2[i], ret);
1734            }
1735            return len > 1 ? jQuery.uniqueSort(ret) : ret;
1736          },
1737          filter: function(selector) {
1738            return this.pushStack(winnow(this, selector || [], false));
1739          },
1740          not: function(selector) {
1741            return this.pushStack(winnow(this, selector || [], true));
1742          },
1743          is: function(selector) {
1744            return !!winnow(
1745              this,
1746              // If this is a positional/relative selector, check membership in the returned set
1747              // so $("p:first").is("p:last") won't return true for a doc with two "p".
1748              typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [],
1749              false
1750            ).length;
1751          }
1752        });
1753        var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery.fn.init = function(selector, context, root) {
1754          var match, elem;
1755          if (!selector) {
1756            return this;
1757          }
1758          root = root || rootjQuery;
1759          if (typeof selector === "string") {
1760            if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
1761              match = [null, selector, null];
1762            } else {
1763              match = rquickExpr.exec(selector);
1764            }
1765            if (match && (match[1] || !context)) {
1766              if (match[1]) {
1767                context = context instanceof jQuery ? context[0] : context;
1768                jQuery.merge(this, jQuery.parseHTML(
1769                  match[1],
1770                  context && context.nodeType ? context.ownerDocument || context : document,
1771                  true
1772                ));
1773                if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
1774                  for (match in context) {
1775                    if (isFunction(this[match])) {
1776                      this[match](context[match]);
1777                    } else {
1778                      this.attr(match, context[match]);
1779                    }
1780                  }
1781                }
1782                return this;
1783              } else {
1784                elem = document.getElementById(match[2]);
1785                if (elem) {
1786                  this[0] = elem;
1787                  this.length = 1;
1788                }
1789                return this;
1790              }
1791            } else if (!context || context.jquery) {
1792              return (context || root).find(selector);
1793            } else {
1794              return this.constructor(context).find(selector);
1795            }
1796          } else if (selector.nodeType) {
1797            this[0] = selector;
1798            this.length = 1;
1799            return this;
1800          } else if (isFunction(selector)) {
1801            return root.ready !== void 0 ? root.ready(selector) : (
1802              // Execute immediately if ready is not present
1803              selector(jQuery)
1804            );
1805          }
1806          return jQuery.makeArray(selector, this);
1807        };
1808        init.prototype = jQuery.fn;
1809        rootjQuery = jQuery(document);
1810        var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = {
1811          children: true,
1812          contents: true,
1813          next: true,
1814          prev: true
1815        };
1816        jQuery.fn.extend({
1817          has: function(target) {
1818            var targets = jQuery(target, this), l = targets.length;
1819            return this.filter(function() {
1820              var i = 0;
1821              for (; i < l; i++) {
1822                if (jQuery.contains(this, targets[i])) {
1823                  return true;
1824                }
1825              }
1826            });
1827          },
1828          closest: function(selectors, context) {
1829            var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery(selectors);
1830            if (!rneedsContext.test(selectors)) {
1831              for (; i < l; i++) {
1832                for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
1833                  if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : (
1834                    // Don't pass non-elements to Sizzle
1835                    cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors)
1836                  ))) {
1837                    matched.push(cur);
1838                    break;
1839                  }
1840                }
1841              }
1842            }
1843            return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);
1844          },
1845          // Determine the position of an element within the set
1846          index: function(elem) {
1847            if (!elem) {
1848              return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
1849            }
1850            if (typeof elem === "string") {
1851              return indexOf.call(jQuery(elem), this[0]);
1852            }
1853            return indexOf.call(
1854              this,
1855              // If it receives a jQuery object, the first element is used
1856              elem.jquery ? elem[0] : elem
1857            );
1858          },
1859          add: function(selector, context) {
1860            return this.pushStack(
1861              jQuery.uniqueSort(
1862                jQuery.merge(this.get(), jQuery(selector, context))
1863              )
1864            );
1865          },
1866          addBack: function(selector) {
1867            return this.add(
1868              selector == null ? this.prevObject : this.prevObject.filter(selector)
1869            );
1870          }
1871        });
1872        function sibling(cur, dir2) {
1873          while ((cur = cur[dir2]) && cur.nodeType !== 1) {
1874          }
1875          return cur;
1876        }
1877        jQuery.each({
1878          parent: function(elem) {
1879            var parent = elem.parentNode;
1880            return parent && parent.nodeType !== 11 ? parent : null;
1881          },
1882          parents: function(elem) {
1883            return dir(elem, "parentNode");
1884          },
1885          parentsUntil: function(elem, _i, until) {
1886            return dir(elem, "parentNode", until);
1887          },
1888          next: function(elem) {
1889            return sibling(elem, "nextSibling");
1890          },
1891          prev: function(elem) {
1892            return sibling(elem, "previousSibling");
1893          },
1894          nextAll: function(elem) {
1895            return dir(elem, "nextSibling");
1896          },
1897          prevAll: function(elem) {
1898            return dir(elem, "previousSibling");
1899          },
1900          nextUntil: function(elem, _i, until) {
1901            return dir(elem, "nextSibling", until);
1902          },
1903          prevUntil: function(elem, _i, until) {
1904            return dir(elem, "previousSibling", until);
1905          },
1906          siblings: function(elem) {
1907            return siblings((elem.parentNode || {}).firstChild, elem);
1908          },
1909          children: function(elem) {
1910            return siblings(elem.firstChild);
1911          },
1912          contents: function(elem) {
1913            if (elem.contentDocument != null && // Support: IE 11+
1914            // <object> elements with no `data` attribute has an object
1915            // `contentDocument` with a `null` prototype.
1916            getProto(elem.contentDocument)) {
1917              return elem.contentDocument;
1918            }
1919            if (nodeName(elem, "template")) {
1920              elem = elem.content || elem;
1921            }
1922            return jQuery.merge([], elem.childNodes);
1923          }
1924        }, function(name, fn) {
1925          jQuery.fn[name] = function(until, selector) {
1926            var matched = jQuery.map(this, fn, until);
1927            if (name.slice(-5) !== "Until") {
1928              selector = until;
1929            }
1930            if (selector && typeof selector === "string") {
1931              matched = jQuery.filter(selector, matched);
1932            }
1933            if (this.length > 1) {
1934              if (!guaranteedUnique[name]) {
1935                jQuery.uniqueSort(matched);
1936              }
1937              if (rparentsprev.test(name)) {
1938                matched.reverse();
1939              }
1940            }
1941            return this.pushStack(matched);
1942          };
1943        });
1944        var rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
1945        function createOptions(options) {
1946          var object = {};
1947          jQuery.each(options.match(rnothtmlwhite) || [], function(_, flag) {
1948            object[flag] = true;
1949          });
1950          return object;
1951        }
1952        jQuery.Callbacks = function(options) {
1953          options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options);
1954          var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() {
1955            locked = locked || options.once;
1956            fired = firing = true;
1957            for (; queue.length; firingIndex = -1) {
1958              memory = queue.shift();
1959              while (++firingIndex < list.length) {
1960                if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
1961                  firingIndex = list.length;
1962                  memory = false;
1963                }
1964              }
1965            }
1966            if (!options.memory) {
1967              memory = false;
1968            }
1969            firing = false;
1970            if (locked) {
1971              if (memory) {
1972                list = [];
1973              } else {
1974                list = "";
1975              }
1976            }
1977          }, self2 = {
1978            // Add a callback or a collection of callbacks to the list
1979            add: function() {
1980              if (list) {
1981                if (memory && !firing) {
1982                  firingIndex = list.length - 1;
1983                  queue.push(memory);
1984                }
1985                (function add(args) {
1986                  jQuery.each(args, function(_, arg) {
1987                    if (isFunction(arg)) {
1988                      if (!options.unique || !self2.has(arg)) {
1989                        list.push(arg);
1990                      }
1991                    } else if (arg && arg.length && toType(arg) !== "string") {
1992                      add(arg);
1993                    }
1994                  });
1995                })(arguments);
1996                if (memory && !firing) {
1997                  fire();
1998                }
1999              }
2000              return this;
2001            },
2002            // Remove a callback from the list
2003            remove: function() {
2004              jQuery.each(arguments, function(_, arg) {
2005                var index;
2006                while ((index = jQuery.inArray(arg, list, index)) > -1) {
2007                  list.splice(index, 1);
2008                  if (index <= firingIndex) {
2009                    firingIndex--;
2010                  }
2011                }
2012              });
2013              return this;
2014            },
2015            // Check if a given callback is in the list.
2016            // If no argument is given, return whether or not list has callbacks attached.
2017            has: function(fn) {
2018              return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;
2019            },
2020            // Remove all callbacks from the list
2021            empty: function() {
2022              if (list) {
2023                list = [];
2024              }
2025              return this;
2026            },
2027            // Disable .fire and .add
2028            // Abort any current/pending executions
2029            // Clear all callbacks and values
2030            disable: function() {
2031              locked = queue = [];
2032              list = memory = "";
2033              return this;
2034            },
2035            disabled: function() {
2036              return !list;
2037            },
2038            // Disable .fire
2039            // Also disable .add unless we have memory (since it would have no effect)
2040            // Abort any pending executions
2041            lock: function() {
2042              locked = queue = [];
2043              if (!memory && !firing) {
2044                list = memory = "";
2045              }
2046              return this;
2047            },
2048            locked: function() {
2049              return !!locked;
2050            },
2051            // Call all callbacks with the given context and arguments
2052            fireWith: function(context, args) {
2053              if (!locked) {
2054                args = args || [];
2055                args = [context, args.slice ? args.slice() : args];
2056                queue.push(args);
2057                if (!firing) {
2058                  fire();
2059                }
2060              }
2061              return this;
2062            },
2063            // Call all the callbacks with the given arguments
2064            fire: function() {
2065              self2.fireWith(this, arguments);
2066              return this;
2067            },
2068            // To know if the callbacks have already been called at least once
2069            fired: function() {
2070              return !!fired;
2071            }
2072          };
2073          return self2;
2074        };
2075        function Identity(v) {
2076          return v;
2077        }
2078        function Thrower(ex) {
2079          throw ex;
2080        }
2081        function adoptValue(value, resolve, reject, noValue) {
2082          var method;
2083          try {
2084            if (value && isFunction(method = value.promise)) {
2085              method.call(value).done(resolve).fail(reject);
2086            } else if (value && isFunction(method = value.then)) {
2087              method.call(value, resolve, reject);
2088            } else {
2089              resolve.apply(void 0, [value].slice(noValue));
2090            }
2091          } catch (value2) {
2092            reject.apply(void 0, [value2]);
2093          }
2094        }
2095        jQuery.extend({
2096          Deferred: function(func) {
2097            var tuples = [
2098              // action, add listener, callbacks,
2099              // ... .then handlers, argument index, [final state]
2100              [
2101                "notify",
2102                "progress",
2103                jQuery.Callbacks("memory"),
2104                jQuery.Callbacks("memory"),
2105                2
2106              ],
2107              [
2108                "resolve",
2109                "done",
2110                jQuery.Callbacks("once memory"),
2111                jQuery.Callbacks("once memory"),
2112                0,
2113                "resolved"
2114              ],
2115              [
2116                "reject",
2117                "fail",
2118                jQuery.Callbacks("once memory"),
2119                jQuery.Callbacks("once memory"),
2120                1,
2121                "rejected"
2122              ]
2123            ], state = "pending", promise = {
2124              state: function() {
2125                return state;
2126              },
2127              always: function() {
2128                deferred.done(arguments).fail(arguments);
2129                return this;
2130              },
2131              "catch": function(fn) {
2132                return promise.then(null, fn);
2133              },
2134              // Keep pipe for back-compat
2135              pipe: function() {
2136                var fns = arguments;
2137                return jQuery.Deferred(function(newDefer) {
2138                  jQuery.each(tuples, function(_i, tuple) {
2139                    var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];
2140                    deferred[tuple[1]](function() {
2141                      var returned = fn && fn.apply(this, arguments);
2142                      if (returned && isFunction(returned.promise)) {
2143                        returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
2144                      } else {
2145                        newDefer[tuple[0] + "With"](
2146                          this,
2147                          fn ? [returned] : arguments
2148                        );
2149                      }
2150                    });
2151                  });
2152                  fns = null;
2153                }).promise();
2154              },
2155              then: function(onFulfilled, onRejected, onProgress) {
2156                var maxDepth = 0;
2157                function resolve(depth, deferred2, handler, special) {
2158                  return function() {
2159                    var that = this, args = arguments, mightThrow = function() {
2160                      var returned, then;
2161                      if (depth < maxDepth) {
2162                        return;
2163                      }
2164                      returned = handler.apply(that, args);
2165                      if (returned === deferred2.promise()) {
2166                        throw new TypeError("Thenable self-resolution");
2167                      }
2168                      then = returned && // Support: Promises/A+ section 2.3.4
2169                      // https://promisesaplus.com/#point-64
2170                      // Only check objects and functions for thenability
2171                      (typeof returned === "object" || typeof returned === "function") && returned.then;
2172                      if (isFunction(then)) {
2173                        if (special) {
2174                          then.call(
2175                            returned,
2176                            resolve(maxDepth, deferred2, Identity, special),
2177                            resolve(maxDepth, deferred2, Thrower, special)
2178                          );
2179                        } else {
2180                          maxDepth++;
2181                          then.call(
2182                            returned,
2183                            resolve(maxDepth, deferred2, Identity, special),
2184                            resolve(maxDepth, deferred2, Thrower, special),
2185                            resolve(
2186                              maxDepth,
2187                              deferred2,
2188                              Identity,
2189                              deferred2.notifyWith
2190                            )
2191                          );
2192                        }
2193                      } else {
2194                        if (handler !== Identity) {
2195                          that = void 0;
2196                          args = [returned];
2197                        }
2198                        (special || deferred2.resolveWith)(that, args);
2199                      }
2200                    }, process = special ? mightThrow : function() {
2201                      try {
2202                        mightThrow();
2203                      } catch (e) {
2204                        if (jQuery.Deferred.exceptionHook) {
2205                          jQuery.Deferred.exceptionHook(
2206                            e,
2207                            process.stackTrace
2208                          );
2209                        }
2210                        if (depth + 1 >= maxDepth) {
2211                          if (handler !== Thrower) {
2212                            that = void 0;
2213                            args = [e];
2214                          }
2215                          deferred2.rejectWith(that, args);
2216                        }
2217                      }
2218                    };
2219                    if (depth) {
2220                      process();
2221                    } else {
2222                      if (jQuery.Deferred.getStackHook) {
2223                        process.stackTrace = jQuery.Deferred.getStackHook();
2224                      }
2225                      window2.setTimeout(process);
2226                    }
2227                  };
2228                }
2229                return jQuery.Deferred(function(newDefer) {
2230                  tuples[0][3].add(
2231                    resolve(
2232                      0,
2233                      newDefer,
2234                      isFunction(onProgress) ? onProgress : Identity,
2235                      newDefer.notifyWith
2236                    )
2237                  );
2238                  tuples[1][3].add(
2239                    resolve(
2240                      0,
2241                      newDefer,
2242                      isFunction(onFulfilled) ? onFulfilled : Identity
2243                    )
2244                  );
2245                  tuples[2][3].add(
2246                    resolve(
2247                      0,
2248                      newDefer,
2249                      isFunction(onRejected) ? onRejected : Thrower
2250                    )
2251                  );
2252                }).promise();
2253              },
2254              // Get a promise for this deferred
2255              // If obj is provided, the promise aspect is added to the object
2256              promise: function(obj) {
2257                return obj != null ? jQuery.extend(obj, promise) : promise;
2258              }
2259            }, deferred = {};
2260            jQuery.each(tuples, function(i, tuple) {
2261              var list = tuple[2], stateString = tuple[5];
2262              promise[tuple[1]] = list.add;
2263              if (stateString) {
2264                list.add(
2265                  function() {
2266                    state = stateString;
2267                  },
2268                  // rejected_callbacks.disable
2269                  // fulfilled_callbacks.disable
2270                  tuples[3 - i][2].disable,
2271                  // rejected_handlers.disable
2272                  // fulfilled_handlers.disable
2273                  tuples[3 - i][3].disable,
2274                  // progress_callbacks.lock
2275                  tuples[0][2].lock,
2276                  // progress_handlers.lock
2277                  tuples[0][3].lock
2278                );
2279              }
2280              list.add(tuple[3].fire);
2281              deferred[tuple[0]] = function() {
2282                deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments);
2283                return this;
2284              };
2285              deferred[tuple[0] + "With"] = list.fireWith;
2286            });
2287            promise.promise(deferred);
2288            if (func) {
2289              func.call(deferred, deferred);
2290            }
2291            return deferred;
2292          },
2293          // Deferred helper
2294          when: function(singleValue) {
2295            var remaining = arguments.length, i = remaining, resolveContexts = Array(i), resolveValues = slice.call(arguments), master = jQuery.Deferred(), updateFunc = function(i2) {
2296              return function(value) {
2297                resolveContexts[i2] = this;
2298                resolveValues[i2] = arguments.length > 1 ? slice.call(arguments) : value;
2299                if (!--remaining) {
2300                  master.resolveWith(resolveContexts, resolveValues);
2301                }
2302              };
2303            };
2304            if (remaining <= 1) {
2305              adoptValue(
2306                singleValue,
2307                master.done(updateFunc(i)).resolve,
2308                master.reject,
2309                !remaining
2310              );
2311              if (master.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) {
2312                return master.then();
2313              }
2314            }
2315            while (i--) {
2316              adoptValue(resolveValues[i], updateFunc(i), master.reject);
2317            }
2318            return master.promise();
2319          }
2320        });
2321        var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
2322        jQuery.Deferred.exceptionHook = function(error, stack) {
2323          if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) {
2324            window2.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack);
2325          }
2326        };
2327        jQuery.readyException = function(error) {
2328          window2.setTimeout(function() {
2329            throw error;
2330          });
2331        };
2332        var readyList = jQuery.Deferred();
2333        jQuery.fn.ready = function(fn) {
2334          readyList.then(fn).catch(function(error) {
2335            jQuery.readyException(error);
2336          });
2337          return this;
2338        };
2339        jQuery.extend({
2340          // Is the DOM ready to be used? Set to true once it occurs.
2341          isReady: false,
2342          // A counter to track how many items to wait for before
2343          // the ready event fires. See #6781
2344          readyWait: 1,
2345          // Handle when the DOM is ready
2346          ready: function(wait) {
2347            if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
2348              return;
2349            }
2350            jQuery.isReady = true;
2351            if (wait !== true && --jQuery.readyWait > 0) {
2352              return;
2353            }
2354            readyList.resolveWith(document, [jQuery]);
2355          }
2356        });
2357        jQuery.ready.then = readyList.then;
2358        function completed() {
2359          document.removeEventListener("DOMContentLoaded", completed);
2360          window2.removeEventListener("load", completed);
2361          jQuery.ready();
2362        }
2363        if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) {
2364          window2.setTimeout(jQuery.ready);
2365        } else {
2366          document.addEventListener("DOMContentLoaded", completed);
2367          window2.addEventListener("load", completed);
2368        }
2369        var access = function(elems, fn, key, value, chainable, emptyGet, raw) {
2370          var i = 0, len = elems.length, bulk = key == null;
2371          if (toType(key) === "object") {
2372            chainable = true;
2373            for (i in key) {
2374              access(elems, fn, i, key[i], true, emptyGet, raw);
2375            }
2376          } else if (value !== void 0) {
2377            chainable = true;
2378            if (!isFunction(value)) {
2379              raw = true;
2380            }
2381            if (bulk) {
2382              if (raw) {
2383                fn.call(elems, value);
2384                fn = null;
2385              } else {
2386                bulk = fn;
2387                fn = function(elem, _key, value2) {
2388                  return bulk.call(jQuery(elem), value2);
2389                };
2390              }
2391            }
2392            if (fn) {
2393              for (; i < len; i++) {
2394                fn(
2395                  elems[i],
2396                  key,
2397                  raw ? value : value.call(elems[i], i, fn(elems[i], key))
2398                );
2399              }
2400            }
2401          }
2402          if (chainable) {
2403            return elems;
2404          }
2405          if (bulk) {
2406            return fn.call(elems);
2407          }
2408          return len ? fn(elems[0], key) : emptyGet;
2409        };
2410        var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g;
2411        function fcamelCase(_all, letter) {
2412          return letter.toUpperCase();
2413        }
2414        function camelCase(string) {
2415          return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
2416        }
2417        var acceptData = function(owner) {
2418          return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
2419        };
2420        function Data() {
2421          this.expando = jQuery.expando + Data.uid++;
2422        }
2423        Data.uid = 1;
2424        Data.prototype = {
2425          cache: function(owner) {
2426            var value = owner[this.expando];
2427            if (!value) {
2428              value = {};
2429              if (acceptData(owner)) {
2430                if (owner.nodeType) {
2431                  owner[this.expando] = value;
2432                } else {
2433                  Object.defineProperty(owner, this.expando, {
2434                    value,
2435                    configurable: true
2436                  });
2437                }
2438              }
2439            }
2440            return value;
2441          },
2442          set: function(owner, data, value) {
2443            var prop, cache = this.cache(owner);
2444            if (typeof data === "string") {
2445              cache[camelCase(data)] = value;
2446            } else {
2447              for (prop in data) {
2448                cache[camelCase(prop)] = data[prop];
2449              }
2450            }
2451            return cache;
2452          },
2453          get: function(owner, key) {
2454            return key === void 0 ? this.cache(owner) : (
2455              // Always use camelCase key (gh-2257)
2456              owner[this.expando] && owner[this.expando][camelCase(key)]
2457            );
2458          },
2459          access: function(owner, key, value) {
2460            if (key === void 0 || key && typeof key === "string" && value === void 0) {
2461              return this.get(owner, key);
2462            }
2463            this.set(owner, key, value);
2464            return value !== void 0 ? value : key;
2465          },
2466          remove: function(owner, key) {
2467            var i, cache = owner[this.expando];
2468            if (cache === void 0) {
2469              return;
2470            }
2471            if (key !== void 0) {
2472              if (Array.isArray(key)) {
2473                key = key.map(camelCase);
2474              } else {
2475                key = camelCase(key);
2476                key = key in cache ? [key] : key.match(rnothtmlwhite) || [];
2477              }
2478              i = key.length;
2479              while (i--) {
2480                delete cache[key[i]];
2481              }
2482            }
2483            if (key === void 0 || jQuery.isEmptyObject(cache)) {
2484              if (owner.nodeType) {
2485                owner[this.expando] = void 0;
2486              } else {
2487                delete owner[this.expando];
2488              }
2489            }
2490          },
2491          hasData: function(owner) {
2492            var cache = owner[this.expando];
2493            return cache !== void 0 && !jQuery.isEmptyObject(cache);
2494          }
2495        };
2496        var dataPriv = new Data();
2497        var dataUser = new Data();
2498        var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g;
2499        function getData(data) {
2500          if (data === "true") {
2501            return true;
2502          }
2503          if (data === "false") {
2504            return false;
2505          }
2506          if (data === "null") {
2507            return null;
2508          }
2509          if (data === +data + "") {
2510            return +data;
2511          }
2512          if (rbrace.test(data)) {
2513            return JSON.parse(data);
2514          }
2515          return data;
2516        }
2517        function dataAttr(elem, key, data) {
2518          var name;
2519          if (data === void 0 && elem.nodeType === 1) {
2520            name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
2521            data = elem.getAttribute(name);
2522            if (typeof data === "string") {
2523              try {
2524                data = getData(data);
2525              } catch (e) {
2526              }
2527              dataUser.set(elem, key, data);
2528            } else {
2529              data = void 0;
2530            }
2531          }
2532          return data;
2533        }
2534        jQuery.extend({
2535          hasData: function(elem) {
2536            return dataUser.hasData(elem) || dataPriv.hasData(elem);
2537          },
2538          data: function(elem, name, data) {
2539            return dataUser.access(elem, name, data);
2540          },
2541          removeData: function(elem, name) {
2542            dataUser.remove(elem, name);
2543          },
2544          // TODO: Now that all calls to _data and _removeData have been replaced
2545          // with direct calls to dataPriv methods, these can be deprecated.
2546          _data: function(elem, name, data) {
2547            return dataPriv.access(elem, name, data);
2548          },
2549          _removeData: function(elem, name) {
2550            dataPriv.remove(elem, name);
2551          }
2552        });
2553        jQuery.fn.extend({
2554          data: function(key, value) {
2555            var i, name, data, elem = this[0], attrs = elem && elem.attributes;
2556            if (key === void 0) {
2557              if (this.length) {
2558                data = dataUser.get(elem);
2559                if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
2560                  i = attrs.length;
2561                  while (i--) {
2562                    if (attrs[i]) {
2563                      name = attrs[i].name;
2564                      if (name.indexOf("data-") === 0) {
2565                        name = camelCase(name.slice(5));
2566                        dataAttr(elem, name, data[name]);
2567                      }
2568                    }
2569                  }
2570                  dataPriv.set(elem, "hasDataAttrs", true);
2571                }
2572              }
2573              return data;
2574            }
2575            if (typeof key === "object") {
2576              return this.each(function() {
2577                dataUser.set(this, key);
2578              });
2579            }
2580            return access(this, function(value2) {
2581              var data2;
2582              if (elem && value2 === void 0) {
2583                data2 = dataUser.get(elem, key);
2584                if (data2 !== void 0) {
2585                  return data2;
2586                }
2587                data2 = dataAttr(elem, key);
2588                if (data2 !== void 0) {
2589                  return data2;
2590                }
2591                return;
2592              }
2593              this.each(function() {
2594                dataUser.set(this, key, value2);
2595              });
2596            }, null, value, arguments.length > 1, null, true);
2597          },
2598          removeData: function(key) {
2599            return this.each(function() {
2600              dataUser.remove(this, key);
2601            });
2602          }
2603        });
2604        jQuery.extend({
2605          queue: function(elem, type, data) {
2606            var queue;
2607            if (elem) {
2608              type = (type || "fx") + "queue";
2609              queue = dataPriv.get(elem, type);
2610              if (data) {
2611                if (!queue || Array.isArray(data)) {
2612                  queue = dataPriv.access(elem, type, jQuery.makeArray(data));
2613                } else {
2614                  queue.push(data);
2615                }
2616              }
2617              return queue || [];
2618            }
2619          },
2620          dequeue: function(elem, type) {
2621            type = type || "fx";
2622            var queue = jQuery.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks(elem, type), next = function() {
2623              jQuery.dequeue(elem, type);
2624            };
2625            if (fn === "inprogress") {
2626              fn = queue.shift();
2627              startLength--;
2628            }
2629            if (fn) {
2630              if (type === "fx") {
2631                queue.unshift("inprogress");
2632              }
2633              delete hooks.stop;
2634              fn.call(elem, next, hooks);
2635            }
2636            if (!startLength && hooks) {
2637              hooks.empty.fire();
2638            }
2639          },
2640          // Not public - generate a queueHooks object, or return the current one
2641          _queueHooks: function(elem, type) {
2642            var key = type + "queueHooks";
2643            return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
2644              empty: jQuery.Callbacks("once memory").add(function() {
2645                dataPriv.remove(elem, [type + "queue", key]);
2646              })
2647            });
2648          }
2649        });
2650        jQuery.fn.extend({
2651          queue: function(type, data) {
2652            var setter = 2;
2653            if (typeof type !== "string") {
2654              data = type;
2655              type = "fx";
2656              setter--;
2657            }
2658            if (arguments.length < setter) {
2659              return jQuery.queue(this[0], type);
2660            }
2661            return data === void 0 ? this : this.each(function() {
2662              var queue = jQuery.queue(this, type, data);
2663              jQuery._queueHooks(this, type);
2664              if (type === "fx" && queue[0] !== "inprogress") {
2665                jQuery.dequeue(this, type);
2666              }
2667            });
2668          },
2669          dequeue: function(type) {
2670            return this.each(function() {
2671              jQuery.dequeue(this, type);
2672            });
2673          },
2674          clearQueue: function(type) {
2675            return this.queue(type || "fx", []);
2676          },
2677          // Get a promise resolved when queues of a certain type
2678          // are emptied (fx is the type by default)
2679          promise: function(type, obj) {
2680            var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() {
2681              if (!--count) {
2682                defer.resolveWith(elements, [elements]);
2683              }
2684            };
2685            if (typeof type !== "string") {
2686              obj = type;
2687              type = void 0;
2688            }
2689            type = type || "fx";
2690            while (i--) {
2691              tmp = dataPriv.get(elements[i], type + "queueHooks");
2692              if (tmp && tmp.empty) {
2693                count++;
2694                tmp.empty.add(resolve);
2695              }
2696            }
2697            resolve();
2698            return defer.promise(obj);
2699          }
2700        });
2701        var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
2702        var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
2703        var cssExpand = ["Top", "Right", "Bottom", "Left"];
2704        var documentElement = document.documentElement;
2705        var isAttached = function(elem) {
2706          return jQuery.contains(elem.ownerDocument, elem);
2707        }, composed = { composed: true };
2708        if (documentElement.getRootNode) {
2709          isAttached = function(elem) {
2710            return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
2711          };
2712        }
2713        var isHiddenWithinTree = function(elem, el) {
2714          elem = el || elem;
2715          return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style
2716          // Support: Firefox <=43 - 45
2717          // Disconnected elements can have computed display: none, so first confirm that elem is
2718          // in the document.
2719          isAttached(elem) && jQuery.css(elem, "display") === "none";
2720        };
2721        function adjustCSS(elem, prop, valueParts, tween) {
2722          var adjusted, scale, maxIterations = 20, currentValue = tween ? function() {
2723            return tween.cur();
2724          } : function() {
2725            return jQuery.css(elem, prop, "");
2726          }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop));
2727          if (initialInUnit && initialInUnit[3] !== unit) {
2728            initial = initial / 2;
2729            unit = unit || initialInUnit[3];
2730            initialInUnit = +initial || 1;
2731            while (maxIterations--) {
2732              jQuery.style(elem, prop, initialInUnit + unit);
2733              if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
2734                maxIterations = 0;
2735              }
2736              initialInUnit = initialInUnit / scale;
2737            }
2738            initialInUnit = initialInUnit * 2;
2739            jQuery.style(elem, prop, initialInUnit + unit);
2740            valueParts = valueParts || [];
2741          }
2742          if (valueParts) {
2743            initialInUnit = +initialInUnit || +initial || 0;
2744            adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
2745            if (tween) {
2746              tween.unit = unit;
2747              tween.start = initialInUnit;
2748              tween.end = adjusted;
2749            }
2750          }
2751          return adjusted;
2752        }
2753        var defaultDisplayMap = {};
2754        function getDefaultDisplay(elem) {
2755          var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2];
2756          if (display) {
2757            return display;
2758          }
2759          temp = doc.body.appendChild(doc.createElement(nodeName2));
2760          display = jQuery.css(temp, "display");
2761          temp.parentNode.removeChild(temp);
2762          if (display === "none") {
2763            display = "block";
2764          }
2765          defaultDisplayMap[nodeName2] = display;
2766          return display;
2767        }
2768        function showHide(elements, show) {
2769          var display, elem, values = [], index = 0, length = elements.length;
2770          for (; index < length; index++) {
2771            elem = elements[index];
2772            if (!elem.style) {
2773              continue;
2774            }
2775            display = elem.style.display;
2776            if (show) {
2777              if (display === "none") {
2778                values[index] = dataPriv.get(elem, "display") || null;
2779                if (!values[index]) {
2780                  elem.style.display = "";
2781                }
2782              }
2783              if (elem.style.display === "" && isHiddenWithinTree(elem)) {
2784                values[index] = getDefaultDisplay(elem);
2785              }
2786            } else {
2787              if (display !== "none") {
2788                values[index] = "none";
2789                dataPriv.set(elem, "display", display);
2790              }
2791            }
2792          }
2793          for (index = 0; index < length; index++) {
2794            if (values[index] != null) {
2795              elements[index].style.display = values[index];
2796            }
2797          }
2798          return elements;
2799        }
2800        jQuery.fn.extend({
2801          show: function() {
2802            return showHide(this, true);
2803          },
2804          hide: function() {
2805            return showHide(this);
2806          },
2807          toggle: function(state) {
2808            if (typeof state === "boolean") {
2809              return state ? this.show() : this.hide();
2810            }
2811            return this.each(function() {
2812              if (isHiddenWithinTree(this)) {
2813                jQuery(this).show();
2814              } else {
2815                jQuery(this).hide();
2816              }
2817            });
2818          }
2819        });
2820        var rcheckableType = /^(?:checkbox|radio)$/i;
2821        var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
2822        var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
2823        (function() {
2824          var fragment = document.createDocumentFragment(), div = fragment.appendChild(document.createElement("div")), input = document.createElement("input");
2825          input.setAttribute("type", "radio");
2826          input.setAttribute("checked", "checked");
2827          input.setAttribute("name", "t");
2828          div.appendChild(input);
2829          support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
2830          div.innerHTML = "<textarea>x</textarea>";
2831          support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
2832          div.innerHTML = "<option></option>";
2833          support.option = !!div.lastChild;
2834        })();
2835        var wrapMap = {
2836          // XHTML parsers do not magically insert elements in the
2837          // same way that tag soup parsers do. So we cannot shorten
2838          // this by omitting <tbody> or other required elements.
2839          thead: [1, "<table>", "</table>"],
2840          col: [2, "<table><colgroup>", "</colgroup></table>"],
2841          tr: [2, "<table><tbody>", "</tbody></table>"],
2842          td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2843          _default: [0, "", ""]
2844        };
2845        wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
2846        wrapMap.th = wrapMap.td;
2847        if (!support.option) {
2848          wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
2849        }
2850        function getAll(context, tag) {
2851          var ret;
2852          if (typeof context.getElementsByTagName !== "undefined") {
2853            ret = context.getElementsByTagName(tag || "*");
2854          } else if (typeof context.querySelectorAll !== "undefined") {
2855            ret = context.querySelectorAll(tag || "*");
2856          } else {
2857            ret = [];
2858          }
2859          if (tag === void 0 || tag && nodeName(context, tag)) {
2860            return jQuery.merge([context], ret);
2861          }
2862          return ret;
2863        }
2864        function setGlobalEval(elems, refElements) {
2865          var i = 0, l = elems.length;
2866          for (; i < l; i++) {
2867            dataPriv.set(
2868              elems[i],
2869              "globalEval",
2870              !refElements || dataPriv.get(refElements[i], "globalEval")
2871            );
2872          }
2873        }
2874        var rhtml = /<|&#?\w+;/;
2875        function buildFragment(elems, context, scripts, selection, ignored) {
2876          var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length;
2877          for (; i < l; i++) {
2878            elem = elems[i];
2879            if (elem || elem === 0) {
2880              if (toType(elem) === "object") {
2881                jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
2882              } else if (!rhtml.test(elem)) {
2883                nodes.push(context.createTextNode(elem));
2884              } else {
2885                tmp = tmp || fragment.appendChild(context.createElement("div"));
2886                tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
2887                wrap = wrapMap[tag] || wrapMap._default;
2888                tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];
2889                j = wrap[0];
2890                while (j--) {
2891                  tmp = tmp.lastChild;
2892                }
2893                jQuery.merge(nodes, tmp.childNodes);
2894                tmp = fragment.firstChild;
2895                tmp.textContent = "";
2896              }
2897            }
2898          }
2899          fragment.textContent = "";
2900          i = 0;
2901          while (elem = nodes[i++]) {
2902            if (selection && jQuery.inArray(elem, selection) > -1) {
2903              if (ignored) {
2904                ignored.push(elem);
2905              }
2906              continue;
2907            }
2908            attached = isAttached(elem);
2909            tmp = getAll(fragment.appendChild(elem), "script");
2910            if (attached) {
2911              setGlobalEval(tmp);
2912            }
2913            if (scripts) {
2914              j = 0;
2915              while (elem = tmp[j++]) {
2916                if (rscriptType.test(elem.type || "")) {
2917                  scripts.push(elem);
2918                }
2919              }
2920            }
2921          }
2922          return fragment;
2923        }
2924        var rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
2925        function returnTrue() {
2926          return true;
2927        }
2928        function returnFalse() {
2929          return false;
2930        }
2931        function expectSync(elem, type) {
2932          return elem === safeActiveElement() === (type === "focus");
2933        }
2934        function safeActiveElement() {
2935          try {
2936            return document.activeElement;
2937          } catch (err) {
2938          }
2939        }
2940        function on(elem, types, selector, data, fn, one) {
2941          var origFn, type;
2942          if (typeof types === "object") {
2943            if (typeof selector !== "string") {
2944              data = data || selector;
2945              selector = void 0;
2946            }
2947            for (type in types) {
2948              on(elem, type, selector, data, types[type], one);
2949            }
2950            return elem;
2951          }
2952          if (data == null && fn == null) {
2953            fn = selector;
2954            data = selector = void 0;
2955          } else if (fn == null) {
2956            if (typeof selector === "string") {
2957              fn = data;
2958              data = void 0;
2959            } else {
2960              fn = data;
2961              data = selector;
2962              selector = void 0;
2963            }
2964          }
2965          if (fn === false) {
2966            fn = returnFalse;
2967          } else if (!fn) {
2968            return elem;
2969          }
2970          if (one === 1) {
2971            origFn = fn;
2972            fn = function(event) {
2973              jQuery().off(event);
2974              return origFn.apply(this, arguments);
2975            };
2976            fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);
2977          }
2978          return elem.each(function() {
2979            jQuery.event.add(this, types, fn, data, selector);
2980          });
2981        }
2982        jQuery.event = {
2983          global: {},
2984          add: function(elem, types, handler, data, selector) {
2985            var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem);
2986            if (!acceptData(elem)) {
2987              return;
2988            }
2989            if (handler.handler) {
2990              handleObjIn = handler;
2991              handler = handleObjIn.handler;
2992              selector = handleObjIn.selector;
2993            }
2994            if (selector) {
2995              jQuery.find.matchesSelector(documentElement, selector);
2996            }
2997            if (!handler.guid) {
2998              handler.guid = jQuery.guid++;
2999            }
3000            if (!(events = elemData.events)) {
3001              events = elemData.events = /* @__PURE__ */ Object.create(null);
3002            }
3003            if (!(eventHandle = elemData.handle)) {
3004              eventHandle = elemData.handle = function(e) {
3005                return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : void 0;
3006              };
3007            }
3008            types = (types || "").match(rnothtmlwhite) || [""];
3009            t = types.length;
3010            while (t--) {
3011              tmp = rtypenamespace.exec(types[t]) || [];
3012              type = origType = tmp[1];
3013              namespaces = (tmp[2] || "").split(".").sort();
3014              if (!type) {
3015                continue;
3016              }
3017              special = jQuery.event.special[type] || {};
3018              type = (selector ? special.delegateType : special.bindType) || type;
3019              special = jQuery.event.special[type] || {};
3020              handleObj = jQuery.extend({
3021                type,
3022                origType,
3023                data,
3024                handler,
3025                guid: handler.guid,
3026                selector,
3027                needsContext: selector && jQuery.expr.match.needsContext.test(selector),
3028                namespace: namespaces.join(".")
3029              }, handleObjIn);
3030              if (!(handlers = events[type])) {
3031                handlers = events[type] = [];
3032                handlers.delegateCount = 0;
3033                if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
3034                  if (elem.addEventListener) {
3035                    elem.addEventListener(type, eventHandle);
3036                  }
3037                }
3038              }
3039              if (special.add) {
3040                special.add.call(elem, handleObj);
3041                if (!handleObj.handler.guid) {
3042                  handleObj.handler.guid = handler.guid;
3043                }
3044              }
3045              if (selector) {
3046                handlers.splice(handlers.delegateCount++, 0, handleObj);
3047              } else {
3048                handlers.push(handleObj);
3049              }
3050              jQuery.event.global[type] = true;
3051            }
3052          },
3053          // Detach an event or set of events from an element
3054          remove: function(elem, types, handler, selector, mappedTypes) {
3055            var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
3056            if (!elemData || !(events = elemData.events)) {
3057              return;
3058            }
3059            types = (types || "").match(rnothtmlwhite) || [""];
3060            t = types.length;
3061            while (t--) {
3062              tmp = rtypenamespace.exec(types[t]) || [];
3063              type = origType = tmp[1];
3064              namespaces = (tmp[2] || "").split(".").sort();
3065              if (!type) {
3066                for (type in events) {
3067                  jQuery.event.remove(elem, type + types[t], handler, selector, true);
3068                }
3069                continue;
3070              }
3071              special = jQuery.event.special[type] || {};
3072              type = (selector ? special.delegateType : special.bindType) || type;
3073              handlers = events[type] || [];
3074              tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
3075              origCount = j = handlers.length;
3076              while (j--) {
3077                handleObj = handlers[j];
3078                if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
3079                  handlers.splice(j, 1);
3080                  if (handleObj.selector) {
3081                    handlers.delegateCount--;
3082                  }
3083                  if (special.remove) {
3084                    special.remove.call(elem, handleObj);
3085                  }
3086                }
3087              }
3088              if (origCount && !handlers.length) {
3089                if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
3090                  jQuery.removeEvent(elem, type, elemData.handle);
3091                }
3092                delete events[type];
3093              }
3094            }
3095            if (jQuery.isEmptyObject(events)) {
3096              dataPriv.remove(elem, "handle events");
3097            }
3098          },
3099          dispatch: function(nativeEvent) {
3100            var i, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event = jQuery.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || /* @__PURE__ */ Object.create(null))[event.type] || [], special = jQuery.event.special[event.type] || {};
3101            args[0] = event;
3102            for (i = 1; i < arguments.length; i++) {
3103              args[i] = arguments[i];
3104            }
3105            event.delegateTarget = this;
3106            if (special.preDispatch && special.preDispatch.call(this, event) === false) {
3107              return;
3108            }
3109            handlerQueue = jQuery.event.handlers.call(this, event, handlers);
3110            i = 0;
3111            while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
3112              event.currentTarget = matched.elem;
3113              j = 0;
3114              while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
3115                if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
3116                  event.handleObj = handleObj;
3117                  event.data = handleObj.data;
3118                  ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
3119                  if (ret !== void 0) {
3120                    if ((event.result = ret) === false) {
3121                      event.preventDefault();
3122                      event.stopPropagation();
3123                    }
3124                  }
3125                }
3126              }
3127            }
3128            if (special.postDispatch) {
3129              special.postDispatch.call(this, event);
3130            }
3131            return event.result;
3132          },
3133          handlers: function(event, handlers) {
3134            var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target;
3135            if (delegateCount && // Support: IE <=9
3136            // Black-hole SVG <use> instance trees (trac-13180)
3137            cur.nodeType && // Support: Firefox <=42
3138            // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
3139            // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
3140            // Support: IE 11 only
3141            // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
3142            !(event.type === "click" && event.button >= 1)) {
3143              for (; cur !== this; cur = cur.parentNode || this) {
3144                if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
3145                  matchedHandlers = [];
3146                  matchedSelectors = {};
3147                  for (i = 0; i < delegateCount; i++) {
3148                    handleObj = handlers[i];
3149                    sel = handleObj.selector + " ";
3150                    if (matchedSelectors[sel] === void 0) {
3151                      matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;
3152                    }
3153                    if (matchedSelectors[sel]) {
3154                      matchedHandlers.push(handleObj);
3155                    }
3156                  }
3157                  if (matchedHandlers.length) {
3158                    handlerQueue.push({ elem: cur, handlers: matchedHandlers });
3159                  }
3160                }
3161              }
3162            }
3163            cur = this;
3164            if (delegateCount < handlers.length) {
3165              handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) });
3166            }
3167            return handlerQueue;
3168          },
3169          addProp: function(name, hook) {
3170            Object.defineProperty(jQuery.Event.prototype, name, {
3171              enumerable: true,
3172              configurable: true,
3173              get: isFunction(hook) ? function() {
3174                if (this.originalEvent) {
3175                  return hook(this.originalEvent);
3176                }
3177              } : function() {
3178                if (this.originalEvent) {
3179                  return this.originalEvent[name];
3180                }
3181              },
3182              set: function(value) {
3183                Object.defineProperty(this, name, {
3184                  enumerable: true,
3185                  configurable: true,
3186                  writable: true,
3187                  value
3188                });
3189              }
3190            });
3191          },
3192          fix: function(originalEvent) {
3193            return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);
3194          },
3195          special: {
3196            load: {
3197              // Prevent triggered image.load events from bubbling to window.load
3198              noBubble: true
3199            },
3200            click: {
3201              // Utilize native event to ensure correct state for checkable inputs
3202              setup: function(data) {
3203                var el = this || data;
3204                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
3205                  leverageNative(el, "click", returnTrue);
3206                }
3207                return false;
3208              },
3209              trigger: function(data) {
3210                var el = this || data;
3211                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
3212                  leverageNative(el, "click");
3213                }
3214                return true;
3215              },
3216              // For cross-browser consistency, suppress native .click() on links
3217              // Also prevent it if we're currently inside a leveraged native-event stack
3218              _default: function(event) {
3219                var target = event.target;
3220                return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
3221              }
3222            },
3223            beforeunload: {
3224              postDispatch: function(event) {
3225                if (event.result !== void 0 && event.originalEvent) {
3226                  event.originalEvent.returnValue = event.result;
3227                }
3228              }
3229            }
3230          }
3231        };
3232        function leverageNative(el, type, expectSync2) {
3233          if (!expectSync2) {
3234            if (dataPriv.get(el, type) === void 0) {
3235              jQuery.event.add(el, type, returnTrue);
3236            }
3237            return;
3238          }
3239          dataPriv.set(el, type, false);
3240          jQuery.event.add(el, type, {
3241            namespace: false,
3242            handler: function(event) {
3243              var notAsync, result, saved = dataPriv.get(this, type);
3244              if (event.isTrigger & 1 && this[type]) {
3245                if (!saved.length) {
3246                  saved = slice.call(arguments);
3247                  dataPriv.set(this, type, saved);
3248                  notAsync = expectSync2(this, type);
3249                  this[type]();
3250                  result = dataPriv.get(this, type);
3251                  if (saved !== result || notAsync) {
3252                    dataPriv.set(this, type, false);
3253                  } else {
3254                    result = {};
3255                  }
3256                  if (saved !== result) {
3257                    event.stopImmediatePropagation();
3258                    event.preventDefault();
3259                    return result.value;
3260                  }
3261                } else if ((jQuery.event.special[type] || {}).delegateType) {
3262                  event.stopPropagation();
3263                }
3264              } else if (saved.length) {
3265                dataPriv.set(this, type, {
3266                  value: jQuery.event.trigger(
3267                    // Support: IE <=9 - 11+
3268                    // Extend with the prototype to reset the above stopImmediatePropagation()
3269                    jQuery.extend(saved[0], jQuery.Event.prototype),
3270                    saved.slice(1),
3271                    this
3272                  )
3273                });
3274                event.stopImmediatePropagation();
3275              }
3276            }
3277          });
3278        }
3279        jQuery.removeEvent = function(elem, type, handle) {
3280          if (elem.removeEventListener) {
3281            elem.removeEventListener(type, handle);
3282          }
3283        };
3284        jQuery.Event = function(src, props) {
3285          if (!(this instanceof jQuery.Event)) {
3286            return new jQuery.Event(src, props);
3287          }
3288          if (src && src.type) {
3289            this.originalEvent = src;
3290            this.type = src.type;
3291            this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && // Support: Android <=2.3 only
3292            src.returnValue === false ? returnTrue : returnFalse;
3293            this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
3294            this.currentTarget = src.currentTarget;
3295            this.relatedTarget = src.relatedTarget;
3296          } else {
3297            this.type = src;
3298          }
3299          if (props) {
3300            jQuery.extend(this, props);
3301          }
3302          this.timeStamp = src && src.timeStamp || Date.now();
3303          this[jQuery.expando] = true;
3304        };
3305        jQuery.Event.prototype = {
3306          constructor: jQuery.Event,
3307          isDefaultPrevented: returnFalse,
3308          isPropagationStopped: returnFalse,
3309          isImmediatePropagationStopped: returnFalse,
3310          isSimulated: false,
3311          preventDefault: function() {
3312            var e = this.originalEvent;
3313            this.isDefaultPrevented = returnTrue;
3314            if (e && !this.isSimulated) {
3315              e.preventDefault();
3316            }
3317          },
3318          stopPropagation: function() {
3319            var e = this.originalEvent;
3320            this.isPropagationStopped = returnTrue;
3321            if (e && !this.isSimulated) {
3322              e.stopPropagation();
3323            }
3324          },
3325          stopImmediatePropagation: function() {
3326            var e = this.originalEvent;
3327            this.isImmediatePropagationStopped = returnTrue;
3328            if (e && !this.isSimulated) {
3329              e.stopImmediatePropagation();
3330            }
3331            this.stopPropagation();
3332          }
3333        };
3334        jQuery.each({
3335          altKey: true,
3336          bubbles: true,
3337          cancelable: true,
3338          changedTouches: true,
3339          ctrlKey: true,
3340          detail: true,
3341          eventPhase: true,
3342          metaKey: true,
3343          pageX: true,
3344          pageY: true,
3345          shiftKey: true,
3346          view: true,
3347          "char": true,
3348          code: true,
3349          charCode: true,
3350          key: true,
3351          keyCode: true,
3352          button: true,
3353          buttons: true,
3354          clientX: true,
3355          clientY: true,
3356          offsetX: true,
3357          offsetY: true,
3358          pointerId: true,
3359          pointerType: true,
3360          screenX: true,
3361          screenY: true,
3362          targetTouches: true,
3363          toElement: true,
3364          touches: true,
3365          which: function(event) {
3366            var button = event.button;
3367            if (event.which == null && rkeyEvent.test(event.type)) {
3368              return event.charCode != null ? event.charCode : event.keyCode;
3369            }
3370            if (!event.which && button !== void 0 && rmouseEvent.test(event.type)) {
3371              if (button & 1) {
3372                return 1;
3373              }
3374              if (button & 2) {
3375                return 3;
3376              }
3377              if (button & 4) {
3378                return 2;
3379              }
3380              return 0;
3381            }
3382            return event.which;
3383          }
3384        }, jQuery.event.addProp);
3385        jQuery.each({ focus: "focusin", blur: "focusout" }, function(type, delegateType) {
3386          jQuery.event.special[type] = {
3387            // Utilize native event if possible so blur/focus sequence is correct
3388            setup: function() {
3389              leverageNative(this, type, expectSync);
3390              return false;
3391            },
3392            trigger: function() {
3393              leverageNative(this, type);
3394              return true;
3395            },
3396            delegateType
3397          };
3398        });
3399        jQuery.each({
3400          mouseenter: "mouseover",
3401          mouseleave: "mouseout",
3402          pointerenter: "pointerover",
3403          pointerleave: "pointerout"
3404        }, function(orig, fix) {
3405          jQuery.event.special[orig] = {
3406            delegateType: fix,
3407            bindType: fix,
3408            handle: function(event) {
3409              var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;
3410              if (!related || related !== target && !jQuery.contains(target, related)) {
3411                event.type = handleObj.origType;
3412                ret = handleObj.handler.apply(this, arguments);
3413                event.type = fix;
3414              }
3415              return ret;
3416            }
3417          };
3418        });
3419        jQuery.fn.extend({
3420          on: function(types, selector, data, fn) {
3421            return on(this, types, selector, data, fn);
3422          },
3423          one: function(types, selector, data, fn) {
3424            return on(this, types, selector, data, fn, 1);
3425          },
3426          off: function(types, selector, fn) {
3427            var handleObj, type;
3428            if (types && types.preventDefault && types.handleObj) {
3429              handleObj = types.handleObj;
3430              jQuery(types.delegateTarget).off(
3431                handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
3432                handleObj.selector,
3433                handleObj.handler
3434              );
3435              return this;
3436            }
3437            if (typeof types === "object") {
3438              for (type in types) {
3439                this.off(type, selector, types[type]);
3440              }
3441              return this;
3442            }
3443            if (selector === false || typeof selector === "function") {
3444              fn = selector;
3445              selector = void 0;
3446            }
3447            if (fn === false) {
3448              fn = returnFalse;
3449            }
3450            return this.each(function() {
3451              jQuery.event.remove(this, types, fn, selector);
3452            });
3453          }
3454        });
3455        var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
3456        function manipulationTarget(elem, content) {
3457          if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
3458            return jQuery(elem).children("tbody")[0] || elem;
3459          }
3460          return elem;
3461        }
3462        function disableScript(elem) {
3463          elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
3464          return elem;
3465        }
3466        function restoreScript(elem) {
3467          if ((elem.type || "").slice(0, 5) === "true/") {
3468            elem.type = elem.type.slice(5);
3469          } else {
3470            elem.removeAttribute("type");
3471          }
3472          return elem;
3473        }
3474        function cloneCopyEvent(src, dest) {
3475          var i, l, type, pdataOld, udataOld, udataCur, events;
3476          if (dest.nodeType !== 1) {
3477            return;
3478          }
3479          if (dataPriv.hasData(src)) {
3480            pdataOld = dataPriv.get(src);
3481            events = pdataOld.events;
3482            if (events) {
3483              dataPriv.remove(dest, "handle events");
3484              for (type in events) {
3485                for (i = 0, l = events[type].length; i < l; i++) {
3486                  jQuery.event.add(dest, type, events[type][i]);
3487                }
3488              }
3489            }
3490          }
3491          if (dataUser.hasData(src)) {
3492            udataOld = dataUser.access(src);
3493            udataCur = jQuery.extend({}, udataOld);
3494            dataUser.set(dest, udataCur);
3495          }
3496        }
3497        function fixInput(src, dest) {
3498          var nodeName2 = dest.nodeName.toLowerCase();
3499          if (nodeName2 === "input" && rcheckableType.test(src.type)) {
3500            dest.checked = src.checked;
3501          } else if (nodeName2 === "input" || nodeName2 === "textarea") {
3502            dest.defaultValue = src.defaultValue;
3503          }
3504        }
3505        function domManip(collection, args, callback, ignored) {
3506          args = flat(args);
3507          var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], valueIsFunction = isFunction(value);
3508          if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) {
3509            return collection.each(function(index) {
3510              var self2 = collection.eq(index);
3511              if (valueIsFunction) {
3512                args[0] = value.call(this, index, self2.html());
3513              }
3514              domManip(self2, args, callback, ignored);
3515            });
3516          }
3517          if (l) {
3518            fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
3519            first = fragment.firstChild;
3520            if (fragment.childNodes.length === 1) {
3521              fragment = first;
3522            }
3523            if (first || ignored) {
3524              scripts = jQuery.map(getAll(fragment, "script"), disableScript);
3525              hasScripts = scripts.length;
3526              for (; i < l; i++) {
3527                node = fragment;
3528                if (i !== iNoClone) {
3529                  node = jQuery.clone(node, true, true);
3530                  if (hasScripts) {
3531                    jQuery.merge(scripts, getAll(node, "script"));
3532                  }
3533                }
3534                callback.call(collection[i], node, i);
3535              }
3536              if (hasScripts) {
3537                doc = scripts[scripts.length - 1].ownerDocument;
3538                jQuery.map(scripts, restoreScript);
3539                for (i = 0; i < hasScripts; i++) {
3540                  node = scripts[i];
3541                  if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) {
3542                    if (node.src && (node.type || "").toLowerCase() !== "module") {
3543                      if (jQuery._evalUrl && !node.noModule) {
3544                        jQuery._evalUrl(node.src, {
3545                          nonce: node.nonce || node.getAttribute("nonce")
3546                        }, doc);
3547                      }
3548                    } else {
3549                      DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
3550                    }
3551                  }
3552                }
3553              }
3554            }
3555          }
3556          return collection;
3557        }
3558        function remove(elem, selector, keepData) {
3559          var node, nodes = selector ? jQuery.filter(selector, elem) : elem, i = 0;
3560          for (; (node = nodes[i]) != null; i++) {
3561            if (!keepData && node.nodeType === 1) {
3562              jQuery.cleanData(getAll(node));
3563            }
3564            if (node.parentNode) {
3565              if (keepData && isAttached(node)) {
3566                setGlobalEval(getAll(node, "script"));
3567              }
3568              node.parentNode.removeChild(node);
3569            }
3570          }
3571          return elem;
3572        }
3573        jQuery.extend({
3574          htmlPrefilter: function(html) {
3575            return html;
3576          },
3577          clone: function(elem, dataAndEvents, deepDataAndEvents) {
3578            var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem);
3579            if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {
3580              destElements = getAll(clone);
3581              srcElements = getAll(elem);
3582              for (i = 0, l = srcElements.length; i < l; i++) {
3583                fixInput(srcElements[i], destElements[i]);
3584              }
3585            }
3586            if (dataAndEvents) {
3587              if (deepDataAndEvents) {
3588                srcElements = srcElements || getAll(elem);
3589                destElements = destElements || getAll(clone);
3590                for (i = 0, l = srcElements.length; i < l; i++) {
3591                  cloneCopyEvent(srcElements[i], destElements[i]);
3592                }
3593              } else {
3594                cloneCopyEvent(elem, clone);
3595              }
3596            }
3597            destElements = getAll(clone, "script");
3598            if (destElements.length > 0) {
3599              setGlobalEval(destElements, !inPage && getAll(elem, "script"));
3600            }
3601            return clone;
3602          },
3603          cleanData: function(elems) {
3604            var data, elem, type, special = jQuery.event.special, i = 0;
3605            for (; (elem = elems[i]) !== void 0; i++) {
3606              if (acceptData(elem)) {
3607                if (data = elem[dataPriv.expando]) {
3608                  if (data.events) {
3609                    for (type in data.events) {
3610                      if (special[type]) {
3611                        jQuery.event.remove(elem, type);
3612                      } else {
3613                        jQuery.removeEvent(elem, type, data.handle);
3614                      }
3615                    }
3616                  }
3617                  elem[dataPriv.expando] = void 0;
3618                }
3619                if (elem[dataUser.expando]) {
3620                  elem[dataUser.expando] = void 0;
3621                }
3622              }
3623            }
3624          }
3625        });
3626        jQuery.fn.extend({
3627          detach: function(selector) {
3628            return remove(this, selector, true);
3629          },
3630          remove: function(selector) {
3631            return remove(this, selector);
3632          },
3633          text: function(value) {
3634            return access(this, function(value2) {
3635              return value2 === void 0 ? jQuery.text(this) : this.empty().each(function() {
3636                if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3637                  this.textContent = value2;
3638                }
3639              });
3640            }, null, value, arguments.length);
3641          },
3642          append: function() {
3643            return domManip(this, arguments, function(elem) {
3644              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3645                var target = manipulationTarget(this, elem);
3646                target.appendChild(elem);
3647              }
3648            });
3649          },
3650          prepend: function() {
3651            return domManip(this, arguments, function(elem) {
3652              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3653                var target = manipulationTarget(this, elem);
3654                target.insertBefore(elem, target.firstChild);
3655              }
3656            });
3657          },
3658          before: function() {
3659            return domManip(this, arguments, function(elem) {
3660              if (this.parentNode) {
3661                this.parentNode.insertBefore(elem, this);
3662              }
3663            });
3664          },
3665          after: function() {
3666            return domManip(this, arguments, function(elem) {
3667              if (this.parentNode) {
3668                this.parentNode.insertBefore(elem, this.nextSibling);
3669              }
3670            });
3671          },
3672          empty: function() {
3673            var elem, i = 0;
3674            for (; (elem = this[i]) != null; i++) {
3675              if (elem.nodeType === 1) {
3676                jQuery.cleanData(getAll(elem, false));
3677                elem.textContent = "";
3678              }
3679            }
3680            return this;
3681          },
3682          clone: function(dataAndEvents, deepDataAndEvents) {
3683            dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
3684            deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
3685            return this.map(function() {
3686              return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
3687            });
3688          },
3689          html: function(value) {
3690            return access(this, function(value2) {
3691              var elem = this[0] || {}, i = 0, l = this.length;
3692              if (value2 === void 0 && elem.nodeType === 1) {
3693                return elem.innerHTML;
3694              }
3695              if (typeof value2 === "string" && !rnoInnerhtml.test(value2) && !wrapMap[(rtagName.exec(value2) || ["", ""])[1].toLowerCase()]) {
3696                value2 = jQuery.htmlPrefilter(value2);
3697                try {
3698                  for (; i < l; i++) {
3699                    elem = this[i] || {};
3700                    if (elem.nodeType === 1) {
3701                      jQuery.cleanData(getAll(elem, false));
3702                      elem.innerHTML = value2;
3703                    }
3704                  }
3705                  elem = 0;
3706                } catch (e) {
3707                }
3708              }
3709              if (elem) {
3710                this.empty().append(value2);
3711              }
3712            }, null, value, arguments.length);
3713          },
3714          replaceWith: function() {
3715            var ignored = [];
3716            return domManip(this, arguments, function(elem) {
3717              var parent = this.parentNode;
3718              if (jQuery.inArray(this, ignored) < 0) {
3719                jQuery.cleanData(getAll(this));
3720                if (parent) {
3721                  parent.replaceChild(elem, this);
3722                }
3723              }
3724            }, ignored);
3725          }
3726        });
3727        jQuery.each({
3728          appendTo: "append",
3729          prependTo: "prepend",
3730          insertBefore: "before",
3731          insertAfter: "after",
3732          replaceAll: "replaceWith"
3733        }, function(name, original) {
3734          jQuery.fn[name] = function(selector) {
3735            var elems, ret = [], insert = jQuery(selector), last = insert.length - 1, i = 0;
3736            for (; i <= last; i++) {
3737              elems = i === last ? this : this.clone(true);
3738              jQuery(insert[i])[original](elems);
3739              push.apply(ret, elems.get());
3740            }
3741            return this.pushStack(ret);
3742          };
3743        });
3744        var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
3745        var getStyles = function(elem) {
3746          var view = elem.ownerDocument.defaultView;
3747          if (!view || !view.opener) {
3748            view = window2;
3749          }
3750          return view.getComputedStyle(elem);
3751        };
3752        var swap = function(elem, options, callback) {
3753          var ret, name, old = {};
3754          for (name in options) {
3755            old[name] = elem.style[name];
3756            elem.style[name] = options[name];
3757          }
3758          ret = callback.call(elem);
3759          for (name in options) {
3760            elem.style[name] = old[name];
3761          }
3762          return ret;
3763        };
3764        var rboxStyle = new RegExp(cssExpand.join("|"), "i");
3765        (function() {
3766          function computeStyleTests() {
3767            if (!div) {
3768              return;
3769            }
3770            container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";
3771            div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";
3772            documentElement.appendChild(container).appendChild(div);
3773            var divStyle = window2.getComputedStyle(div);
3774            pixelPositionVal = divStyle.top !== "1%";
3775            reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;
3776            div.style.right = "60%";
3777            pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;
3778            boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;
3779            div.style.position = "absolute";
3780            scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
3781            documentElement.removeChild(container);
3782            div = null;
3783          }
3784          function roundPixelMeasures(measure) {
3785            return Math.round(parseFloat(measure));
3786          }
3787          var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement("div"), div = document.createElement("div");
3788          if (!div.style) {
3789            return;
3790          }
3791          div.style.backgroundClip = "content-box";
3792          div.cloneNode(true).style.backgroundClip = "";
3793          support.clearCloneStyle = div.style.backgroundClip === "content-box";
3794          jQuery.extend(support, {
3795            boxSizingReliable: function() {
3796              computeStyleTests();
3797              return boxSizingReliableVal;
3798            },
3799            pixelBoxStyles: function() {
3800              computeStyleTests();
3801              return pixelBoxStylesVal;
3802            },
3803            pixelPosition: function() {
3804              computeStyleTests();
3805              return pixelPositionVal;
3806            },
3807            reliableMarginLeft: function() {
3808              computeStyleTests();
3809              return reliableMarginLeftVal;
3810            },
3811            scrollboxSize: function() {
3812              computeStyleTests();
3813              return scrollboxSizeVal;
3814            },
3815            // Support: IE 9 - 11+, Edge 15 - 18+
3816            // IE/Edge misreport `getComputedStyle` of table rows with width/height
3817            // set in CSS while `offset*` properties report correct values.
3818            // Behavior in IE 9 is more subtle than in newer versions & it passes
3819            // some versions of this test; make sure not to make it pass there!
3820            reliableTrDimensions: function() {
3821              var table, tr, trChild, trStyle;
3822              if (reliableTrDimensionsVal == null) {
3823                table = document.createElement("table");
3824                tr = document.createElement("tr");
3825                trChild = document.createElement("div");
3826                table.style.cssText = "position:absolute;left:-11111px";
3827                tr.style.height = "1px";
3828                trChild.style.height = "9px";
3829                documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
3830                trStyle = window2.getComputedStyle(tr);
3831                reliableTrDimensionsVal = parseInt(trStyle.height) > 3;
3832                documentElement.removeChild(table);
3833              }
3834              return reliableTrDimensionsVal;
3835            }
3836          });
3837        })();
3838        function curCSS(elem, name, computed) {
3839          var width, minWidth, maxWidth, ret, style = elem.style;
3840          computed = computed || getStyles(elem);
3841          if (computed) {
3842            ret = computed.getPropertyValue(name) || computed[name];
3843            if (ret === "" && !isAttached(elem)) {
3844              ret = jQuery.style(elem, name);
3845            }
3846            if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {
3847              width = style.width;
3848              minWidth = style.minWidth;
3849              maxWidth = style.maxWidth;
3850              style.minWidth = style.maxWidth = style.width = ret;
3851              ret = computed.width;
3852              style.width = width;
3853              style.minWidth = minWidth;
3854              style.maxWidth = maxWidth;
3855            }
3856          }
3857          return ret !== void 0 ? (
3858            // Support: IE <=9 - 11 only
3859            // IE returns zIndex value as an integer.
3860            ret + ""
3861          ) : ret;
3862        }
3863        function addGetHookIf(conditionFn, hookFn) {
3864          return {
3865            get: function() {
3866              if (conditionFn()) {
3867                delete this.get;
3868                return;
3869              }
3870              return (this.get = hookFn).apply(this, arguments);
3871            }
3872          };
3873        }
3874        var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document.createElement("div").style, vendorProps = {};
3875        function vendorPropName(name) {
3876          var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length;
3877          while (i--) {
3878            name = cssPrefixes[i] + capName;
3879            if (name in emptyStyle) {
3880              return name;
3881            }
3882          }
3883        }
3884        function finalPropName(name) {
3885          var final = jQuery.cssProps[name] || vendorProps[name];
3886          if (final) {
3887            return final;
3888          }
3889          if (name in emptyStyle) {
3890            return name;
3891          }
3892          return vendorProps[name] = vendorPropName(name) || name;
3893        }
3894        var rdisplayswap = /^(none|table(?!-c[ea]).+)/, rcustomProp = /^--/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = {
3895          letterSpacing: "0",
3896          fontWeight: "400"
3897        };
3898        function setPositiveNumber(_elem, value, subtract) {
3899          var matches = rcssNum.exec(value);
3900          return matches ? (
3901            // Guard against undefined "subtract", e.g., when used as in cssHooks
3902            Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px")
3903          ) : value;
3904        }
3905        function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
3906          var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0;
3907          if (box === (isBorderBox ? "border" : "content")) {
3908            return 0;
3909          }
3910          for (; i < 4; i += 2) {
3911            if (box === "margin") {
3912              delta += jQuery.css(elem, box + cssExpand[i], true, styles);
3913            }
3914            if (!isBorderBox) {
3915              delta += jQuery.css(elem, "padding" + cssExpand[i], true, styles);
3916              if (box !== "padding") {
3917                delta += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
3918              } else {
3919                extra += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
3920              }
3921            } else {
3922              if (box === "content") {
3923                delta -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
3924              }
3925              if (box !== "margin") {
3926                delta -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
3927              }
3928            }
3929          }
3930          if (!isBorderBox && computedVal >= 0) {
3931            delta += Math.max(0, Math.ceil(
3932              elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5
3933              // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
3934              // Use an explicit zero to avoid NaN (gh-3964)
3935            )) || 0;
3936          }
3937          return delta;
3938        }
3939        function getWidthOrHeight(elem, dimension, extra) {
3940          var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1);
3941          if (rnumnonpx.test(val)) {
3942            if (!extra) {
3943              return val;
3944            }
3945            val = "auto";
3946          }
3947          if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+
3948          // IE/Edge misreport `getComputedStyle` of table rows with width/height
3949          // set in CSS while `offset*` properties report correct values.
3950          // Interestingly, in some cases IE 9 doesn't suffer from this issue.
3951          !support.reliableTrDimensions() && nodeName(elem, "tr") || // Fall back to offsetWidth/offsetHeight when value is "auto"
3952          // This happens for inline elements with no explicit setting (gh-3571)
3953          val === "auto" || // Support: Android <=4.1 - 4.3 only
3954          // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
3955          !parseFloat(val) && jQuery.css(elem, "display", false, styles) === "inline") && // Make sure the element is visible & connected
3956          elem.getClientRects().length) {
3957            isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box";
3958            valueIsBorderBox = offsetProp in elem;
3959            if (valueIsBorderBox) {
3960              val = elem[offsetProp];
3961            }
3962          }
3963          val = parseFloat(val) || 0;
3964          return val + boxModelAdjustment(
3965            elem,
3966            dimension,
3967            extra || (isBorderBox ? "border" : "content"),
3968            valueIsBorderBox,
3969            styles,
3970            // Provide the current computed size to request scroll gutter calculation (gh-3589)
3971            val
3972          ) + "px";
3973        }
3974        jQuery.extend({
3975          // Add in style property hooks for overriding the default
3976          // behavior of getting and setting a style property
3977          cssHooks: {
3978            opacity: {
3979              get: function(elem, computed) {
3980                if (computed) {
3981                  var ret = curCSS(elem, "opacity");
3982                  return ret === "" ? "1" : ret;
3983                }
3984              }
3985            }
3986          },
3987          // Don't automatically add "px" to these possibly-unitless properties
3988          cssNumber: {
3989            "animationIterationCount": true,
3990            "columnCount": true,
3991            "fillOpacity": true,
3992            "flexGrow": true,
3993            "flexShrink": true,
3994            "fontWeight": true,
3995            "gridArea": true,
3996            "gridColumn": true,
3997            "gridColumnEnd": true,
3998            "gridColumnStart": true,
3999            "gridRow": true,
4000            "gridRowEnd": true,
4001            "gridRowStart": true,
4002            "lineHeight": true,
4003            "opacity": true,
4004            "order": true,
4005            "orphans": true,
4006            "widows": true,
4007            "zIndex": true,
4008            "zoom": true
4009          },
4010          // Add in properties whose names you wish to fix before
4011          // setting or getting the value
4012          cssProps: {},
4013          // Get and set the style property on a DOM Node
4014          style: function(elem, name, value, extra) {
4015            if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
4016              return;
4017            }
4018            var ret, type, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name), style = elem.style;
4019            if (!isCustomProp) {
4020              name = finalPropName(origName);
4021            }
4022            hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
4023            if (value !== void 0) {
4024              type = typeof value;
4025              if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
4026                value = adjustCSS(elem, name, ret);
4027                type = "number";
4028              }
4029              if (value == null || value !== value) {
4030                return;
4031              }
4032              if (type === "number" && !isCustomProp) {
4033                value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px");
4034              }
4035              if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
4036                style[name] = "inherit";
4037              }
4038              if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== void 0) {
4039                if (isCustomProp) {
4040                  style.setProperty(name, value);
4041                } else {
4042                  style[name] = value;
4043                }
4044              }
4045            } else {
4046              if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) {
4047                return ret;
4048              }
4049              return style[name];
4050            }
4051          },
4052          css: function(elem, name, extra, styles) {
4053            var val, num, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name);
4054            if (!isCustomProp) {
4055              name = finalPropName(origName);
4056            }
4057            hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
4058            if (hooks && "get" in hooks) {
4059              val = hooks.get(elem, true, extra);
4060            }
4061            if (val === void 0) {
4062              val = curCSS(elem, name, styles);
4063            }
4064            if (val === "normal" && name in cssNormalTransform) {
4065              val = cssNormalTransform[name];
4066            }
4067            if (extra === "" || extra) {
4068              num = parseFloat(val);
4069              return extra === true || isFinite(num) ? num || 0 : val;
4070            }
4071            return val;
4072          }
4073        });
4074        jQuery.each(["height", "width"], function(_i, dimension) {
4075          jQuery.cssHooks[dimension] = {
4076            get: function(elem, computed, extra) {
4077              if (computed) {
4078                return rdisplayswap.test(jQuery.css(elem, "display")) && // Support: Safari 8+
4079                // Table columns in Safari have non-zero offsetWidth & zero
4080                // getBoundingClientRect().width unless display is changed.
4081                // Support: IE <=11 only
4082                // Running getBoundingClientRect on a disconnected node
4083                // in IE throws an error.
4084                (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() {
4085                  return getWidthOrHeight(elem, dimension, extra);
4086                }) : getWidthOrHeight(elem, dimension, extra);
4087              }
4088            },
4089            set: function(elem, value, extra) {
4090              var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment(
4091                elem,
4092                dimension,
4093                extra,
4094                isBorderBox,
4095                styles
4096              ) : 0;
4097              if (isBorderBox && scrollboxSizeBuggy) {
4098                subtract -= Math.ceil(
4099                  elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5
4100                );
4101              }
4102              if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") {
4103                elem.style[dimension] = value;
4104                value = jQuery.css(elem, dimension);
4105              }
4106              return setPositiveNumber(elem, value, subtract);
4107            }
4108          };
4109        });
4110        jQuery.cssHooks.marginLeft = addGetHookIf(
4111          support.reliableMarginLeft,
4112          function(elem, computed) {
4113            if (computed) {
4114              return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() {
4115                return elem.getBoundingClientRect().left;
4116              })) + "px";
4117            }
4118          }
4119        );
4120        jQuery.each({
4121          margin: "",
4122          padding: "",
4123          border: "Width"
4124        }, function(prefix, suffix) {
4125          jQuery.cssHooks[prefix + suffix] = {
4126            expand: function(value) {
4127              var i = 0, expanded = {}, parts = typeof value === "string" ? value.split(" ") : [value];
4128              for (; i < 4; i++) {
4129                expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
4130              }
4131              return expanded;
4132            }
4133          };
4134          if (prefix !== "margin") {
4135            jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
4136          }
4137        });
4138        jQuery.fn.extend({
4139          css: function(name, value) {
4140            return access(this, function(elem, name2, value2) {
4141              var styles, len, map = {}, i = 0;
4142              if (Array.isArray(name2)) {
4143                styles = getStyles(elem);
4144                len = name2.length;
4145                for (; i < len; i++) {
4146                  map[name2[i]] = jQuery.css(elem, name2[i], false, styles);
4147                }
4148                return map;
4149              }
4150              return value2 !== void 0 ? jQuery.style(elem, name2, value2) : jQuery.css(elem, name2);
4151            }, name, value, arguments.length > 1);
4152          }
4153        });
4154        function Tween(elem, options, prop, end, easing) {
4155          return new Tween.prototype.init(elem, options, prop, end, easing);
4156        }
4157        jQuery.Tween = Tween;
4158        Tween.prototype = {
4159          constructor: Tween,
4160          init: function(elem, options, prop, end, easing, unit) {
4161            this.elem = elem;
4162            this.prop = prop;
4163            this.easing = easing || jQuery.easing._default;
4164            this.options = options;
4165            this.start = this.now = this.cur();
4166            this.end = end;
4167            this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
4168          },
4169          cur: function() {
4170            var hooks = Tween.propHooks[this.prop];
4171            return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
4172          },
4173          run: function(percent) {
4174            var eased, hooks = Tween.propHooks[this.prop];
4175            if (this.options.duration) {
4176              this.pos = eased = jQuery.easing[this.easing](
4177                percent,
4178                this.options.duration * percent,
4179                0,
4180                1,
4181                this.options.duration
4182              );
4183            } else {
4184              this.pos = eased = percent;
4185            }
4186            this.now = (this.end - this.start) * eased + this.start;
4187            if (this.options.step) {
4188              this.options.step.call(this.elem, this.now, this);
4189            }
4190            if (hooks && hooks.set) {
4191              hooks.set(this);
4192            } else {
4193              Tween.propHooks._default.set(this);
4194            }
4195            return this;
4196          }
4197        };
4198        Tween.prototype.init.prototype = Tween.prototype;
4199        Tween.propHooks = {
4200          _default: {
4201            get: function(tween) {
4202              var result;
4203              if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
4204                return tween.elem[tween.prop];
4205              }
4206              result = jQuery.css(tween.elem, tween.prop, "");
4207              return !result || result === "auto" ? 0 : result;
4208            },
4209            set: function(tween) {
4210              if (jQuery.fx.step[tween.prop]) {
4211                jQuery.fx.step[tween.prop](tween);
4212              } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
4213                jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
4214              } else {
4215                tween.elem[tween.prop] = tween.now;
4216              }
4217            }
4218          }
4219        };
4220        Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
4221          set: function(tween) {
4222            if (tween.elem.nodeType && tween.elem.parentNode) {
4223              tween.elem[tween.prop] = tween.now;
4224            }
4225          }
4226        };
4227        jQuery.easing = {
4228          linear: function(p) {
4229            return p;
4230          },
4231          swing: function(p) {
4232            return 0.5 - Math.cos(p * Math.PI) / 2;
4233          },
4234          _default: "swing"
4235        };
4236        jQuery.fx = Tween.prototype.init;
4237        jQuery.fx.step = {};
4238        var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/;
4239        function schedule() {
4240          if (inProgress) {
4241            if (document.hidden === false && window2.requestAnimationFrame) {
4242              window2.requestAnimationFrame(schedule);
4243            } else {
4244              window2.setTimeout(schedule, jQuery.fx.interval);
4245            }
4246            jQuery.fx.tick();
4247          }
4248        }
4249        function createFxNow() {
4250          window2.setTimeout(function() {
4251            fxNow = void 0;
4252          });
4253          return fxNow = Date.now();
4254        }
4255        function genFx(type, includeWidth) {
4256          var which, i = 0, attrs = { height: type };
4257          includeWidth = includeWidth ? 1 : 0;
4258          for (; i < 4; i += 2 - includeWidth) {
4259            which = cssExpand[i];
4260            attrs["margin" + which] = attrs["padding" + which] = type;
4261          }
4262          if (includeWidth) {
4263            attrs.opacity = attrs.width = type;
4264          }
4265          return attrs;
4266        }
4267        function createTween(value, prop, animation) {
4268          var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length = collection.length;
4269          for (; index < length; index++) {
4270            if (tween = collection[index].call(animation, prop, value)) {
4271              return tween;
4272            }
4273          }
4274        }
4275        function defaultPrefilter(elem, props, opts) {
4276          var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow");
4277          if (!opts.queue) {
4278            hooks = jQuery._queueHooks(elem, "fx");
4279            if (hooks.unqueued == null) {
4280              hooks.unqueued = 0;
4281              oldfire = hooks.empty.fire;
4282              hooks.empty.fire = function() {
4283                if (!hooks.unqueued) {
4284                  oldfire();
4285                }
4286              };
4287            }
4288            hooks.unqueued++;
4289            anim.always(function() {
4290              anim.always(function() {
4291                hooks.unqueued--;
4292                if (!jQuery.queue(elem, "fx").length) {
4293                  hooks.empty.fire();
4294                }
4295              });
4296            });
4297          }
4298          for (prop in props) {
4299            value = props[prop];
4300            if (rfxtypes.test(value)) {
4301              delete props[prop];
4302              toggle = toggle || value === "toggle";
4303              if (value === (hidden ? "hide" : "show")) {
4304                if (value === "show" && dataShow && dataShow[prop] !== void 0) {
4305                  hidden = true;
4306                } else {
4307                  continue;
4308                }
4309              }
4310              orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
4311            }
4312          }
4313          propTween = !jQuery.isEmptyObject(props);
4314          if (!propTween && jQuery.isEmptyObject(orig)) {
4315            return;
4316          }
4317          if (isBox && elem.nodeType === 1) {
4318            opts.overflow = [style.overflow, style.overflowX, style.overflowY];
4319            restoreDisplay = dataShow && dataShow.display;
4320            if (restoreDisplay == null) {
4321              restoreDisplay = dataPriv.get(elem, "display");
4322            }
4323            display = jQuery.css(elem, "display");
4324            if (display === "none") {
4325              if (restoreDisplay) {
4326                display = restoreDisplay;
4327              } else {
4328                showHide([elem], true);
4329                restoreDisplay = elem.style.display || restoreDisplay;
4330                display = jQuery.css(elem, "display");
4331                showHide([elem]);
4332              }
4333            }
4334            if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
4335              if (jQuery.css(elem, "float") === "none") {
4336                if (!propTween) {
4337                  anim.done(function() {
4338                    style.display = restoreDisplay;
4339                  });
4340                  if (restoreDisplay == null) {
4341                    display = style.display;
4342                    restoreDisplay = display === "none" ? "" : display;
4343                  }
4344                }
4345                style.display = "inline-block";
4346              }
4347            }
4348          }
4349          if (opts.overflow) {
4350            style.overflow = "hidden";
4351            anim.always(function() {
4352              style.overflow = opts.overflow[0];
4353              style.overflowX = opts.overflow[1];
4354              style.overflowY = opts.overflow[2];
4355            });
4356          }
4357          propTween = false;
4358          for (prop in orig) {
4359            if (!propTween) {
4360              if (dataShow) {
4361                if ("hidden" in dataShow) {
4362                  hidden = dataShow.hidden;
4363                }
4364              } else {
4365                dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay });
4366              }
4367              if (toggle) {
4368                dataShow.hidden = !hidden;
4369              }
4370              if (hidden) {
4371                showHide([elem], true);
4372              }
4373              anim.done(function() {
4374                if (!hidden) {
4375                  showHide([elem]);
4376                }
4377                dataPriv.remove(elem, "fxshow");
4378                for (prop in orig) {
4379                  jQuery.style(elem, prop, orig[prop]);
4380                }
4381              });
4382            }
4383            propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
4384            if (!(prop in dataShow)) {
4385              dataShow[prop] = propTween.start;
4386              if (hidden) {
4387                propTween.end = propTween.start;
4388                propTween.start = 0;
4389              }
4390            }
4391          }
4392        }
4393        function propFilter(props, specialEasing) {
4394          var index, name, easing, value, hooks;
4395          for (index in props) {
4396            name = camelCase(index);
4397            easing = specialEasing[name];
4398            value = props[index];
4399            if (Array.isArray(value)) {
4400              easing = value[1];
4401              value = props[index] = value[0];
4402            }
4403            if (index !== name) {
4404              props[name] = value;
4405              delete props[index];
4406            }
4407            hooks = jQuery.cssHooks[name];
4408            if (hooks && "expand" in hooks) {
4409              value = hooks.expand(value);
4410              delete props[name];
4411              for (index in value) {
4412                if (!(index in props)) {
4413                  props[index] = value[index];
4414                  specialEasing[index] = easing;
4415                }
4416              }
4417            } else {
4418              specialEasing[name] = easing;
4419            }
4420          }
4421        }
4422        function Animation(elem, properties, options) {
4423          var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery.Deferred().always(function() {
4424            delete tick.elem;
4425          }), tick = function() {
4426            if (stopped) {
4427              return false;
4428            }
4429            var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length2 = animation.tweens.length;
4430            for (; index2 < length2; index2++) {
4431              animation.tweens[index2].run(percent);
4432            }
4433            deferred.notifyWith(elem, [animation, percent, remaining]);
4434            if (percent < 1 && length2) {
4435              return remaining;
4436            }
4437            if (!length2) {
4438              deferred.notifyWith(elem, [animation, 1, 0]);
4439            }
4440            deferred.resolveWith(elem, [animation]);
4441            return false;
4442          }, animation = deferred.promise({
4443            elem,
4444            props: jQuery.extend({}, properties),
4445            opts: jQuery.extend(true, {
4446              specialEasing: {},
4447              easing: jQuery.easing._default
4448            }, options),
4449            originalProperties: properties,
4450            originalOptions: options,
4451            startTime: fxNow || createFxNow(),
4452            duration: options.duration,
4453            tweens: [],
4454            createTween: function(prop, end) {
4455              var tween = jQuery.Tween(
4456                elem,
4457                animation.opts,
4458                prop,
4459                end,
4460                animation.opts.specialEasing[prop] || animation.opts.easing
4461              );
4462              animation.tweens.push(tween);
4463              return tween;
4464            },
4465            stop: function(gotoEnd) {
4466              var index2 = 0, length2 = gotoEnd ? animation.tweens.length : 0;
4467              if (stopped) {
4468                return this;
4469              }
4470              stopped = true;
4471              for (; index2 < length2; index2++) {
4472                animation.tweens[index2].run(1);
4473              }
4474              if (gotoEnd) {
4475                deferred.notifyWith(elem, [animation, 1, 0]);
4476                deferred.resolveWith(elem, [animation, gotoEnd]);
4477              } else {
4478                deferred.rejectWith(elem, [animation, gotoEnd]);
4479              }
4480              return this;
4481            }
4482          }), props = animation.props;
4483          propFilter(props, animation.opts.specialEasing);
4484          for (; index < length; index++) {
4485            result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
4486            if (result) {
4487              if (isFunction(result.stop)) {
4488                jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
4489              }
4490              return result;
4491            }
4492          }
4493          jQuery.map(props, createTween, animation);
4494          if (isFunction(animation.opts.start)) {
4495            animation.opts.start.call(elem, animation);
4496          }
4497          animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
4498          jQuery.fx.timer(
4499            jQuery.extend(tick, {
4500              elem,
4501              anim: animation,
4502              queue: animation.opts.queue
4503            })
4504          );
4505          return animation;
4506        }
4507        jQuery.Animation = jQuery.extend(Animation, {
4508          tweeners: {
4509            "*": [function(prop, value) {
4510              var tween = this.createTween(prop, value);
4511              adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
4512              return tween;
4513            }]
4514          },
4515          tweener: function(props, callback) {
4516            if (isFunction(props)) {
4517              callback = props;
4518              props = ["*"];
4519            } else {
4520              props = props.match(rnothtmlwhite);
4521            }
4522            var prop, index = 0, length = props.length;
4523            for (; index < length; index++) {
4524              prop = props[index];
4525              Animation.tweeners[prop] = Animation.tweeners[prop] || [];
4526              Animation.tweeners[prop].unshift(callback);
4527            }
4528          },
4529          prefilters: [defaultPrefilter],
4530          prefilter: function(callback, prepend) {
4531            if (prepend) {
4532              Animation.prefilters.unshift(callback);
4533            } else {
4534              Animation.prefilters.push(callback);
4535            }
4536          }
4537        });
4538        jQuery.speed = function(speed, easing, fn) {
4539          var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
4540            complete: fn || !fn && easing || isFunction(speed) && speed,
4541            duration: speed,
4542            easing: fn && easing || easing && !isFunction(easing) && easing
4543          };
4544          if (jQuery.fx.off) {
4545            opt.duration = 0;
4546          } else {
4547            if (typeof opt.duration !== "number") {
4548              if (opt.duration in jQuery.fx.speeds) {
4549                opt.duration = jQuery.fx.speeds[opt.duration];
4550              } else {
4551                opt.duration = jQuery.fx.speeds._default;
4552              }
4553            }
4554          }
4555          if (opt.queue == null || opt.queue === true) {
4556            opt.queue = "fx";
4557          }
4558          opt.old = opt.complete;
4559          opt.complete = function() {
4560            if (isFunction(opt.old)) {
4561              opt.old.call(this);
4562            }
4563            if (opt.queue) {
4564              jQuery.dequeue(this, opt.queue);
4565            }
4566          };
4567          return opt;
4568        };
4569        jQuery.fn.extend({
4570          fadeTo: function(speed, to, easing, callback) {
4571            return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback);
4572          },
4573          animate: function(prop, speed, easing, callback) {
4574            var empty = jQuery.isEmptyObject(prop), optall = jQuery.speed(speed, easing, callback), doAnimation = function() {
4575              var anim = Animation(this, jQuery.extend({}, prop), optall);
4576              if (empty || dataPriv.get(this, "finish")) {
4577                anim.stop(true);
4578              }
4579            };
4580            doAnimation.finish = doAnimation;
4581            return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
4582          },
4583          stop: function(type, clearQueue, gotoEnd) {
4584            var stopQueue = function(hooks) {
4585              var stop = hooks.stop;
4586              delete hooks.stop;
4587              stop(gotoEnd);
4588            };
4589            if (typeof type !== "string") {
4590              gotoEnd = clearQueue;
4591              clearQueue = type;
4592              type = void 0;
4593            }
4594            if (clearQueue) {
4595              this.queue(type || "fx", []);
4596            }
4597            return this.each(function() {
4598              var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = dataPriv.get(this);
4599              if (index) {
4600                if (data[index] && data[index].stop) {
4601                  stopQueue(data[index]);
4602                }
4603              } else {
4604                for (index in data) {
4605                  if (data[index] && data[index].stop && rrun.test(index)) {
4606                    stopQueue(data[index]);
4607                  }
4608                }
4609              }
4610              for (index = timers.length; index--; ) {
4611                if (timers[index].elem === this && (type == null || timers[index].queue === type)) {
4612                  timers[index].anim.stop(gotoEnd);
4613                  dequeue = false;
4614                  timers.splice(index, 1);
4615                }
4616              }
4617              if (dequeue || !gotoEnd) {
4618                jQuery.dequeue(this, type);
4619              }
4620            });
4621          },
4622          finish: function(type) {
4623            if (type !== false) {
4624              type = type || "fx";
4625            }
4626            return this.each(function() {
4627              var index, data = dataPriv.get(this), queue = data[type + "queue"], hooks = data[type + "queueHooks"], timers = jQuery.timers, length = queue ? queue.length : 0;
4628              data.finish = true;
4629              jQuery.queue(this, type, []);
4630              if (hooks && hooks.stop) {
4631                hooks.stop.call(this, true);
4632              }
4633              for (index = timers.length; index--; ) {
4634                if (timers[index].elem === this && timers[index].queue === type) {
4635                  timers[index].anim.stop(true);
4636                  timers.splice(index, 1);
4637                }
4638              }
4639              for (index = 0; index < length; index++) {
4640                if (queue[index] && queue[index].finish) {
4641                  queue[index].finish.call(this);
4642                }
4643              }
4644              delete data.finish;
4645            });
4646          }
4647        });
4648        jQuery.each(["toggle", "show", "hide"], function(_i, name) {
4649          var cssFn = jQuery.fn[name];
4650          jQuery.fn[name] = function(speed, easing, callback) {
4651            return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);
4652          };
4653        });
4654        jQuery.each({
4655          slideDown: genFx("show"),
4656          slideUp: genFx("hide"),
4657          slideToggle: genFx("toggle"),
4658          fadeIn: { opacity: "show" },
4659          fadeOut: { opacity: "hide" },
4660          fadeToggle: { opacity: "toggle" }
4661        }, function(name, props) {
4662          jQuery.fn[name] = function(speed, easing, callback) {
4663            return this.animate(props, speed, easing, callback);
4664          };
4665        });
4666        jQuery.timers = [];
4667        jQuery.fx.tick = function() {
4668          var timer, i = 0, timers = jQuery.timers;
4669          fxNow = Date.now();
4670          for (; i < timers.length; i++) {
4671            timer = timers[i];
4672            if (!timer() && timers[i] === timer) {
4673              timers.splice(i--, 1);
4674            }
4675          }
4676          if (!timers.length) {
4677            jQuery.fx.stop();
4678          }
4679          fxNow = void 0;
4680        };
4681        jQuery.fx.timer = function(timer) {
4682          jQuery.timers.push(timer);
4683          jQuery.fx.start();
4684        };
4685        jQuery.fx.interval = 13;
4686        jQuery.fx.start = function() {
4687          if (inProgress) {
4688            return;
4689          }
4690          inProgress = true;
4691          schedule();
4692        };
4693        jQuery.fx.stop = function() {
4694          inProgress = null;
4695        };
4696        jQuery.fx.speeds = {
4697          slow: 600,
4698          fast: 200,
4699          // Default speed
4700          _default: 400
4701        };
4702        jQuery.fn.delay = function(time, type) {
4703          time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
4704          type = type || "fx";
4705          return this.queue(type, function(next, hooks) {
4706            var timeout = window2.setTimeout(next, time);
4707            hooks.stop = function() {
4708              window2.clearTimeout(timeout);
4709            };
4710          });
4711        };
4712        (function() {
4713          var input = document.createElement("input"), select = document.createElement("select"), opt = select.appendChild(document.createElement("option"));
4714          input.type = "checkbox";
4715          support.checkOn = input.value !== "";
4716          support.optSelected = opt.selected;
4717          input = document.createElement("input");
4718          input.value = "t";
4719          input.type = "radio";
4720          support.radioValue = input.value === "t";
4721        })();
4722        var boolHook, attrHandle = jQuery.expr.attrHandle;
4723        jQuery.fn.extend({
4724          attr: function(name, value) {
4725            return access(this, jQuery.attr, name, value, arguments.length > 1);
4726          },
4727          removeAttr: function(name) {
4728            return this.each(function() {
4729              jQuery.removeAttr(this, name);
4730            });
4731          }
4732        });
4733        jQuery.extend({
4734          attr: function(elem, name, value) {
4735            var ret, hooks, nType = elem.nodeType;
4736            if (nType === 3 || nType === 8 || nType === 2) {
4737              return;
4738            }
4739            if (typeof elem.getAttribute === "undefined") {
4740              return jQuery.prop(elem, name, value);
4741            }
4742            if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
4743              hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : void 0);
4744            }
4745            if (value !== void 0) {
4746              if (value === null) {
4747                jQuery.removeAttr(elem, name);
4748                return;
4749              }
4750              if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) {
4751                return ret;
4752              }
4753              elem.setAttribute(name, value + "");
4754              return value;
4755            }
4756            if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
4757              return ret;
4758            }
4759            ret = jQuery.find.attr(elem, name);
4760            return ret == null ? void 0 : ret;
4761          },
4762          attrHooks: {
4763            type: {
4764              set: function(elem, value) {
4765                if (!support.radioValue && value === "radio" && nodeName(elem, "input")) {
4766                  var val = elem.value;
4767                  elem.setAttribute("type", value);
4768                  if (val) {
4769                    elem.value = val;
4770                  }
4771                  return value;
4772                }
4773              }
4774            }
4775          },
4776          removeAttr: function(elem, value) {
4777            var name, i = 0, attrNames = value && value.match(rnothtmlwhite);
4778            if (attrNames && elem.nodeType === 1) {
4779              while (name = attrNames[i++]) {
4780                elem.removeAttribute(name);
4781              }
4782            }
4783          }
4784        });
4785        boolHook = {
4786          set: function(elem, value, name) {
4787            if (value === false) {
4788              jQuery.removeAttr(elem, name);
4789            } else {
4790              elem.setAttribute(name, name);
4791            }
4792            return name;
4793          }
4794        };
4795        jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(_i, name) {
4796          var getter = attrHandle[name] || jQuery.find.attr;
4797          attrHandle[name] = function(elem, name2, isXML) {
4798            var ret, handle, lowercaseName = name2.toLowerCase();
4799            if (!isXML) {
4800              handle = attrHandle[lowercaseName];
4801              attrHandle[lowercaseName] = ret;
4802              ret = getter(elem, name2, isXML) != null ? lowercaseName : null;
4803              attrHandle[lowercaseName] = handle;
4804            }
4805            return ret;
4806          };
4807        });
4808        var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i;
4809        jQuery.fn.extend({
4810          prop: function(name, value) {
4811            return access(this, jQuery.prop, name, value, arguments.length > 1);
4812          },
4813          removeProp: function(name) {
4814            return this.each(function() {
4815              delete this[jQuery.propFix[name] || name];
4816            });
4817          }
4818        });
4819        jQuery.extend({
4820          prop: function(elem, name, value) {
4821            var ret, hooks, nType = elem.nodeType;
4822            if (nType === 3 || nType === 8 || nType === 2) {
4823              return;
4824            }
4825            if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
4826              name = jQuery.propFix[name] || name;
4827              hooks = jQuery.propHooks[name];
4828            }
4829            if (value !== void 0) {
4830              if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) {
4831                return ret;
4832              }
4833              return elem[name] = value;
4834            }
4835            if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
4836              return ret;
4837            }
4838            return elem[name];
4839          },
4840          propHooks: {
4841            tabIndex: {
4842              get: function(elem) {
4843                var tabindex = jQuery.find.attr(elem, "tabindex");
4844                if (tabindex) {
4845                  return parseInt(tabindex, 10);
4846                }
4847                if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
4848                  return 0;
4849                }
4850                return -1;
4851              }
4852            }
4853          },
4854          propFix: {
4855            "for": "htmlFor",
4856            "class": "className"
4857          }
4858        });
4859        if (!support.optSelected) {
4860          jQuery.propHooks.selected = {
4861            get: function(elem) {
4862              var parent = elem.parentNode;
4863              if (parent && parent.parentNode) {
4864                parent.parentNode.selectedIndex;
4865              }
4866              return null;
4867            },
4868            set: function(elem) {
4869              var parent = elem.parentNode;
4870              if (parent) {
4871                parent.selectedIndex;
4872                if (parent.parentNode) {
4873                  parent.parentNode.selectedIndex;
4874                }
4875              }
4876            }
4877          };
4878        }
4879        jQuery.each([
4880          "tabIndex",
4881          "readOnly",
4882          "maxLength",
4883          "cellSpacing",
4884          "cellPadding",
4885          "rowSpan",
4886          "colSpan",
4887          "useMap",
4888          "frameBorder",
4889          "contentEditable"
4890        ], function() {
4891          jQuery.propFix[this.toLowerCase()] = this;
4892        });
4893        function stripAndCollapse(value) {
4894          var tokens = value.match(rnothtmlwhite) || [];
4895          return tokens.join(" ");
4896        }
4897        function getClass(elem) {
4898          return elem.getAttribute && elem.getAttribute("class") || "";
4899        }
4900        function classesToArray(value) {
4901          if (Array.isArray(value)) {
4902            return value;
4903          }
4904          if (typeof value === "string") {
4905            return value.match(rnothtmlwhite) || [];
4906          }
4907          return [];
4908        }
4909        jQuery.fn.extend({
4910          addClass: function(value) {
4911            var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
4912            if (isFunction(value)) {
4913              return this.each(function(j2) {
4914                jQuery(this).addClass(value.call(this, j2, getClass(this)));
4915              });
4916            }
4917            classes = classesToArray(value);
4918            if (classes.length) {
4919              while (elem = this[i++]) {
4920                curValue = getClass(elem);
4921                cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
4922                if (cur) {
4923                  j = 0;
4924                  while (clazz = classes[j++]) {
4925                    if (cur.indexOf(" " + clazz + " ") < 0) {
4926                      cur += clazz + " ";
4927                    }
4928                  }
4929                  finalValue = stripAndCollapse(cur);
4930                  if (curValue !== finalValue) {
4931                    elem.setAttribute("class", finalValue);
4932                  }
4933                }
4934              }
4935            }
4936            return this;
4937          },
4938          removeClass: function(value) {
4939            var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
4940            if (isFunction(value)) {
4941              return this.each(function(j2) {
4942                jQuery(this).removeClass(value.call(this, j2, getClass(this)));
4943              });
4944            }
4945            if (!arguments.length) {
4946              return this.attr("class", "");
4947            }
4948            classes = classesToArray(value);
4949            if (classes.length) {
4950              while (elem = this[i++]) {
4951                curValue = getClass(elem);
4952                cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
4953                if (cur) {
4954                  j = 0;
4955                  while (clazz = classes[j++]) {
4956                    while (cur.indexOf(" " + clazz + " ") > -1) {
4957                      cur = cur.replace(" " + clazz + " ", " ");
4958                    }
4959                  }
4960                  finalValue = stripAndCollapse(cur);
4961                  if (curValue !== finalValue) {
4962                    elem.setAttribute("class", finalValue);
4963                  }
4964                }
4965              }
4966            }
4967            return this;
4968          },
4969          toggleClass: function(value, stateVal) {
4970            var type = typeof value, isValidValue = type === "string" || Array.isArray(value);
4971            if (typeof stateVal === "boolean" && isValidValue) {
4972              return stateVal ? this.addClass(value) : this.removeClass(value);
4973            }
4974            if (isFunction(value)) {
4975              return this.each(function(i) {
4976                jQuery(this).toggleClass(
4977                  value.call(this, i, getClass(this), stateVal),
4978                  stateVal
4979                );
4980              });
4981            }
4982            return this.each(function() {
4983              var className, i, self2, classNames;
4984              if (isValidValue) {
4985                i = 0;
4986                self2 = jQuery(this);
4987                classNames = classesToArray(value);
4988                while (className = classNames[i++]) {
4989                  if (self2.hasClass(className)) {
4990                    self2.removeClass(className);
4991                  } else {
4992                    self2.addClass(className);
4993                  }
4994                }
4995              } else if (value === void 0 || type === "boolean") {
4996                className = getClass(this);
4997                if (className) {
4998                  dataPriv.set(this, "__className__", className);
4999                }
5000                if (this.setAttribute) {
5001                  this.setAttribute(
5002                    "class",
5003                    className || value === false ? "" : dataPriv.get(this, "__className__") || ""
5004                  );
5005                }
5006              }
5007            });
5008          },
5009          hasClass: function(selector) {
5010            var className, elem, i = 0;
5011            className = " " + selector + " ";
5012            while (elem = this[i++]) {
5013              if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
5014                return true;
5015              }
5016            }
5017            return false;
5018          }
5019        });
5020        var rreturn = /\r/g;
5021        jQuery.fn.extend({
5022          val: function(value) {
5023            var hooks, ret, valueIsFunction, elem = this[0];
5024            if (!arguments.length) {
5025              if (elem) {
5026                hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];
5027                if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) {
5028                  return ret;
5029                }
5030                ret = elem.value;
5031                if (typeof ret === "string") {
5032                  return ret.replace(rreturn, "");
5033                }
5034                return ret == null ? "" : ret;
5035              }
5036              return;
5037            }
5038            valueIsFunction = isFunction(value);
5039            return this.each(function(i) {
5040              var val;
5041              if (this.nodeType !== 1) {
5042                return;
5043              }
5044              if (valueIsFunction) {
5045                val = value.call(this, i, jQuery(this).val());
5046              } else {
5047                val = value;
5048              }
5049              if (val == null) {
5050                val = "";
5051              } else if (typeof val === "number") {
5052                val += "";
5053              } else if (Array.isArray(val)) {
5054                val = jQuery.map(val, function(value2) {
5055                  return value2 == null ? "" : value2 + "";
5056                });
5057              }
5058              hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];
5059              if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) {
5060                this.value = val;
5061              }
5062            });
5063          }
5064        });
5065        jQuery.extend({
5066          valHooks: {
5067            option: {
5068              get: function(elem) {
5069                var val = jQuery.find.attr(elem, "value");
5070                return val != null ? val : (
5071                  // Support: IE <=10 - 11 only
5072                  // option.text throws exceptions (#14686, #14858)
5073                  // Strip and collapse whitespace
5074                  // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
5075                  stripAndCollapse(jQuery.text(elem))
5076                );
5077              }
5078            },
5079            select: {
5080              get: function(elem) {
5081                var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length;
5082                if (index < 0) {
5083                  i = max;
5084                } else {
5085                  i = one ? index : 0;
5086                }
5087                for (; i < max; i++) {
5088                  option = options[i];
5089                  if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup
5090                  !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
5091                    value = jQuery(option).val();
5092                    if (one) {
5093                      return value;
5094                    }
5095                    values.push(value);
5096                  }
5097                }
5098                return values;
5099              },
5100              set: function(elem, value) {
5101                var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length;
5102                while (i--) {
5103                  option = options[i];
5104                  if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {
5105                    optionSet = true;
5106                  }
5107                }
5108                if (!optionSet) {
5109                  elem.selectedIndex = -1;
5110                }
5111                return values;
5112              }
5113            }
5114          }
5115        });
5116        jQuery.each(["radio", "checkbox"], function() {
5117          jQuery.valHooks[this] = {
5118            set: function(elem, value) {
5119              if (Array.isArray(value)) {
5120                return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;
5121              }
5122            }
5123          };
5124          if (!support.checkOn) {
5125            jQuery.valHooks[this].get = function(elem) {
5126              return elem.getAttribute("value") === null ? "on" : elem.value;
5127            };
5128          }
5129        });
5130        support.focusin = "onfocusin" in window2;
5131        var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) {
5132          e.stopPropagation();
5133        };
5134        jQuery.extend(jQuery.event, {
5135          trigger: function(event, data, elem, onlyHandlers) {
5136            var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document], type = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
5137            cur = lastElement = tmp = elem = elem || document;
5138            if (elem.nodeType === 3 || elem.nodeType === 8) {
5139              return;
5140            }
5141            if (rfocusMorph.test(type + jQuery.event.triggered)) {
5142              return;
5143            }
5144            if (type.indexOf(".") > -1) {
5145              namespaces = type.split(".");
5146              type = namespaces.shift();
5147              namespaces.sort();
5148            }
5149            ontype = type.indexOf(":") < 0 && "on" + type;
5150            event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === "object" && event);
5151            event.isTrigger = onlyHandlers ? 2 : 3;
5152            event.namespace = namespaces.join(".");
5153            event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
5154            event.result = void 0;
5155            if (!event.target) {
5156              event.target = elem;
5157            }
5158            data = data == null ? [event] : jQuery.makeArray(data, [event]);
5159            special = jQuery.event.special[type] || {};
5160            if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
5161              return;
5162            }
5163            if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
5164              bubbleType = special.delegateType || type;
5165              if (!rfocusMorph.test(bubbleType + type)) {
5166                cur = cur.parentNode;
5167              }
5168              for (; cur; cur = cur.parentNode) {
5169                eventPath.push(cur);
5170                tmp = cur;
5171              }
5172              if (tmp === (elem.ownerDocument || document)) {
5173                eventPath.push(tmp.defaultView || tmp.parentWindow || window2);
5174              }
5175            }
5176            i = 0;
5177            while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
5178              lastElement = cur;
5179              event.type = i > 1 ? bubbleType : special.bindType || type;
5180              handle = (dataPriv.get(cur, "events") || /* @__PURE__ */ Object.create(null))[event.type] && dataPriv.get(cur, "handle");
5181              if (handle) {
5182                handle.apply(cur, data);
5183              }
5184              handle = ontype && cur[ontype];
5185              if (handle && handle.apply && acceptData(cur)) {
5186                event.result = handle.apply(cur, data);
5187                if (event.result === false) {
5188                  event.preventDefault();
5189                }
5190              }
5191            }
5192            event.type = type;
5193            if (!onlyHandlers && !event.isDefaultPrevented()) {
5194              if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
5195                if (ontype && isFunction(elem[type]) && !isWindow(elem)) {
5196                  tmp = elem[ontype];
5197                  if (tmp) {
5198                    elem[ontype] = null;
5199                  }
5200                  jQuery.event.triggered = type;
5201                  if (event.isPropagationStopped()) {
5202                    lastElement.addEventListener(type, stopPropagationCallback);
5203                  }
5204                  elem[type]();
5205                  if (event.isPropagationStopped()) {
5206                    lastElement.removeEventListener(type, stopPropagationCallback);
5207                  }
5208                  jQuery.event.triggered = void 0;
5209                  if (tmp) {
5210                    elem[ontype] = tmp;
5211                  }
5212                }
5213              }
5214            }
5215            return event.result;
5216          },
5217          // Piggyback on a donor event to simulate a different one
5218          // Used only for `focus(in | out)` events
5219          simulate: function(type, elem, event) {
5220            var e = jQuery.extend(
5221              new jQuery.Event(),
5222              event,
5223              {
5224                type,
5225                isSimulated: true
5226              }
5227            );
5228            jQuery.event.trigger(e, null, elem);
5229          }
5230        });
5231        jQuery.fn.extend({
5232          trigger: function(type, data) {
5233            return this.each(function() {
5234              jQuery.event.trigger(type, data, this);
5235            });
5236          },
5237          triggerHandler: function(type, data) {
5238            var elem = this[0];
5239            if (elem) {
5240              return jQuery.event.trigger(type, data, elem, true);
5241            }
5242          }
5243        });
5244        if (!support.focusin) {
5245          jQuery.each({ focus: "focusin", blur: "focusout" }, function(orig, fix) {
5246            var handler = function(event) {
5247              jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));
5248            };
5249            jQuery.event.special[fix] = {
5250              setup: function() {
5251                var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix);
5252                if (!attaches) {
5253                  doc.addEventListener(orig, handler, true);
5254                }
5255                dataPriv.access(doc, fix, (attaches || 0) + 1);
5256              },
5257              teardown: function() {
5258                var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix) - 1;
5259                if (!attaches) {
5260                  doc.removeEventListener(orig, handler, true);
5261                  dataPriv.remove(doc, fix);
5262                } else {
5263                  dataPriv.access(doc, fix, attaches);
5264                }
5265              }
5266            };
5267          });
5268        }
5269        var location = window2.location;
5270        var nonce = { guid: Date.now() };
5271        var rquery = /\?/;
5272        jQuery.parseXML = function(data) {
5273          var xml;
5274          if (!data || typeof data !== "string") {
5275            return null;
5276          }
5277          try {
5278            xml = new window2.DOMParser().parseFromString(data, "text/xml");
5279          } catch (e) {
5280            xml = void 0;
5281          }
5282          if (!xml || xml.getElementsByTagName("parsererror").length) {
5283            jQuery.error("Invalid XML: " + data);
5284          }
5285          return xml;
5286        };
5287        var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i;
5288        function buildParams(prefix, obj, traditional, add) {
5289          var name;
5290          if (Array.isArray(obj)) {
5291            jQuery.each(obj, function(i, v) {
5292              if (traditional || rbracket.test(prefix)) {
5293                add(prefix, v);
5294              } else {
5295                buildParams(
5296                  prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]",
5297                  v,
5298                  traditional,
5299                  add
5300                );
5301              }
5302            });
5303          } else if (!traditional && toType(obj) === "object") {
5304            for (name in obj) {
5305              buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
5306            }
5307          } else {
5308            add(prefix, obj);
5309          }
5310        }
5311        jQuery.param = function(a, traditional) {
5312          var prefix, s = [], add = function(key, valueOrFunction) {
5313            var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
5314            s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value);
5315          };
5316          if (a == null) {
5317            return "";
5318          }
5319          if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
5320            jQuery.each(a, function() {
5321              add(this.name, this.value);
5322            });
5323          } else {
5324            for (prefix in a) {
5325              buildParams(prefix, a[prefix], traditional, add);
5326            }
5327          }
5328          return s.join("&");
5329        };
5330        jQuery.fn.extend({
5331          serialize: function() {
5332            return jQuery.param(this.serializeArray());
5333          },
5334          serializeArray: function() {
5335            return this.map(function() {
5336              var elements = jQuery.prop(this, "elements");
5337              return elements ? jQuery.makeArray(elements) : this;
5338            }).filter(function() {
5339              var type = this.type;
5340              return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
5341            }).map(function(_i, elem) {
5342              var val = jQuery(this).val();
5343              if (val == null) {
5344                return null;
5345              }
5346              if (Array.isArray(val)) {
5347                return jQuery.map(val, function(val2) {
5348                  return { name: elem.name, value: val2.replace(rCRLF, "\r\n") };
5349                });
5350              }
5351              return { name: elem.name, value: val.replace(rCRLF, "\r\n") };
5352            }).get();
5353          }
5354        });
5355        var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports = {}, allTypes = "*/".concat("*"), originAnchor = document.createElement("a");
5356        originAnchor.href = location.href;
5357        function addToPrefiltersOrTransports(structure) {
5358          return function(dataTypeExpression, func) {
5359            if (typeof dataTypeExpression !== "string") {
5360              func = dataTypeExpression;
5361              dataTypeExpression = "*";
5362            }
5363            var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
5364            if (isFunction(func)) {
5365              while (dataType = dataTypes[i++]) {
5366                if (dataType[0] === "+") {
5367                  dataType = dataType.slice(1) || "*";
5368                  (structure[dataType] = structure[dataType] || []).unshift(func);
5369                } else {
5370                  (structure[dataType] = structure[dataType] || []).push(func);
5371                }
5372              }
5373            }
5374          };
5375        }
5376        function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
5377          var inspected = {}, seekingTransport = structure === transports;
5378          function inspect(dataType) {
5379            var selected;
5380            inspected[dataType] = true;
5381            jQuery.each(structure[dataType] || [], function(_, prefilterOrFactory) {
5382              var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
5383              if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
5384                options.dataTypes.unshift(dataTypeOrTransport);
5385                inspect(dataTypeOrTransport);
5386                return false;
5387              } else if (seekingTransport) {
5388                return !(selected = dataTypeOrTransport);
5389              }
5390            });
5391            return selected;
5392          }
5393          return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
5394        }
5395        function ajaxExtend(target, src) {
5396          var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {};
5397          for (key in src) {
5398            if (src[key] !== void 0) {
5399              (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
5400            }
5401          }
5402          if (deep) {
5403            jQuery.extend(true, target, deep);
5404          }
5405          return target;
5406        }
5407        function ajaxHandleResponses(s, jqXHR, responses) {
5408          var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
5409          while (dataTypes[0] === "*") {
5410            dataTypes.shift();
5411            if (ct === void 0) {
5412              ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
5413            }
5414          }
5415          if (ct) {
5416            for (type in contents) {
5417              if (contents[type] && contents[type].test(ct)) {
5418                dataTypes.unshift(type);
5419                break;
5420              }
5421            }
5422          }
5423          if (dataTypes[0] in responses) {
5424            finalDataType = dataTypes[0];
5425          } else {
5426            for (type in responses) {
5427              if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
5428                finalDataType = type;
5429                break;
5430              }
5431              if (!firstDataType) {
5432                firstDataType = type;
5433              }
5434            }
5435            finalDataType = finalDataType || firstDataType;
5436          }
5437          if (finalDataType) {
5438            if (finalDataType !== dataTypes[0]) {
5439              dataTypes.unshift(finalDataType);
5440            }
5441            return responses[finalDataType];
5442          }
5443        }
5444        function ajaxConvert(s, response, jqXHR, isSuccess) {
5445          var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice();
5446          if (dataTypes[1]) {
5447            for (conv in s.converters) {
5448              converters[conv.toLowerCase()] = s.converters[conv];
5449            }
5450          }
5451          current = dataTypes.shift();
5452          while (current) {
5453            if (s.responseFields[current]) {
5454              jqXHR[s.responseFields[current]] = response;
5455            }
5456            if (!prev && isSuccess && s.dataFilter) {
5457              response = s.dataFilter(response, s.dataType);
5458            }
5459            prev = current;
5460            current = dataTypes.shift();
5461            if (current) {
5462              if (current === "*") {
5463                current = prev;
5464              } else if (prev !== "*" && prev !== current) {
5465                conv = converters[prev + " " + current] || converters["* " + current];
5466                if (!conv) {
5467                  for (conv2 in converters) {
5468                    tmp = conv2.split(" ");
5469                    if (tmp[1] === current) {
5470                      conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]];
5471                      if (conv) {
5472                        if (conv === true) {
5473                          conv = converters[conv2];
5474                        } else if (converters[conv2] !== true) {
5475                          current = tmp[0];
5476                          dataTypes.unshift(tmp[1]);
5477                        }
5478                        break;
5479                      }
5480                    }
5481                  }
5482                }
5483                if (conv !== true) {
5484                  if (conv && s.throws) {
5485                    response = conv(response);
5486                  } else {
5487                    try {
5488                      response = conv(response);
5489                    } catch (e) {
5490                      return {
5491                        state: "parsererror",
5492                        error: conv ? e : "No conversion from " + prev + " to " + current
5493                      };
5494                    }
5495                  }
5496                }
5497              }
5498            }
5499          }
5500          return { state: "success", data: response };
5501        }
5502        jQuery.extend({
5503          // Counter for holding the number of active queries
5504          active: 0,
5505          // Last-Modified header cache for next request
5506          lastModified: {},
5507          etag: {},
5508          ajaxSettings: {
5509            url: location.href,
5510            type: "GET",
5511            isLocal: rlocalProtocol.test(location.protocol),
5512            global: true,
5513            processData: true,
5514            async: true,
5515            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
5516            /*
5517            timeout: 0,
5518            data: null,
5519            dataType: null,
5520            username: null,
5521            password: null,
5522            cache: null,
5523            throws: false,
5524            traditional: false,
5525            headers: {},
5526            */
5527            accepts: {
5528              "*": allTypes,
5529              text: "text/plain",
5530              html: "text/html",
5531              xml: "application/xml, text/xml",
5532              json: "application/json, text/javascript"
5533            },
5534            contents: {
5535              xml: /\bxml\b/,
5536              html: /\bhtml/,
5537              json: /\bjson\b/
5538            },
5539            responseFields: {
5540              xml: "responseXML",
5541              text: "responseText",
5542              json: "responseJSON"
5543            },
5544            // Data converters
5545            // Keys separate source (or catchall "*") and destination types with a single space
5546            converters: {
5547              // Convert anything to text
5548              "* text": String,
5549              // Text to html (true = no transformation)
5550              "text html": true,
5551              // Evaluate text as a json expression
5552              "text json": JSON.parse,
5553              // Parse text as xml
5554              "text xml": jQuery.parseXML
5555            },
5556            // For options that shouldn't be deep extended:
5557            // you can add your own custom options here if
5558            // and when you create one that shouldn't be
5559            // deep extended (see ajaxExtend)
5560            flatOptions: {
5561              url: true,
5562              context: true
5563            }
5564          },
5565          // Creates a full fledged settings object into target
5566          // with both ajaxSettings and settings fields.
5567          // If target is omitted, writes into ajaxSettings.
5568          ajaxSetup: function(target, settings) {
5569            return settings ? (
5570              // Building a settings object
5571              ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings)
5572            ) : (
5573              // Extending ajaxSettings
5574              ajaxExtend(jQuery.ajaxSettings, target)
5575            );
5576          },
5577          ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
5578          ajaxTransport: addToPrefiltersOrTransports(transports),
5579          // Main method
5580          ajax: function(url, options) {
5581            if (typeof url === "object") {
5582              options = url;
5583              url = void 0;
5584            }
5585            options = options || {};
5586            var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i, uncached, s = jQuery.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event, deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = {
5587              readyState: 0,
5588              // Builds headers hashtable if needed
5589              getResponseHeader: function(key) {
5590                var match;
5591                if (completed2) {
5592                  if (!responseHeaders) {
5593                    responseHeaders = {};
5594                    while (match = rheaders.exec(responseHeadersString)) {
5595                      responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
5596                    }
5597                  }
5598                  match = responseHeaders[key.toLowerCase() + " "];
5599                }
5600                return match == null ? null : match.join(", ");
5601              },
5602              // Raw string
5603              getAllResponseHeaders: function() {
5604                return completed2 ? responseHeadersString : null;
5605              },
5606              // Caches the header
5607              setRequestHeader: function(name, value) {
5608                if (completed2 == null) {
5609                  name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;
5610                  requestHeaders[name] = value;
5611                }
5612                return this;
5613              },
5614              // Overrides response content-type header
5615              overrideMimeType: function(type) {
5616                if (completed2 == null) {
5617                  s.mimeType = type;
5618                }
5619                return this;
5620              },
5621              // Status-dependent callbacks
5622              statusCode: function(map) {
5623                var code;
5624                if (map) {
5625                  if (completed2) {
5626                    jqXHR.always(map[jqXHR.status]);
5627                  } else {
5628                    for (code in map) {
5629                      statusCode[code] = [statusCode[code], map[code]];
5630                    }
5631                  }
5632                }
5633                return this;
5634              },
5635              // Cancel the request
5636              abort: function(statusText) {
5637                var finalText = statusText || strAbort;
5638                if (transport) {
5639                  transport.abort(finalText);
5640                }
5641                done(0, finalText);
5642                return this;
5643              }
5644            };
5645            deferred.promise(jqXHR);
5646            s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//");
5647            s.type = options.method || options.type || s.method || s.type;
5648            s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""];
5649            if (s.crossDomain == null) {
5650              urlAnchor = document.createElement("a");
5651              try {
5652                urlAnchor.href = s.url;
5653                urlAnchor.href = urlAnchor.href;
5654                s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
5655              } catch (e) {
5656                s.crossDomain = true;
5657              }
5658            }
5659            if (s.data && s.processData && typeof s.data !== "string") {
5660              s.data = jQuery.param(s.data, s.traditional);
5661            }
5662            inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
5663            if (completed2) {
5664              return jqXHR;
5665            }
5666            fireGlobals = jQuery.event && s.global;
5667            if (fireGlobals && jQuery.active++ === 0) {
5668              jQuery.event.trigger("ajaxStart");
5669            }
5670            s.type = s.type.toUpperCase();
5671            s.hasContent = !rnoContent.test(s.type);
5672            cacheURL = s.url.replace(rhash, "");
5673            if (!s.hasContent) {
5674              uncached = s.url.slice(cacheURL.length);
5675              if (s.data && (s.processData || typeof s.data === "string")) {
5676                cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data;
5677                delete s.data;
5678              }
5679              if (s.cache === false) {
5680                cacheURL = cacheURL.replace(rantiCache, "$1");
5681                uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
5682              }
5683              s.url = cacheURL + uncached;
5684            } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
5685              s.data = s.data.replace(r20, "+");
5686            }
5687            if (s.ifModified) {
5688              if (jQuery.lastModified[cacheURL]) {
5689                jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
5690              }
5691              if (jQuery.etag[cacheURL]) {
5692                jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
5693              }
5694            }
5695            if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
5696              jqXHR.setRequestHeader("Content-Type", s.contentType);
5697            }
5698            jqXHR.setRequestHeader(
5699              "Accept",
5700              s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]
5701            );
5702            for (i in s.headers) {
5703              jqXHR.setRequestHeader(i, s.headers[i]);
5704            }
5705            if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) {
5706              return jqXHR.abort();
5707            }
5708            strAbort = "abort";
5709            completeDeferred.add(s.complete);
5710            jqXHR.done(s.success);
5711            jqXHR.fail(s.error);
5712            transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);
5713            if (!transport) {
5714              done(-1, "No Transport");
5715            } else {
5716              jqXHR.readyState = 1;
5717              if (fireGlobals) {
5718                globalEventContext.trigger("ajaxSend", [jqXHR, s]);
5719              }
5720              if (completed2) {
5721                return jqXHR;
5722              }
5723              if (s.async && s.timeout > 0) {
5724                timeoutTimer = window2.setTimeout(function() {
5725                  jqXHR.abort("timeout");
5726                }, s.timeout);
5727              }
5728              try {
5729                completed2 = false;
5730                transport.send(requestHeaders, done);
5731              } catch (e) {
5732                if (completed2) {
5733                  throw e;
5734                }
5735                done(-1, e);
5736              }
5737            }
5738            function done(status, nativeStatusText, responses, headers) {
5739              var isSuccess, success, error, response, modified, statusText = nativeStatusText;
5740              if (completed2) {
5741                return;
5742              }
5743              completed2 = true;
5744              if (timeoutTimer) {
5745                window2.clearTimeout(timeoutTimer);
5746              }
5747              transport = void 0;
5748              responseHeadersString = headers || "";
5749              jqXHR.readyState = status > 0 ? 4 : 0;
5750              isSuccess = status >= 200 && status < 300 || status === 304;
5751              if (responses) {
5752                response = ajaxHandleResponses(s, jqXHR, responses);
5753              }
5754              if (!isSuccess && jQuery.inArray("script", s.dataTypes) > -1) {
5755                s.converters["text script"] = function() {
5756                };
5757              }
5758              response = ajaxConvert(s, response, jqXHR, isSuccess);
5759              if (isSuccess) {
5760                if (s.ifModified) {
5761                  modified = jqXHR.getResponseHeader("Last-Modified");
5762                  if (modified) {
5763                    jQuery.lastModified[cacheURL] = modified;
5764                  }
5765                  modified = jqXHR.getResponseHeader("etag");
5766                  if (modified) {
5767                    jQuery.etag[cacheURL] = modified;
5768                  }
5769                }
5770                if (status === 204 || s.type === "HEAD") {
5771                  statusText = "nocontent";
5772                } else if (status === 304) {
5773                  statusText = "notmodified";
5774                } else {
5775                  statusText = response.state;
5776                  success = response.data;
5777                  error = response.error;
5778                  isSuccess = !error;
5779                }
5780              } else {
5781                error = statusText;
5782                if (status || !statusText) {
5783                  statusText = "error";
5784                  if (status < 0) {
5785                    status = 0;
5786                  }
5787                }
5788              }
5789              jqXHR.status = status;
5790              jqXHR.statusText = (nativeStatusText || statusText) + "";
5791              if (isSuccess) {
5792                deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
5793              } else {
5794                deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
5795              }
5796              jqXHR.statusCode(statusCode);
5797              statusCode = void 0;
5798              if (fireGlobals) {
5799                globalEventContext.trigger(
5800                  isSuccess ? "ajaxSuccess" : "ajaxError",
5801                  [jqXHR, s, isSuccess ? success : error]
5802                );
5803              }
5804              completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
5805              if (fireGlobals) {
5806                globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
5807                if (!--jQuery.active) {
5808                  jQuery.event.trigger("ajaxStop");
5809                }
5810              }
5811            }
5812            return jqXHR;
5813          },
5814          getJSON: function(url, data, callback) {
5815            return jQuery.get(url, data, callback, "json");
5816          },
5817          getScript: function(url, callback) {
5818            return jQuery.get(url, void 0, callback, "script");
5819          }
5820        });
5821        jQuery.each(["get", "post"], function(_i, method) {
5822          jQuery[method] = function(url, data, callback, type) {
5823            if (isFunction(data)) {
5824              type = type || callback;
5825              callback = data;
5826              data = void 0;
5827            }
5828            return jQuery.ajax(jQuery.extend({
5829              url,
5830              type: method,
5831              dataType: type,
5832              data,
5833              success: callback
5834            }, jQuery.isPlainObject(url) && url));
5835          };
5836        });
5837        jQuery.ajaxPrefilter(function(s) {
5838          var i;
5839          for (i in s.headers) {
5840            if (i.toLowerCase() === "content-type") {
5841              s.contentType = s.headers[i] || "";
5842            }
5843          }
5844        });
5845        jQuery._evalUrl = function(url, options, doc) {
5846          return jQuery.ajax({
5847            url,
5848            // Make this explicit, since user can override this through ajaxSetup (#11264)
5849            type: "GET",
5850            dataType: "script",
5851            cache: true,
5852            async: false,
5853            global: false,
5854            // Only evaluate the response if it is successful (gh-4126)
5855            // dataFilter is not invoked for failure responses, so using it instead
5856            // of the default converter is kludgy but it works.
5857            converters: {
5858              "text script": function() {
5859              }
5860            },
5861            dataFilter: function(response) {
5862              jQuery.globalEval(response, options, doc);
5863            }
5864          });
5865        };
5866        jQuery.fn.extend({
5867          wrapAll: function(html) {
5868            var wrap;
5869            if (this[0]) {
5870              if (isFunction(html)) {
5871                html = html.call(this[0]);
5872              }
5873              wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);
5874              if (this[0].parentNode) {
5875                wrap.insertBefore(this[0]);
5876              }
5877              wrap.map(function() {
5878                var elem = this;
5879                while (elem.firstElementChild) {
5880                  elem = elem.firstElementChild;
5881                }
5882                return elem;
5883              }).append(this);
5884            }
5885            return this;
5886          },
5887          wrapInner: function(html) {
5888            if (isFunction(html)) {
5889              return this.each(function(i) {
5890                jQuery(this).wrapInner(html.call(this, i));
5891              });
5892            }
5893            return this.each(function() {
5894              var self2 = jQuery(this), contents = self2.contents();
5895              if (contents.length) {
5896                contents.wrapAll(html);
5897              } else {
5898                self2.append(html);
5899              }
5900            });
5901          },
5902          wrap: function(html) {
5903            var htmlIsFunction = isFunction(html);
5904            return this.each(function(i) {
5905              jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);
5906            });
5907          },
5908          unwrap: function(selector) {
5909            this.parent(selector).not("body").each(function() {
5910              jQuery(this).replaceWith(this.childNodes);
5911            });
5912            return this;
5913          }
5914        });
5915        jQuery.expr.pseudos.hidden = function(elem) {
5916          return !jQuery.expr.pseudos.visible(elem);
5917        };
5918        jQuery.expr.pseudos.visible = function(elem) {
5919          return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
5920        };
5921        jQuery.ajaxSettings.xhr = function() {
5922          try {
5923            return new window2.XMLHttpRequest();
5924          } catch (e) {
5925          }
5926        };
5927        var xhrSuccessStatus = {
5928          // File protocol always yields status code 0, assume 200
5929          0: 200,
5930          // Support: IE <=9 only
5931          // #1450: sometimes IE returns 1223 when it should be 204
5932          1223: 204
5933        }, xhrSupported = jQuery.ajaxSettings.xhr();
5934        support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
5935        support.ajax = xhrSupported = !!xhrSupported;
5936        jQuery.ajaxTransport(function(options) {
5937          var callback, errorCallback;
5938          if (support.cors || xhrSupported && !options.crossDomain) {
5939            return {
5940              send: function(headers, complete) {
5941                var i, xhr = options.xhr();
5942                xhr.open(
5943                  options.type,
5944                  options.url,
5945                  options.async,
5946                  options.username,
5947                  options.password
5948                );
5949                if (options.xhrFields) {
5950                  for (i in options.xhrFields) {
5951                    xhr[i] = options.xhrFields[i];
5952                  }
5953                }
5954                if (options.mimeType && xhr.overrideMimeType) {
5955                  xhr.overrideMimeType(options.mimeType);
5956                }
5957                if (!options.crossDomain && !headers["X-Requested-With"]) {
5958                  headers["X-Requested-With"] = "XMLHttpRequest";
5959                }
5960                for (i in headers) {
5961                  xhr.setRequestHeader(i, headers[i]);
5962                }
5963                callback = function(type) {
5964                  return function() {
5965                    if (callback) {
5966                      callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
5967                      if (type === "abort") {
5968                        xhr.abort();
5969                      } else if (type === "error") {
5970                        if (typeof xhr.status !== "number") {
5971                          complete(0, "error");
5972                        } else {
5973                          complete(
5974                            // File: protocol always yields status 0; see #8605, #14207
5975                            xhr.status,
5976                            xhr.statusText
5977                          );
5978                        }
5979                      } else {
5980                        complete(
5981                          xhrSuccessStatus[xhr.status] || xhr.status,
5982                          xhr.statusText,
5983                          // Support: IE <=9 only
5984                          // IE9 has no XHR2 but throws on binary (trac-11426)
5985                          // For XHR2 non-text, let the caller handle it (gh-2498)
5986                          (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText },
5987                          xhr.getAllResponseHeaders()
5988                        );
5989                      }
5990                    }
5991                  };
5992                };
5993                xhr.onload = callback();
5994                errorCallback = xhr.onerror = xhr.ontimeout = callback("error");
5995                if (xhr.onabort !== void 0) {
5996                  xhr.onabort = errorCallback;
5997                } else {
5998                  xhr.onreadystatechange = function() {
5999                    if (xhr.readyState === 4) {
6000                      window2.setTimeout(function() {
6001                        if (callback) {
6002                          errorCallback();
6003                        }
6004                      });
6005                    }
6006                  };
6007                }
6008                callback = callback("abort");
6009                try {
6010                  xhr.send(options.hasContent && options.data || null);
6011                } catch (e) {
6012                  if (callback) {
6013                    throw e;
6014                  }
6015                }
6016              },
6017              abort: function() {
6018                if (callback) {
6019                  callback();
6020                }
6021              }
6022            };
6023          }
6024        });
6025        jQuery.ajaxPrefilter(function(s) {
6026          if (s.crossDomain) {
6027            s.contents.script = false;
6028          }
6029        });
6030        jQuery.ajaxSetup({
6031          accepts: {
6032            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
6033          },
6034          contents: {
6035            script: /\b(?:java|ecma)script\b/
6036          },
6037          converters: {
6038            "text script": function(text) {
6039              jQuery.globalEval(text);
6040              return text;
6041            }
6042          }
6043        });
6044        jQuery.ajaxPrefilter("script", function(s) {
6045          if (s.cache === void 0) {
6046            s.cache = false;
6047          }
6048          if (s.crossDomain) {
6049            s.type = "GET";
6050          }
6051        });
6052        jQuery.ajaxTransport("script", function(s) {
6053          if (s.crossDomain || s.scriptAttrs) {
6054            var script, callback;
6055            return {
6056              send: function(_, complete) {
6057                script = jQuery("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) {
6058                  script.remove();
6059                  callback = null;
6060                  if (evt) {
6061                    complete(evt.type === "error" ? 404 : 200, evt.type);
6062                  }
6063                });
6064                document.head.appendChild(script[0]);
6065              },
6066              abort: function() {
6067                if (callback) {
6068                  callback();
6069                }
6070              }
6071            };
6072          }
6073        });
6074        var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/;
6075        jQuery.ajaxSetup({
6076          jsonp: "callback",
6077          jsonpCallback: function() {
6078            var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce.guid++;
6079            this[callback] = true;
6080            return callback;
6081          }
6082        });
6083        jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) {
6084          var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data");
6085          if (jsonProp || s.dataTypes[0] === "jsonp") {
6086            callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
6087            if (jsonProp) {
6088              s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
6089            } else if (s.jsonp !== false) {
6090              s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
6091            }
6092            s.converters["script json"] = function() {
6093              if (!responseContainer) {
6094                jQuery.error(callbackName + " was not called");
6095              }
6096              return responseContainer[0];
6097            };
6098            s.dataTypes[0] = "json";
6099            overwritten = window2[callbackName];
6100            window2[callbackName] = function() {
6101              responseContainer = arguments;
6102            };
6103            jqXHR.always(function() {
6104              if (overwritten === void 0) {
6105                jQuery(window2).removeProp(callbackName);
6106              } else {
6107                window2[callbackName] = overwritten;
6108              }
6109              if (s[callbackName]) {
6110                s.jsonpCallback = originalSettings.jsonpCallback;
6111                oldCallbacks.push(callbackName);
6112              }
6113              if (responseContainer && isFunction(overwritten)) {
6114                overwritten(responseContainer[0]);
6115              }
6116              responseContainer = overwritten = void 0;
6117            });
6118            return "script";
6119          }
6120        });
6121        support.createHTMLDocument = function() {
6122          var body = document.implementation.createHTMLDocument("").body;
6123          body.innerHTML = "<form></form><form></form>";
6124          return body.childNodes.length === 2;
6125        }();
6126        jQuery.parseHTML = function(data, context, keepScripts) {
6127          if (typeof data !== "string") {
6128            return [];
6129          }
6130          if (typeof context === "boolean") {
6131            keepScripts = context;
6132            context = false;
6133          }
6134          var base, parsed, scripts;
6135          if (!context) {
6136            if (support.createHTMLDocument) {
6137              context = document.implementation.createHTMLDocument("");
6138              base = context.createElement("base");
6139              base.href = document.location.href;
6140              context.head.appendChild(base);
6141            } else {
6142              context = document;
6143            }
6144          }
6145          parsed = rsingleTag.exec(data);
6146          scripts = !keepScripts && [];
6147          if (parsed) {
6148            return [context.createElement(parsed[1])];
6149          }
6150          parsed = buildFragment([data], context, scripts);
6151          if (scripts && scripts.length) {
6152            jQuery(scripts).remove();
6153          }
6154          return jQuery.merge([], parsed.childNodes);
6155        };
6156        jQuery.fn.load = function(url, params, callback) {
6157          var selector, type, response, self2 = this, off = url.indexOf(" ");
6158          if (off > -1) {
6159            selector = stripAndCollapse(url.slice(off));
6160            url = url.slice(0, off);
6161          }
6162          if (isFunction(params)) {
6163            callback = params;
6164            params = void 0;
6165          } else if (params && typeof params === "object") {
6166            type = "POST";
6167          }
6168          if (self2.length > 0) {
6169            jQuery.ajax({
6170              url,
6171              // If "type" variable is undefined, then "GET" method will be used.
6172              // Make value of this field explicit since
6173              // user can override it through ajaxSetup method
6174              type: type || "GET",
6175              dataType: "html",
6176              data: params
6177            }).done(function(responseText) {
6178              response = arguments;
6179              self2.html(selector ? (
6180                // If a selector was specified, locate the right elements in a dummy div
6181                // Exclude scripts to avoid IE 'Permission Denied' errors
6182                jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector)
6183              ) : (
6184                // Otherwise use the full result
6185                responseText
6186              ));
6187            }).always(callback && function(jqXHR, status) {
6188              self2.each(function() {
6189                callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
6190              });
6191            });
6192          }
6193          return this;
6194        };
6195        jQuery.expr.pseudos.animated = function(elem) {
6196          return jQuery.grep(jQuery.timers, function(fn) {
6197            return elem === fn.elem;
6198          }).length;
6199        };
6200        jQuery.offset = {
6201          setOffset: function(elem, options, i) {
6202            var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css(elem, "position"), curElem = jQuery(elem), props = {};
6203            if (position === "static") {
6204              elem.style.position = "relative";
6205            }
6206            curOffset = curElem.offset();
6207            curCSSTop = jQuery.css(elem, "top");
6208            curCSSLeft = jQuery.css(elem, "left");
6209            calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
6210            if (calculatePosition) {
6211              curPosition = curElem.position();
6212              curTop = curPosition.top;
6213              curLeft = curPosition.left;
6214            } else {
6215              curTop = parseFloat(curCSSTop) || 0;
6216              curLeft = parseFloat(curCSSLeft) || 0;
6217            }
6218            if (isFunction(options)) {
6219              options = options.call(elem, i, jQuery.extend({}, curOffset));
6220            }
6221            if (options.top != null) {
6222              props.top = options.top - curOffset.top + curTop;
6223            }
6224            if (options.left != null) {
6225              props.left = options.left - curOffset.left + curLeft;
6226            }
6227            if ("using" in options) {
6228              options.using.call(elem, props);
6229            } else {
6230              if (typeof props.top === "number") {
6231                props.top += "px";
6232              }
6233              if (typeof props.left === "number") {
6234                props.left += "px";
6235              }
6236              curElem.css(props);
6237            }
6238          }
6239        };
6240        jQuery.fn.extend({
6241          // offset() relates an element's border box to the document origin
6242          offset: function(options) {
6243            if (arguments.length) {
6244              return options === void 0 ? this : this.each(function(i) {
6245                jQuery.offset.setOffset(this, options, i);
6246              });
6247            }
6248            var rect, win, elem = this[0];
6249            if (!elem) {
6250              return;
6251            }
6252            if (!elem.getClientRects().length) {
6253              return { top: 0, left: 0 };
6254            }
6255            rect = elem.getBoundingClientRect();
6256            win = elem.ownerDocument.defaultView;
6257            return {
6258              top: rect.top + win.pageYOffset,
6259              left: rect.left + win.pageXOffset
6260            };
6261          },
6262          // position() relates an element's margin box to its offset parent's padding box
6263          // This corresponds to the behavior of CSS absolute positioning
6264          position: function() {
6265            if (!this[0]) {
6266              return;
6267            }
6268            var offsetParent, offset, doc, elem = this[0], parentOffset = { top: 0, left: 0 };
6269            if (jQuery.css(elem, "position") === "fixed") {
6270              offset = elem.getBoundingClientRect();
6271            } else {
6272              offset = this.offset();
6273              doc = elem.ownerDocument;
6274              offsetParent = elem.offsetParent || doc.documentElement;
6275              while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, "position") === "static") {
6276                offsetParent = offsetParent.parentNode;
6277              }
6278              if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
6279                parentOffset = jQuery(offsetParent).offset();
6280                parentOffset.top += jQuery.css(offsetParent, "borderTopWidth", true);
6281                parentOffset.left += jQuery.css(offsetParent, "borderLeftWidth", true);
6282              }
6283            }
6284            return {
6285              top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true),
6286              left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true)
6287            };
6288          },
6289          // This method will return documentElement in the following cases:
6290          // 1) For the element inside the iframe without offsetParent, this method will return
6291          //    documentElement of the parent window
6292          // 2) For the hidden or detached element
6293          // 3) For body or html element, i.e. in case of the html node - it will return itself
6294          //
6295          // but those exceptions were never presented as a real life use-cases
6296          // and might be considered as more preferable results.
6297          //
6298          // This logic, however, is not guaranteed and can change at any point in the future
6299          offsetParent: function() {
6300            return this.map(function() {
6301              var offsetParent = this.offsetParent;
6302              while (offsetParent && jQuery.css(offsetParent, "position") === "static") {
6303                offsetParent = offsetParent.offsetParent;
6304              }
6305              return offsetParent || documentElement;
6306            });
6307          }
6308        });
6309        jQuery.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) {
6310          var top = "pageYOffset" === prop;
6311          jQuery.fn[method] = function(val) {
6312            return access(this, function(elem, method2, val2) {
6313              var win;
6314              if (isWindow(elem)) {
6315                win = elem;
6316              } else if (elem.nodeType === 9) {
6317                win = elem.defaultView;
6318              }
6319              if (val2 === void 0) {
6320                return win ? win[prop] : elem[method2];
6321              }
6322              if (win) {
6323                win.scrollTo(
6324                  !top ? val2 : win.pageXOffset,
6325                  top ? val2 : win.pageYOffset
6326                );
6327              } else {
6328                elem[method2] = val2;
6329              }
6330            }, method, val, arguments.length);
6331          };
6332        });
6333        jQuery.each(["top", "left"], function(_i, prop) {
6334          jQuery.cssHooks[prop] = addGetHookIf(
6335            support.pixelPosition,
6336            function(elem, computed) {
6337              if (computed) {
6338                computed = curCSS(elem, prop);
6339                return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed;
6340              }
6341            }
6342          );
6343        });
6344        jQuery.each({ Height: "height", Width: "width" }, function(name, type) {
6345          jQuery.each(
6346            { padding: "inner" + name, content: type, "": "outer" + name },
6347            function(defaultExtra, funcName) {
6348              jQuery.fn[funcName] = function(margin, value) {
6349                var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
6350                return access(this, function(elem, type2, value2) {
6351                  var doc;
6352                  if (isWindow(elem)) {
6353                    return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name];
6354                  }
6355                  if (elem.nodeType === 9) {
6356                    doc = elem.documentElement;
6357                    return Math.max(
6358                      elem.body["scroll" + name],
6359                      doc["scroll" + name],
6360                      elem.body["offset" + name],
6361                      doc["offset" + name],
6362                      doc["client" + name]
6363                    );
6364                  }
6365                  return value2 === void 0 ? (
6366                    // Get width or height on the element, requesting but not forcing parseFloat
6367                    jQuery.css(elem, type2, extra)
6368                  ) : (
6369                    // Set width or height on the element
6370                    jQuery.style(elem, type2, value2, extra)
6371                  );
6372                }, type, chainable ? margin : void 0, chainable);
6373              };
6374            }
6375          );
6376        });
6377        jQuery.each([
6378          "ajaxStart",
6379          "ajaxStop",
6380          "ajaxComplete",
6381          "ajaxError",
6382          "ajaxSuccess",
6383          "ajaxSend"
6384        ], function(_i, type) {
6385          jQuery.fn[type] = function(fn) {
6386            return this.on(type, fn);
6387          };
6388        });
6389        jQuery.fn.extend({
6390          bind: function(types, data, fn) {
6391            return this.on(types, null, data, fn);
6392          },
6393          unbind: function(types, fn) {
6394            return this.off(types, null, fn);
6395          },
6396          delegate: function(selector, types, data, fn) {
6397            return this.on(types, selector, data, fn);
6398          },
6399          undelegate: function(selector, types, fn) {
6400            return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn);
6401          },
6402          hover: function(fnOver, fnOut) {
6403            return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
6404          }
6405        });
6406        jQuery.each(
6407          "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),
6408          function(_i, name) {
6409            jQuery.fn[name] = function(data, fn) {
6410              return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
6411            };
6412          }
6413        );
6414        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
6415        jQuery.proxy = function(fn, context) {
6416          var tmp, args, proxy;
6417          if (typeof context === "string") {
6418            tmp = fn[context];
6419            context = fn;
6420            fn = tmp;
6421          }
6422          if (!isFunction(fn)) {
6423            return void 0;
6424          }
6425          args = slice.call(arguments, 2);
6426          proxy = function() {
6427            return fn.apply(context || this, args.concat(slice.call(arguments)));
6428          };
6429          proxy.guid = fn.guid = fn.guid || jQuery.guid++;
6430          return proxy;
6431        };
6432        jQuery.holdReady = function(hold) {
6433          if (hold) {
6434            jQuery.readyWait++;
6435          } else {
6436            jQuery.ready(true);
6437          }
6438        };
6439        jQuery.isArray = Array.isArray;
6440        jQuery.parseJSON = JSON.parse;
6441        jQuery.nodeName = nodeName;
6442        jQuery.isFunction = isFunction;
6443        jQuery.isWindow = isWindow;
6444        jQuery.camelCase = camelCase;
6445        jQuery.type = toType;
6446        jQuery.now = Date.now;
6447        jQuery.isNumeric = function(obj) {
6448          var type = jQuery.type(obj);
6449          return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("")
6450          // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
6451          // subtraction forces infinities to NaN
6452          !isNaN(obj - parseFloat(obj));
6453        };
6454        jQuery.trim = function(text) {
6455          return text == null ? "" : (text + "").replace(rtrim, "");
6456        };
6457        if (typeof define === "function" && define.amd) {
6458          define("jquery", [], function() {
6459            return jQuery;
6460          });
6461        }
6462        var _jQuery = window2.jQuery, _$ = window2.$;
6463        jQuery.noConflict = function(deep) {
6464          if (window2.$ === jQuery) {
6465            window2.$ = _$;
6466          }
6467          if (deep && window2.jQuery === jQuery) {
6468            window2.jQuery = _jQuery;
6469          }
6470          return jQuery;
6471        };
6472        if (typeof noGlobal === "undefined") {
6473          window2.jQuery = window2.$ = jQuery;
6474        }
6475        return jQuery;
6476      });
6477    }
6478  });
6479
6480  
6480// app/javascript/jquery.js
6481  function defineJQuery(target) {
6482    if (typeof target !== "undefined" && target.$ === void 0) {
6483      target.$ = target.jQuery = target.jquery = import_jquery.default;
6484    }
6485  }
6486  var import_jquery;
6487  var init_jquery = __esm({
6488    "app/javascript/jquery.js"() {
6489      import_jquery = __toESM(require_jquery());
6490      if (typeof window !== "undefined") {
6491        defineJQuery(window);
6492      }
6493      if (typeof window !== "undefined") {
6494        defineJQuery(window);
6495      }
6496    }
6497  });
6498
6499  
vendor: 108,295 bytes, lines 6499-9488
6499// node_modules/chroma-js/chroma.js
6500  var require_chroma = __commonJS({
6501    "node_modules/chroma-js/chroma.js"(exports, module) {
6502      init_define_process();
6503      init_jquery();
6504      (function(global2, factory) {
6505        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.chroma = factory());
6506      })(exports, function() {
6507        "use strict";
6508        var limit$2 = function(x, min2, max2) {
6509          if (min2 === void 0) min2 = 0;
6510          if (max2 === void 0) max2 = 1;
6511          return x < min2 ? min2 : x > max2 ? max2 : x;
6512        };
6513        var limit$1 = limit$2;
6514        var clip_rgb$3 = function(rgb2) {
6515          rgb2._clipped = false;
6516          rgb2._unclipped = rgb2.slice(0);
6517          for (var i2 = 0; i2 <= 3; i2++) {
6518            if (i2 < 3) {
6519              if (rgb2[i2] < 0 || rgb2[i2] > 255) {
6520                rgb2._clipped = true;
6521              }
6522              rgb2[i2] = limit$1(rgb2[i2], 0, 255);
6523            } else if (i2 === 3) {
6524              rgb2[i2] = limit$1(rgb2[i2], 0, 1);
6525            }
6526          }
6527          return rgb2;
6528        };
6529        var classToType = {};
6530        for (var i$1 = 0, list$1 = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Undefined", "Null"]; i$1 < list$1.length; i$1 += 1) {
6531          var name = list$1[i$1];
6532          classToType["[object " + name + "]"] = name.toLowerCase();
6533        }
6534        var type$p = function(obj) {
6535          return classToType[Object.prototype.toString.call(obj)] || "object";
6536        };
6537        var type$o = type$p;
6538        var unpack$B = function(args, keyOrder) {
6539          if (keyOrder === void 0) keyOrder = null;
6540          if (args.length >= 3) {
6541            return Array.prototype.slice.call(args);
6542          }
6543          if (type$o(args[0]) == "object" && keyOrder) {
6544            return keyOrder.split("").filter(function(k) {
6545              return args[0][k] !== void 0;
6546            }).map(function(k) {
6547              return args[0][k];
6548            });
6549          }
6550          return args[0];
6551        };
6552        var type$n = type$p;
6553        var last$4 = function(args) {
6554          if (args.length < 2) {
6555            return null;
6556          }
6557          var l = args.length - 1;
6558          if (type$n(args[l]) == "string") {
6559            return args[l].toLowerCase();
6560          }
6561          return null;
6562        };
6563        var PI$2 = Math.PI;
6564        var utils = {
6565          clip_rgb: clip_rgb$3,
6566          limit: limit$2,
6567          type: type$p,
6568          unpack: unpack$B,
6569          last: last$4,
6570          PI: PI$2,
6571          TWOPI: PI$2 * 2,
6572          PITHIRD: PI$2 / 3,
6573          DEG2RAD: PI$2 / 180,
6574          RAD2DEG: 180 / PI$2
6575        };
6576        var input$h = {
6577          format: {},
6578          autodetect: []
6579        };
6580        var last$3 = utils.last;
6581        var clip_rgb$2 = utils.clip_rgb;
6582        var type$m = utils.type;
6583        var _input = input$h;
6584        var Color$D = function Color2() {
6585          var args = [], len = arguments.length;
6586          while (len--) args[len] = arguments[len];
6587          var me = this;
6588          if (type$m(args[0]) === "object" && args[0].constructor && args[0].constructor === this.constructor) {
6589            return args[0];
6590          }
6591          var mode = last$3(args);
6592          var autodetect = false;
6593          if (!mode) {
6594            autodetect = true;
6595            if (!_input.sorted) {
6596              _input.autodetect = _input.autodetect.sort(function(a, b) {
6597                return b.p - a.p;
6598              });
6599              _input.sorted = true;
6600            }
6601            for (var i2 = 0, list2 = _input.autodetect; i2 < list2.length; i2 += 1) {
6602              var chk = list2[i2];
6603              mode = chk.test.apply(chk, args);
6604              if (mode) {
6605                break;
6606              }
6607            }
6608          }
6609          if (_input.format[mode]) {
6610            var rgb2 = _input.format[mode].apply(null, autodetect ? args : args.slice(0, -1));
6611            me._rgb = clip_rgb$2(rgb2);
6612          } else {
6613            throw new Error("unknown format: " + args);
6614          }
6615          if (me._rgb.length === 3) {
6616            me._rgb.push(1);
6617          }
6618        };
6619        Color$D.prototype.toString = function toString() {
6620          if (type$m(this.hex) == "function") {
6621            return this.hex();
6622          }
6623          return "[" + this._rgb.join(",") + "]";
6624        };
6625        var Color_1 = Color$D;
6626        var chroma$k = function() {
6627          var args = [], len = arguments.length;
6628          while (len--) args[len] = arguments[len];
6629          return new (Function.prototype.bind.apply(chroma$k.Color, [null].concat(args)))();
6630        };
6631        chroma$k.Color = Color_1;
6632        chroma$k.version = "2.4.2";
6633        var chroma_1 = chroma$k;
6634        var unpack$A = utils.unpack;
6635        var max$2 = Math.max;
6636        var rgb2cmyk$1 = function() {
6637          var args = [], len = arguments.length;
6638          while (len--) args[len] = arguments[len];
6639          var ref = unpack$A(args, "rgb");
6640          var r = ref[0];
6641          var g = ref[1];
6642          var b = ref[2];
6643          r = r / 255;
6644          g = g / 255;
6645          b = b / 255;
6646          var k = 1 - max$2(r, max$2(g, b));
6647          var f = k < 1 ? 1 / (1 - k) : 0;
6648          var c = (1 - r - k) * f;
6649          var m = (1 - g - k) * f;
6650          var y = (1 - b - k) * f;
6651          return [c, m, y, k];
6652        };
6653        var rgb2cmyk_1 = rgb2cmyk$1;
6654        var unpack$z = utils.unpack;
6655        var cmyk2rgb = function() {
6656          var args = [], len = arguments.length;
6657          while (len--) args[len] = arguments[len];
6658          args = unpack$z(args, "cmyk");
6659          var c = args[0];
6660          var m = args[1];
6661          var y = args[2];
6662          var k = args[3];
6663          var alpha = args.length > 4 ? args[4] : 1;
6664          if (k === 1) {
6665            return [0, 0, 0, alpha];
6666          }
6667          return [
6668            c >= 1 ? 0 : 255 * (1 - c) * (1 - k),
6669            // r
6670            m >= 1 ? 0 : 255 * (1 - m) * (1 - k),
6671            // g
6672            y >= 1 ? 0 : 255 * (1 - y) * (1 - k),
6673            // b
6674            alpha
6675          ];
6676        };
6677        var cmyk2rgb_1 = cmyk2rgb;
6678        var chroma$j = chroma_1;
6679        var Color$C = Color_1;
6680        var input$g = input$h;
6681        var unpack$y = utils.unpack;
6682        var type$l = utils.type;
6683        var rgb2cmyk = rgb2cmyk_1;
6684        Color$C.prototype.cmyk = function() {
6685          return rgb2cmyk(this._rgb);
6686        };
6687        chroma$j.cmyk = function() {
6688          var args = [], len = arguments.length;
6689          while (len--) args[len] = arguments[len];
6690          return new (Function.prototype.bind.apply(Color$C, [null].concat(args, ["cmyk"])))();
6691        };
6692        input$g.format.cmyk = cmyk2rgb_1;
6693        input$g.autodetect.push({
6694          p: 2,
6695          test: function() {
6696            var args = [], len = arguments.length;
6697            while (len--) args[len] = arguments[len];
6698            args = unpack$y(args, "cmyk");
6699            if (type$l(args) === "array" && args.length === 4) {
6700              return "cmyk";
6701            }
6702          }
6703        });
6704        var unpack$x = utils.unpack;
6705        var last$2 = utils.last;
6706        var rnd = function(a) {
6707          return Math.round(a * 100) / 100;
6708        };
6709        var hsl2css$1 = function() {
6710          var args = [], len = arguments.length;
6711          while (len--) args[len] = arguments[len];
6712          var hsla = unpack$x(args, "hsla");
6713          var mode = last$2(args) || "lsa";
6714          hsla[0] = rnd(hsla[0] || 0);
6715          hsla[1] = rnd(hsla[1] * 100) + "%";
6716          hsla[2] = rnd(hsla[2] * 100) + "%";
6717          if (mode === "hsla" || hsla.length > 3 && hsla[3] < 1) {
6718            hsla[3] = hsla.length > 3 ? hsla[3] : 1;
6719            mode = "hsla";
6720          } else {
6721            hsla.length = 3;
6722          }
6723          return mode + "(" + hsla.join(",") + ")";
6724        };
6725        var hsl2css_1 = hsl2css$1;
6726        var unpack$w = utils.unpack;
6727        var rgb2hsl$3 = function() {
6728          var args = [], len = arguments.length;
6729          while (len--) args[len] = arguments[len];
6730          args = unpack$w(args, "rgba");
6731          var r = args[0];
6732          var g = args[1];
6733          var b = args[2];
6734          r /= 255;
6735          g /= 255;
6736          b /= 255;
6737          var min2 = Math.min(r, g, b);
6738          var max2 = Math.max(r, g, b);
6739          var l = (max2 + min2) / 2;
6740          var s, h;
6741          if (max2 === min2) {
6742            s = 0;
6743            h = Number.NaN;
6744          } else {
6745            s = l < 0.5 ? (max2 - min2) / (max2 + min2) : (max2 - min2) / (2 - max2 - min2);
6746          }
6747          if (r == max2) {
6748            h = (g - b) / (max2 - min2);
6749          } else if (g == max2) {
6750            h = 2 + (b - r) / (max2 - min2);
6751          } else if (b == max2) {
6752            h = 4 + (r - g) / (max2 - min2);
6753          }
6754          h *= 60;
6755          if (h < 0) {
6756            h += 360;
6757          }
6758          if (args.length > 3 && args[3] !== void 0) {
6759            return [h, s, l, args[3]];
6760          }
6761          return [h, s, l];
6762        };
6763        var rgb2hsl_1 = rgb2hsl$3;
6764        var unpack$v = utils.unpack;
6765        var last$1 = utils.last;
6766        var hsl2css = hsl2css_1;
6767        var rgb2hsl$2 = rgb2hsl_1;
6768        var round$6 = Math.round;
6769        var rgb2css$1 = function() {
6770          var args = [], len = arguments.length;
6771          while (len--) args[len] = arguments[len];
6772          var rgba = unpack$v(args, "rgba");
6773          var mode = last$1(args) || "rgb";
6774          if (mode.substr(0, 3) == "hsl") {
6775            return hsl2css(rgb2hsl$2(rgba), mode);
6776          }
6777          rgba[0] = round$6(rgba[0]);
6778          rgba[1] = round$6(rgba[1]);
6779          rgba[2] = round$6(rgba[2]);
6780          if (mode === "rgba" || rgba.length > 3 && rgba[3] < 1) {
6781            rgba[3] = rgba.length > 3 ? rgba[3] : 1;
6782            mode = "rgba";
6783          }
6784          return mode + "(" + rgba.slice(0, mode === "rgb" ? 3 : 4).join(",") + ")";
6785        };
6786        var rgb2css_1 = rgb2css$1;
6787        var unpack$u = utils.unpack;
6788        var round$5 = Math.round;
6789        var hsl2rgb$1 = function() {
6790          var assign;
6791          var args = [], len = arguments.length;
6792          while (len--) args[len] = arguments[len];
6793          args = unpack$u(args, "hsl");
6794          var h = args[0];
6795          var s = args[1];
6796          var l = args[2];
6797          var r, g, b;
6798          if (s === 0) {
6799            r = g = b = l * 255;
6800          } else {
6801            var t3 = [0, 0, 0];
6802            var c = [0, 0, 0];
6803            var t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;
6804            var t1 = 2 * l - t2;
6805            var h_ = h / 360;
6806            t3[0] = h_ + 1 / 3;
6807            t3[1] = h_;
6808            t3[2] = h_ - 1 / 3;
6809            for (var i2 = 0; i2 < 3; i2++) {
6810              if (t3[i2] < 0) {
6811                t3[i2] += 1;
6812              }
6813              if (t3[i2] > 1) {
6814                t3[i2] -= 1;
6815              }
6816              if (6 * t3[i2] < 1) {
6817                c[i2] = t1 + (t2 - t1) * 6 * t3[i2];
6818              } else if (2 * t3[i2] < 1) {
6819                c[i2] = t2;
6820              } else if (3 * t3[i2] < 2) {
6821                c[i2] = t1 + (t2 - t1) * (2 / 3 - t3[i2]) * 6;
6822              } else {
6823                c[i2] = t1;
6824              }
6825            }
6826            assign = [round$5(c[0] * 255), round$5(c[1] * 255), round$5(c[2] * 255)], r = assign[0], g = assign[1], b = assign[2];
6827          }
6828          if (args.length > 3) {
6829            return [r, g, b, args[3]];
6830          }
6831          return [r, g, b, 1];
6832        };
6833        var hsl2rgb_1 = hsl2rgb$1;
6834        var hsl2rgb = hsl2rgb_1;
6835        var input$f = input$h;
6836        var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/;
6837        var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/;
6838        var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/;
6839        var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/;
6840        var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/;
6841        var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/;
6842        var round$4 = Math.round;
6843        var css2rgb$1 = function(css) {
6844          css = css.toLowerCase().trim();
6845          var m;
6846          if (input$f.format.named) {
6847            try {
6848              return input$f.format.named(css);
6849            } catch (e) {
6850            }
6851          }
6852          if (m = css.match(RE_RGB)) {
6853            var rgb2 = m.slice(1, 4);
6854            for (var i2 = 0; i2 < 3; i2++) {
6855              rgb2[i2] = +rgb2[i2];
6856            }
6857            rgb2[3] = 1;
6858            return rgb2;
6859          }
6860          if (m = css.match(RE_RGBA)) {
6861            var rgb$1 = m.slice(1, 5);
6862            for (var i$12 = 0; i$12 < 4; i$12++) {
6863              rgb$1[i$12] = +rgb$1[i$12];
6864            }
6865            return rgb$1;
6866          }
6867          if (m = css.match(RE_RGB_PCT)) {
6868            var rgb$2 = m.slice(1, 4);
6869            for (var i$2 = 0; i$2 < 3; i$2++) {
6870              rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);
6871            }
6872            rgb$2[3] = 1;
6873            return rgb$2;
6874          }
6875          if (m = css.match(RE_RGBA_PCT)) {
6876            var rgb$3 = m.slice(1, 5);
6877            for (var i$3 = 0; i$3 < 3; i$3++) {
6878              rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);
6879            }
6880            rgb$3[3] = +rgb$3[3];
6881            return rgb$3;
6882          }
6883          if (m = css.match(RE_HSL)) {
6884            var hsl2 = m.slice(1, 4);
6885            hsl2[1] *= 0.01;
6886            hsl2[2] *= 0.01;
6887            var rgb$4 = hsl2rgb(hsl2);
6888            rgb$4[3] = 1;
6889            return rgb$4;
6890          }
6891          if (m = css.match(RE_HSLA)) {
6892            var hsl$1 = m.slice(1, 4);
6893            hsl$1[1] *= 0.01;
6894            hsl$1[2] *= 0.01;
6895            var rgb$5 = hsl2rgb(hsl$1);
6896            rgb$5[3] = +m[4];
6897            return rgb$5;
6898          }
6899        };
6900        css2rgb$1.test = function(s) {
6901          return RE_RGB.test(s) || RE_RGBA.test(s) || RE_RGB_PCT.test(s) || RE_RGBA_PCT.test(s) || RE_HSL.test(s) || RE_HSLA.test(s);
6902        };
6903        var css2rgb_1 = css2rgb$1;
6904        var chroma$i = chroma_1;
6905        var Color$B = Color_1;
6906        var input$e = input$h;
6907        var type$k = utils.type;
6908        var rgb2css = rgb2css_1;
6909        var css2rgb = css2rgb_1;
6910        Color$B.prototype.css = function(mode) {
6911          return rgb2css(this._rgb, mode);
6912        };
6913        chroma$i.css = function() {
6914          var args = [], len = arguments.length;
6915          while (len--) args[len] = arguments[len];
6916          return new (Function.prototype.bind.apply(Color$B, [null].concat(args, ["css"])))();
6917        };
6918        input$e.format.css = css2rgb;
6919        input$e.autodetect.push({
6920          p: 5,
6921          test: function(h) {
6922            var rest = [], len = arguments.length - 1;
6923            while (len-- > 0) rest[len] = arguments[len + 1];
6924            if (!rest.length && type$k(h) === "string" && css2rgb.test(h)) {
6925              return "css";
6926            }
6927          }
6928        });
6929        var Color$A = Color_1;
6930        var chroma$h = chroma_1;
6931        var input$d = input$h;
6932        var unpack$t = utils.unpack;
6933        input$d.format.gl = function() {
6934          var args = [], len = arguments.length;
6935          while (len--) args[len] = arguments[len];
6936          var rgb2 = unpack$t(args, "rgba");
6937          rgb2[0] *= 255;
6938          rgb2[1] *= 255;
6939          rgb2[2] *= 255;
6940          return rgb2;
6941        };
6942        chroma$h.gl = function() {
6943          var args = [], len = arguments.length;
6944          while (len--) args[len] = arguments[len];
6945          return new (Function.prototype.bind.apply(Color$A, [null].concat(args, ["gl"])))();
6946        };
6947        Color$A.prototype.gl = function() {
6948          var rgb2 = this._rgb;
6949          return [rgb2[0] / 255, rgb2[1] / 255, rgb2[2] / 255, rgb2[3]];
6950        };
6951        var unpack$s = utils.unpack;
6952        var rgb2hcg$1 = function() {
6953          var args = [], len = arguments.length;
6954          while (len--) args[len] = arguments[len];
6955          var ref = unpack$s(args, "rgb");
6956          var r = ref[0];
6957          var g = ref[1];
6958          var b = ref[2];
6959          var min2 = Math.min(r, g, b);
6960          var max2 = Math.max(r, g, b);
6961          var delta = max2 - min2;
6962          var c = delta * 100 / 255;
6963          var _g = min2 / (255 - delta) * 100;
6964          var h;
6965          if (delta === 0) {
6966            h = Number.NaN;
6967          } else {
6968            if (r === max2) {
6969              h = (g - b) / delta;
6970            }
6971            if (g === max2) {
6972              h = 2 + (b - r) / delta;
6973            }
6974            if (b === max2) {
6975              h = 4 + (r - g) / delta;
6976            }
6977            h *= 60;
6978            if (h < 0) {
6979              h += 360;
6980            }
6981          }
6982          return [h, c, _g];
6983        };
6984        var rgb2hcg_1 = rgb2hcg$1;
6985        var unpack$r = utils.unpack;
6986        var floor$3 = Math.floor;
6987        var hcg2rgb = function() {
6988          var assign, assign$1, assign$2, assign$3, assign$4, assign$5;
6989          var args = [], len = arguments.length;
6990          while (len--) args[len] = arguments[len];
6991          args = unpack$r(args, "hcg");
6992          var h = args[0];
6993          var c = args[1];
6994          var _g = args[2];
6995          var r, g, b;
6996          _g = _g * 255;
6997          var _c = c * 255;
6998          if (c === 0) {
6999            r = g = b = _g;
7000          } else {
7001            if (h === 360) {
7002              h = 0;
7003            }
7004            if (h > 360) {
7005              h -= 360;
7006            }
7007            if (h < 0) {
7008              h += 360;
7009            }
7010            h /= 60;
7011            var i2 = floor$3(h);
7012            var f = h - i2;
7013            var p = _g * (1 - c);
7014            var q = p + _c * (1 - f);
7015            var t = p + _c * f;
7016            var v = p + _c;
7017            switch (i2) {
7018              case 0:
7019                assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2];
7020                break;
7021              case 1:
7022                assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2];
7023                break;
7024              case 2:
7025                assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2];
7026                break;
7027              case 3:
7028                assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2];
7029                break;
7030              case 4:
7031                assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2];
7032                break;
7033              case 5:
7034                assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2];
7035                break;
7036            }
7037          }
7038          return [r, g, b, args.length > 3 ? args[3] : 1];
7039        };
7040        var hcg2rgb_1 = hcg2rgb;
7041        var unpack$q = utils.unpack;
7042        var type$j = utils.type;
7043        var chroma$g = chroma_1;
7044        var Color$z = Color_1;
7045        var input$c = input$h;
7046        var rgb2hcg = rgb2hcg_1;
7047        Color$z.prototype.hcg = function() {
7048          return rgb2hcg(this._rgb);
7049        };
7050        chroma$g.hcg = function() {
7051          var args = [], len = arguments.length;
7052          while (len--) args[len] = arguments[len];
7053          return new (Function.prototype.bind.apply(Color$z, [null].concat(args, ["hcg"])))();
7054        };
7055        input$c.format.hcg = hcg2rgb_1;
7056        input$c.autodetect.push({
7057          p: 1,
7058          test: function() {
7059            var args = [], len = arguments.length;
7060            while (len--) args[len] = arguments[len];
7061            args = unpack$q(args, "hcg");
7062            if (type$j(args) === "array" && args.length === 3) {
7063              return "hcg";
7064            }
7065          }
7066        });
7067        var unpack$p = utils.unpack;
7068        var last = utils.last;
7069        var round$3 = Math.round;
7070        var rgb2hex$2 = function() {
7071          var args = [], len = arguments.length;
7072          while (len--) args[len] = arguments[len];
7073          var ref = unpack$p(args, "rgba");
7074          var r = ref[0];
7075          var g = ref[1];
7076          var b = ref[2];
7077          var a = ref[3];
7078          var mode = last(args) || "auto";
7079          if (a === void 0) {
7080            a = 1;
7081          }
7082          if (mode === "auto") {
7083            mode = a < 1 ? "rgba" : "rgb";
7084          }
7085          r = round$3(r);
7086          g = round$3(g);
7087          b = round$3(b);
7088          var u = r << 16 | g << 8 | b;
7089          var str = "000000" + u.toString(16);
7090          str = str.substr(str.length - 6);
7091          var hxa = "0" + round$3(a * 255).toString(16);
7092          hxa = hxa.substr(hxa.length - 2);
7093          switch (mode.toLowerCase()) {
7094            case "rgba":
7095              return "#" + str + hxa;
7096            case "argb":
7097              return "#" + hxa + str;
7098            default:
7099              return "#" + str;
7100          }
7101        };
7102        var rgb2hex_1 = rgb2hex$2;
7103        var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
7104        var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;
7105        var hex2rgb$1 = function(hex) {
7106          if (hex.match(RE_HEX)) {
7107            if (hex.length === 4 || hex.length === 7) {
7108              hex = hex.substr(1);
7109            }
7110            if (hex.length === 3) {
7111              hex = hex.split("");
7112              hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
7113            }
7114            var u = parseInt(hex, 16);
7115            var r = u >> 16;
7116            var g = u >> 8 & 255;
7117            var b = u & 255;
7118            return [r, g, b, 1];
7119          }
7120          if (hex.match(RE_HEXA)) {
7121            if (hex.length === 5 || hex.length === 9) {
7122              hex = hex.substr(1);
7123            }
7124            if (hex.length === 4) {
7125              hex = hex.split("");
7126              hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];
7127            }
7128            var u$1 = parseInt(hex, 16);
7129            var r$1 = u$1 >> 24 & 255;
7130            var g$1 = u$1 >> 16 & 255;
7131            var b$1 = u$1 >> 8 & 255;
7132            var a = Math.round((u$1 & 255) / 255 * 100) / 100;
7133            return [r$1, g$1, b$1, a];
7134          }
7135          throw new Error("unknown hex color: " + hex);
7136        };
7137        var hex2rgb_1 = hex2rgb$1;
7138        var chroma$f = chroma_1;
7139        var Color$y = Color_1;
7140        var type$i = utils.type;
7141        var input$b = input$h;
7142        var rgb2hex$1 = rgb2hex_1;
7143        Color$y.prototype.hex = function(mode) {
7144          return rgb2hex$1(this._rgb, mode);
7145        };
7146        chroma$f.hex = function() {
7147          var args = [], len = arguments.length;
7148          while (len--) args[len] = arguments[len];
7149          return new (Function.prototype.bind.apply(Color$y, [null].concat(args, ["hex"])))();
7150        };
7151        input$b.format.hex = hex2rgb_1;
7152        input$b.autodetect.push({
7153          p: 4,
7154          test: function(h) {
7155            var rest = [], len = arguments.length - 1;
7156            while (len-- > 0) rest[len] = arguments[len + 1];
7157            if (!rest.length && type$i(h) === "string" && [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0) {
7158              return "hex";
7159            }
7160          }
7161        });
7162        var unpack$o = utils.unpack;
7163        var TWOPI$2 = utils.TWOPI;
7164        var min$2 = Math.min;
7165        var sqrt$4 = Math.sqrt;
7166        var acos = Math.acos;
7167        var rgb2hsi$1 = function() {
7168          var args = [], len = arguments.length;
7169          while (len--) args[len] = arguments[len];
7170          var ref = unpack$o(args, "rgb");
7171          var r = ref[0];
7172          var g = ref[1];
7173          var b = ref[2];
7174          r /= 255;
7175          g /= 255;
7176          b /= 255;
7177          var h;
7178          var min_ = min$2(r, g, b);
7179          var i2 = (r + g + b) / 3;
7180          var s = i2 > 0 ? 1 - min_ / i2 : 0;
7181          if (s === 0) {
7182            h = NaN;
7183          } else {
7184            h = (r - g + (r - b)) / 2;
7185            h /= sqrt$4((r - g) * (r - g) + (r - b) * (g - b));
7186            h = acos(h);
7187            if (b > g) {
7188              h = TWOPI$2 - h;
7189            }
7190            h /= TWOPI$2;
7191          }
7192          return [h * 360, s, i2];
7193        };
7194        var rgb2hsi_1 = rgb2hsi$1;
7195        var unpack$n = utils.unpack;
7196        var limit = utils.limit;
7197        var TWOPI$1 = utils.TWOPI;
7198        var PITHIRD = utils.PITHIRD;
7199        var cos$4 = Math.cos;
7200        var hsi2rgb = function() {
7201          var args = [], len = arguments.length;
7202          while (len--) args[len] = arguments[len];
7203          args = unpack$n(args, "hsi");
7204          var h = args[0];
7205          var s = args[1];
7206          var i2 = args[2];
7207          var r, g, b;
7208          if (isNaN(h)) {
7209            h = 0;
7210          }
7211          if (isNaN(s)) {
7212            s = 0;
7213          }
7214          if (h > 360) {
7215            h -= 360;
7216          }
7217          if (h < 0) {
7218            h += 360;
7219          }
7220          h /= 360;
7221          if (h < 1 / 3) {
7222            b = (1 - s) / 3;
7223            r = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3;
7224            g = 1 - (b + r);
7225          } else if (h < 2 / 3) {
7226            h -= 1 / 3;
7227            r = (1 - s) / 3;
7228            g = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3;
7229            b = 1 - (r + g);
7230          } else {
7231            h -= 2 / 3;
7232            g = (1 - s) / 3;
7233            b = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3;
7234            r = 1 - (g + b);
7235          }
7236          r = limit(i2 * r * 3);
7237          g = limit(i2 * g * 3);
7238          b = limit(i2 * b * 3);
7239          return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];
7240        };
7241        var hsi2rgb_1 = hsi2rgb;
7242        var unpack$m = utils.unpack;
7243        var type$h = utils.type;
7244        var chroma$e = chroma_1;
7245        var Color$x = Color_1;
7246        var input$a = input$h;
7247        var rgb2hsi = rgb2hsi_1;
7248        Color$x.prototype.hsi = function() {
7249          return rgb2hsi(this._rgb);
7250        };
7251        chroma$e.hsi = function() {
7252          var args = [], len = arguments.length;
7253          while (len--) args[len] = arguments[len];
7254          return new (Function.prototype.bind.apply(Color$x, [null].concat(args, ["hsi"])))();
7255        };
7256        input$a.format.hsi = hsi2rgb_1;
7257        input$a.autodetect.push({
7258          p: 2,
7259          test: function() {
7260            var args = [], len = arguments.length;
7261            while (len--) args[len] = arguments[len];
7262            args = unpack$m(args, "hsi");
7263            if (type$h(args) === "array" && args.length === 3) {
7264              return "hsi";
7265            }
7266          }
7267        });
7268        var unpack$l = utils.unpack;
7269        var type$g = utils.type;
7270        var chroma$d = chroma_1;
7271        var Color$w = Color_1;
7272        var input$9 = input$h;
7273        var rgb2hsl$1 = rgb2hsl_1;
7274        Color$w.prototype.hsl = function() {
7275          return rgb2hsl$1(this._rgb);
7276        };
7277        chroma$d.hsl = function() {
7278          var args = [], len = arguments.length;
7279          while (len--) args[len] = arguments[len];
7280          return new (Function.prototype.bind.apply(Color$w, [null].concat(args, ["hsl"])))();
7281        };
7282        input$9.format.hsl = hsl2rgb_1;
7283        input$9.autodetect.push({
7284          p: 2,
7285          test: function() {
7286            var args = [], len = arguments.length;
7287            while (len--) args[len] = arguments[len];
7288            args = unpack$l(args, "hsl");
7289            if (type$g(args) === "array" && args.length === 3) {
7290              return "hsl";
7291            }
7292          }
7293        });
7294        var unpack$k = utils.unpack;
7295        var min$1 = Math.min;
7296        var max$1 = Math.max;
7297        var rgb2hsl = function() {
7298          var args = [], len = arguments.length;
7299          while (len--) args[len] = arguments[len];
7300          args = unpack$k(args, "rgb");
7301          var r = args[0];
7302          var g = args[1];
7303          var b = args[2];
7304          var min_ = min$1(r, g, b);
7305          var max_ = max$1(r, g, b);
7306          var delta = max_ - min_;
7307          var h, s, v;
7308          v = max_ / 255;
7309          if (max_ === 0) {
7310            h = Number.NaN;
7311            s = 0;
7312          } else {
7313            s = delta / max_;
7314            if (r === max_) {
7315              h = (g - b) / delta;
7316            }
7317            if (g === max_) {
7318              h = 2 + (b - r) / delta;
7319            }
7320            if (b === max_) {
7321              h = 4 + (r - g) / delta;
7322            }
7323            h *= 60;
7324            if (h < 0) {
7325              h += 360;
7326            }
7327          }
7328          return [h, s, v];
7329        };
7330        var rgb2hsv$1 = rgb2hsl;
7331        var unpack$j = utils.unpack;
7332        var floor$2 = Math.floor;
7333        var hsv2rgb = function() {
7334          var assign, assign$1, assign$2, assign$3, assign$4, assign$5;
7335          var args = [], len = arguments.length;
7336          while (len--) args[len] = arguments[len];
7337          args = unpack$j(args, "hsv");
7338          var h = args[0];
7339          var s = args[1];
7340          var v = args[2];
7341          var r, g, b;
7342          v *= 255;
7343          if (s === 0) {
7344            r = g = b = v;
7345          } else {
7346            if (h === 360) {
7347              h = 0;
7348            }
7349            if (h > 360) {
7350              h -= 360;
7351            }
7352            if (h < 0) {
7353              h += 360;
7354            }
7355            h /= 60;
7356            var i2 = floor$2(h);
7357            var f = h - i2;
7358            var p = v * (1 - s);
7359            var q = v * (1 - s * f);
7360            var t = v * (1 - s * (1 - f));
7361            switch (i2) {
7362              case 0:
7363                assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2];
7364                break;
7365              case 1:
7366                assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2];
7367                break;
7368              case 2:
7369                assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2];
7370                break;
7371              case 3:
7372                assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2];
7373                break;
7374              case 4:
7375                assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2];
7376                break;
7377              case 5:
7378                assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2];
7379                break;
7380            }
7381          }
7382          return [r, g, b, args.length > 3 ? args[3] : 1];
7383        };
7384        var hsv2rgb_1 = hsv2rgb;
7385        var unpack$i = utils.unpack;
7386        var type$f = utils.type;
7387        var chroma$c = chroma_1;
7388        var Color$v = Color_1;
7389        var input$8 = input$h;
7390        var rgb2hsv = rgb2hsv$1;
7391        Color$v.prototype.hsv = function() {
7392          return rgb2hsv(this._rgb);
7393        };
7394        chroma$c.hsv = function() {
7395          var args = [], len = arguments.length;
7396          while (len--) args[len] = arguments[len];
7397          return new (Function.prototype.bind.apply(Color$v, [null].concat(args, ["hsv"])))();
7398        };
7399        input$8.format.hsv = hsv2rgb_1;
7400        input$8.autodetect.push({
7401          p: 2,
7402          test: function() {
7403            var args = [], len = arguments.length;
7404            while (len--) args[len] = arguments[len];
7405            args = unpack$i(args, "hsv");
7406            if (type$f(args) === "array" && args.length === 3) {
7407              return "hsv";
7408            }
7409          }
7410        });
7411        var labConstants = {
7412          // Corresponds roughly to RGB brighter/darker
7413          Kn: 18,
7414          // D65 standard referent
7415          Xn: 0.95047,
7416          Yn: 1,
7417          Zn: 1.08883,
7418          t0: 0.137931034,
7419          // 4 / 29
7420          t1: 0.206896552,
7421          // 6 / 29
7422          t2: 0.12841855,
7423          // 3 * t1 * t1
7424          t3: 8856452e-9
7425          // t1 * t1 * t1
7426        };
7427        var LAB_CONSTANTS$3 = labConstants;
7428        var unpack$h = utils.unpack;
7429        var pow$a = Math.pow;
7430        var rgb2lab$2 = function() {
7431          var args = [], len = arguments.length;
7432          while (len--) args[len] = arguments[len];
7433          var ref = unpack$h(args, "rgb");
7434          var r = ref[0];
7435          var g = ref[1];
7436          var b = ref[2];
7437          var ref$1 = rgb2xyz(r, g, b);
7438          var x = ref$1[0];
7439          var y = ref$1[1];
7440          var z = ref$1[2];
7441          var l = 116 * y - 16;
7442          return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];
7443        };
7444        var rgb_xyz = function(r) {
7445          if ((r /= 255) <= 0.04045) {
7446            return r / 12.92;
7447          }
7448          return pow$a((r + 0.055) / 1.055, 2.4);
7449        };
7450        var xyz_lab = function(t) {
7451          if (t > LAB_CONSTANTS$3.t3) {
7452            return pow$a(t, 1 / 3);
7453          }
7454          return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;
7455        };
7456        var rgb2xyz = function(r, g, b) {
7457          r = rgb_xyz(r);
7458          g = rgb_xyz(g);
7459          b = rgb_xyz(b);
7460          var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);
7461          var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS$3.Yn);
7462          var z = xyz_lab((0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);
7463          return [x, y, z];
7464        };
7465        var rgb2lab_1 = rgb2lab$2;
7466        var LAB_CONSTANTS$2 = labConstants;
7467        var unpack$g = utils.unpack;
7468        var pow$9 = Math.pow;
7469        var lab2rgb$1 = function() {
7470          var args = [], len = arguments.length;
7471          while (len--) args[len] = arguments[len];
7472          args = unpack$g(args, "lab");
7473          var l = args[0];
7474          var a = args[1];
7475          var b = args[2];
7476          var x, y, z, r, g, b_;
7477          y = (l + 16) / 116;
7478          x = isNaN(a) ? y : y + a / 500;
7479          z = isNaN(b) ? y : y - b / 200;
7480          y = LAB_CONSTANTS$2.Yn * lab_xyz(y);
7481          x = LAB_CONSTANTS$2.Xn * lab_xyz(x);
7482          z = LAB_CONSTANTS$2.Zn * lab_xyz(z);
7483          r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);
7484          g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z);
7485          b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);
7486          return [r, g, b_, args.length > 3 ? args[3] : 1];
7487        };
7488        var xyz_rgb = function(r) {
7489          return 255 * (r <= 304e-5 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055);
7490        };
7491        var lab_xyz = function(t) {
7492          return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0);
7493        };
7494        var lab2rgb_1 = lab2rgb$1;
7495        var unpack$f = utils.unpack;
7496        var type$e = utils.type;
7497        var chroma$b = chroma_1;
7498        var Color$u = Color_1;
7499        var input$7 = input$h;
7500        var rgb2lab$1 = rgb2lab_1;
7501        Color$u.prototype.lab = function() {
7502          return rgb2lab$1(this._rgb);
7503        };
7504        chroma$b.lab = function() {
7505          var args = [], len = arguments.length;
7506          while (len--) args[len] = arguments[len];
7507          return new (Function.prototype.bind.apply(Color$u, [null].concat(args, ["lab"])))();
7508        };
7509        input$7.format.lab = lab2rgb_1;
7510        input$7.autodetect.push({
7511          p: 2,
7512          test: function() {
7513            var args = [], len = arguments.length;
7514            while (len--) args[len] = arguments[len];
7515            args = unpack$f(args, "lab");
7516            if (type$e(args) === "array" && args.length === 3) {
7517              return "lab";
7518            }
7519          }
7520        });
7521        var unpack$e = utils.unpack;
7522        var RAD2DEG = utils.RAD2DEG;
7523        var sqrt$3 = Math.sqrt;
7524        var atan2$2 = Math.atan2;
7525        var round$2 = Math.round;
7526        var lab2lch$2 = function() {
7527          var args = [], len = arguments.length;
7528          while (len--) args[len] = arguments[len];
7529          var ref = unpack$e(args, "lab");
7530          var l = ref[0];
7531          var a = ref[1];
7532          var b = ref[2];
7533          var c = sqrt$3(a * a + b * b);
7534          var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;
7535          if (round$2(c * 1e4) === 0) {
7536            h = Number.NaN;
7537          }
7538          return [l, c, h];
7539        };
7540        var lab2lch_1 = lab2lch$2;
7541        var unpack$d = utils.unpack;
7542        var rgb2lab = rgb2lab_1;
7543        var lab2lch$1 = lab2lch_1;
7544        var rgb2lch$1 = function() {
7545          var args = [], len = arguments.length;
7546          while (len--) args[len] = arguments[len];
7547          var ref = unpack$d(args, "rgb");
7548          var r = ref[0];
7549          var g = ref[1];
7550          var b = ref[2];
7551          var ref$1 = rgb2lab(r, g, b);
7552          var l = ref$1[0];
7553          var a = ref$1[1];
7554          var b_ = ref$1[2];
7555          return lab2lch$1(l, a, b_);
7556        };
7557        var rgb2lch_1 = rgb2lch$1;
7558        var unpack$c = utils.unpack;
7559        var DEG2RAD = utils.DEG2RAD;
7560        var sin$3 = Math.sin;
7561        var cos$3 = Math.cos;
7562        var lch2lab$2 = function() {
7563          var args = [], len = arguments.length;
7564          while (len--) args[len] = arguments[len];
7565          var ref = unpack$c(args, "lch");
7566          var l = ref[0];
7567          var c = ref[1];
7568          var h = ref[2];
7569          if (isNaN(h)) {
7570            h = 0;
7571          }
7572          h = h * DEG2RAD;
7573          return [l, cos$3(h) * c, sin$3(h) * c];
7574        };
7575        var lch2lab_1 = lch2lab$2;
7576        var unpack$b = utils.unpack;
7577        var lch2lab$1 = lch2lab_1;
7578        var lab2rgb = lab2rgb_1;
7579        var lch2rgb$1 = function() {
7580          var args = [], len = arguments.length;
7581          while (len--) args[len] = arguments[len];
7582          args = unpack$b(args, "lch");
7583          var l = args[0];
7584          var c = args[1];
7585          var h = args[2];
7586          var ref = lch2lab$1(l, c, h);
7587          var L = ref[0];
7588          var a = ref[1];
7589          var b_ = ref[2];
7590          var ref$1 = lab2rgb(L, a, b_);
7591          var r = ref$1[0];
7592          var g = ref$1[1];
7593          var b = ref$1[2];
7594          return [r, g, b, args.length > 3 ? args[3] : 1];
7595        };
7596        var lch2rgb_1 = lch2rgb$1;
7597        var unpack$a = utils.unpack;
7598        var lch2rgb = lch2rgb_1;
7599        var hcl2rgb = function() {
7600          var args = [], len = arguments.length;
7601          while (len--) args[len] = arguments[len];
7602          var hcl = unpack$a(args, "hcl").reverse();
7603          return lch2rgb.apply(void 0, hcl);
7604        };
7605        var hcl2rgb_1 = hcl2rgb;
7606        var unpack$9 = utils.unpack;
7607        var type$d = utils.type;
7608        var chroma$a = chroma_1;
7609        var Color$t = Color_1;
7610        var input$6 = input$h;
7611        var rgb2lch = rgb2lch_1;
7612        Color$t.prototype.lch = function() {
7613          return rgb2lch(this._rgb);
7614        };
7615        Color$t.prototype.hcl = function() {
7616          return rgb2lch(this._rgb).reverse();
7617        };
7618        chroma$a.lch = function() {
7619          var args = [], len = arguments.length;
7620          while (len--) args[len] = arguments[len];
7621          return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["lch"])))();
7622        };
7623        chroma$a.hcl = function() {
7624          var args = [], len = arguments.length;
7625          while (len--) args[len] = arguments[len];
7626          return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["hcl"])))();
7627        };
7628        input$6.format.lch = lch2rgb_1;
7629        input$6.format.hcl = hcl2rgb_1;
7630        ["lch", "hcl"].forEach(function(m) {
7631          return input$6.autodetect.push({
7632            p: 2,
7633            test: function() {
7634              var args = [], len = arguments.length;
7635              while (len--) args[len] = arguments[len];
7636              args = unpack$9(args, m);
7637              if (type$d(args) === "array" && args.length === 3) {
7638                return m;
7639              }
7640            }
7641          });
7642        });
7643        var w3cx11$1 = {
7644          aliceblue: "#f0f8ff",
7645          antiquewhite: "#faebd7",
7646          aqua: "#00ffff",
7647          aquamarine: "#7fffd4",
7648          azure: "#f0ffff",
7649          beige: "#f5f5dc",
7650          bisque: "#ffe4c4",
7651          black: "#000000",
7652          blanchedalmond: "#ffebcd",
7653          blue: "#0000ff",
7654          blueviolet: "#8a2be2",
7655          brown: "#a52a2a",
7656          burlywood: "#deb887",
7657          cadetblue: "#5f9ea0",
7658          chartreuse: "#7fff00",
7659          chocolate: "#d2691e",
7660          coral: "#ff7f50",
7661          cornflower: "#6495ed",
7662          cornflowerblue: "#6495ed",
7663          cornsilk: "#fff8dc",
7664          crimson: "#dc143c",
7665          cyan: "#00ffff",
7666          darkblue: "#00008b",
7667          darkcyan: "#008b8b",
7668          darkgoldenrod: "#b8860b",
7669          darkgray: "#a9a9a9",
7670          darkgreen: "#006400",
7671          darkgrey: "#a9a9a9",
7672          darkkhaki: "#bdb76b",
7673          darkmagenta: "#8b008b",
7674          darkolivegreen: "#556b2f",
7675          darkorange: "#ff8c00",
7676          darkorchid: "#9932cc",
7677          darkred: "#8b0000",
7678          darksalmon: "#e9967a",
7679          darkseagreen: "#8fbc8f",
7680          darkslateblue: "#483d8b",
7681          darkslategray: "#2f4f4f",
7682          darkslategrey: "#2f4f4f",
7683          darkturquoise: "#00ced1",
7684          darkviolet: "#9400d3",
7685          deeppink: "#ff1493",
7686          deepskyblue: "#00bfff",
7687          dimgray: "#696969",
7688          dimgrey: "#696969",
7689          dodgerblue: "#1e90ff",
7690          firebrick: "#b22222",
7691          floralwhite: "#fffaf0",
7692          forestgreen: "#228b22",
7693          fuchsia: "#ff00ff",
7694          gainsboro: "#dcdcdc",
7695          ghostwhite: "#f8f8ff",
7696          gold: "#ffd700",
7697          goldenrod: "#daa520",
7698          gray: "#808080",
7699          green: "#008000",
7700          greenyellow: "#adff2f",
7701          grey: "#808080",
7702          honeydew: "#f0fff0",
7703          hotpink: "#ff69b4",
7704          indianred: "#cd5c5c",
7705          indigo: "#4b0082",
7706          ivory: "#fffff0",
7707          khaki: "#f0e68c",
7708          laserlemon: "#ffff54",
7709          lavender: "#e6e6fa",
7710          lavenderblush: "#fff0f5",
7711          lawngreen: "#7cfc00",
7712          lemonchiffon: "#fffacd",
7713          lightblue: "#add8e6",
7714          lightcoral: "#f08080",
7715          lightcyan: "#e0ffff",
7716          lightgoldenrod: "#fafad2",
7717          lightgoldenrodyellow: "#fafad2",
7718          lightgray: "#d3d3d3",
7719          lightgreen: "#90ee90",
7720          lightgrey: "#d3d3d3",
7721          lightpink: "#ffb6c1",
7722          lightsalmon: "#ffa07a",
7723          lightseagreen: "#20b2aa",
7724          lightskyblue: "#87cefa",
7725          lightslategray: "#778899",
7726          lightslategrey: "#778899",
7727          lightsteelblue: "#b0c4de",
7728          lightyellow: "#ffffe0",
7729          lime: "#00ff00",
7730          limegreen: "#32cd32",
7731          linen: "#faf0e6",
7732          magenta: "#ff00ff",
7733          maroon: "#800000",
7734          maroon2: "#7f0000",
7735          maroon3: "#b03060",
7736          mediumaquamarine: "#66cdaa",
7737          mediumblue: "#0000cd",
7738          mediumorchid: "#ba55d3",
7739          mediumpurple: "#9370db",
7740          mediumseagreen: "#3cb371",
7741          mediumslateblue: "#7b68ee",
7742          mediumspringgreen: "#00fa9a",
7743          mediumturquoise: "#48d1cc",
7744          mediumvioletred: "#c71585",
7745          midnightblue: "#191970",
7746          mintcream: "#f5fffa",
7747          mistyrose: "#ffe4e1",
7748          moccasin: "#ffe4b5",
7749          navajowhite: "#ffdead",
7750          navy: "#000080",
7751          oldlace: "#fdf5e6",
7752          olive: "#808000",
7753          olivedrab: "#6b8e23",
7754          orange: "#ffa500",
7755          orangered: "#ff4500",
7756          orchid: "#da70d6",
7757          palegoldenrod: "#eee8aa",
7758          palegreen: "#98fb98",
7759          paleturquoise: "#afeeee",
7760          palevioletred: "#db7093",
7761          papayawhip: "#ffefd5",
7762          peachpuff: "#ffdab9",
7763          peru: "#cd853f",
7764          pink: "#ffc0cb",
7765          plum: "#dda0dd",
7766          powderblue: "#b0e0e6",
7767          purple: "#800080",
7768          purple2: "#7f007f",
7769          purple3: "#a020f0",
7770          rebeccapurple: "#663399",
7771          red: "#ff0000",
7772          rosybrown: "#bc8f8f",
7773          royalblue: "#4169e1",
7774          saddlebrown: "#8b4513",
7775          salmon: "#fa8072",
7776          sandybrown: "#f4a460",
7777          seagreen: "#2e8b57",
7778          seashell: "#fff5ee",
7779          sienna: "#a0522d",
7780          silver: "#c0c0c0",
7781          skyblue: "#87ceeb",
7782          slateblue: "#6a5acd",
7783          slategray: "#708090",
7784          slategrey: "#708090",
7785          snow: "#fffafa",
7786          springgreen: "#00ff7f",
7787          steelblue: "#4682b4",
7788          tan: "#d2b48c",
7789          teal: "#008080",
7790          thistle: "#d8bfd8",
7791          tomato: "#ff6347",
7792          turquoise: "#40e0d0",
7793          violet: "#ee82ee",
7794          wheat: "#f5deb3",
7795          white: "#ffffff",
7796          whitesmoke: "#f5f5f5",
7797          yellow: "#ffff00",
7798          yellowgreen: "#9acd32"
7799        };
7800        var w3cx11_1 = w3cx11$1;
7801        var Color$s = Color_1;
7802        var input$5 = input$h;
7803        var type$c = utils.type;
7804        var w3cx11 = w3cx11_1;
7805        var hex2rgb = hex2rgb_1;
7806        var rgb2hex = rgb2hex_1;
7807        Color$s.prototype.name = function() {
7808          var hex = rgb2hex(this._rgb, "rgb");
7809          for (var i2 = 0, list2 = Object.keys(w3cx11); i2 < list2.length; i2 += 1) {
7810            var n = list2[i2];
7811            if (w3cx11[n] === hex) {
7812              return n.toLowerCase();
7813            }
7814          }
7815          return hex;
7816        };
7817        input$5.format.named = function(name2) {
7818          name2 = name2.toLowerCase();
7819          if (w3cx11[name2]) {
7820            return hex2rgb(w3cx11[name2]);
7821          }
7822          throw new Error("unknown color name: " + name2);
7823        };
7824        input$5.autodetect.push({
7825          p: 5,
7826          test: function(h) {
7827            var rest = [], len = arguments.length - 1;
7828            while (len-- > 0) rest[len] = arguments[len + 1];
7829            if (!rest.length && type$c(h) === "string" && w3cx11[h.toLowerCase()]) {
7830              return "named";
7831            }
7832          }
7833        });
7834        var unpack$8 = utils.unpack;
7835        var rgb2num$1 = function() {
7836          var args = [], len = arguments.length;
7837          while (len--) args[len] = arguments[len];
7838          var ref = unpack$8(args, "rgb");
7839          var r = ref[0];
7840          var g = ref[1];
7841          var b = ref[2];
7842          return (r << 16) + (g << 8) + b;
7843        };
7844        var rgb2num_1 = rgb2num$1;
7845        var type$b = utils.type;
7846        var num2rgb = function(num2) {
7847          if (type$b(num2) == "number" && num2 >= 0 && num2 <= 16777215) {
7848            var r = num2 >> 16;
7849            var g = num2 >> 8 & 255;
7850            var b = num2 & 255;
7851            return [r, g, b, 1];
7852          }
7853          throw new Error("unknown num color: " + num2);
7854        };
7855        var num2rgb_1 = num2rgb;
7856        var chroma$9 = chroma_1;
7857        var Color$r = Color_1;
7858        var input$4 = input$h;
7859        var type$a = utils.type;
7860        var rgb2num = rgb2num_1;
7861        Color$r.prototype.num = function() {
7862          return rgb2num(this._rgb);
7863        };
7864        chroma$9.num = function() {
7865          var args = [], len = arguments.length;
7866          while (len--) args[len] = arguments[len];
7867          return new (Function.prototype.bind.apply(Color$r, [null].concat(args, ["num"])))();
7868        };
7869        input$4.format.num = num2rgb_1;
7870        input$4.autodetect.push({
7871          p: 5,
7872          test: function() {
7873            var args = [], len = arguments.length;
7874            while (len--) args[len] = arguments[len];
7875            if (args.length === 1 && type$a(args[0]) === "number" && args[0] >= 0 && args[0] <= 16777215) {
7876              return "num";
7877            }
7878          }
7879        });
7880        var chroma$8 = chroma_1;
7881        var Color$q = Color_1;
7882        var input$3 = input$h;
7883        var unpack$7 = utils.unpack;
7884        var type$9 = utils.type;
7885        var round$1 = Math.round;
7886        Color$q.prototype.rgb = function(rnd2) {
7887          if (rnd2 === void 0) rnd2 = true;
7888          if (rnd2 === false) {
7889            return this._rgb.slice(0, 3);
7890          }
7891          return this._rgb.slice(0, 3).map(round$1);
7892        };
7893        Color$q.prototype.rgba = function(rnd2) {
7894          if (rnd2 === void 0) rnd2 = true;
7895          return this._rgb.slice(0, 4).map(function(v, i2) {
7896            return i2 < 3 ? rnd2 === false ? v : round$1(v) : v;
7897          });
7898        };
7899        chroma$8.rgb = function() {
7900          var args = [], len = arguments.length;
7901          while (len--) args[len] = arguments[len];
7902          return new (Function.prototype.bind.apply(Color$q, [null].concat(args, ["rgb"])))();
7903        };
7904        input$3.format.rgb = function() {
7905          var args = [], len = arguments.length;
7906          while (len--) args[len] = arguments[len];
7907          var rgba = unpack$7(args, "rgba");
7908          if (rgba[3] === void 0) {
7909            rgba[3] = 1;
7910          }
7911          return rgba;
7912        };
7913        input$3.autodetect.push({
7914          p: 3,
7915          test: function() {
7916            var args = [], len = arguments.length;
7917            while (len--) args[len] = arguments[len];
7918            args = unpack$7(args, "rgba");
7919            if (type$9(args) === "array" && (args.length === 3 || args.length === 4 && type$9(args[3]) == "number" && args[3] >= 0 && args[3] <= 1)) {
7920              return "rgb";
7921            }
7922          }
7923        });
7924        var log$1 = Math.log;
7925        var temperature2rgb$1 = function(kelvin) {
7926          var temp = kelvin / 100;
7927          var r, g, b;
7928          if (temp < 66) {
7929            r = 255;
7930            g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log$1(g);
7931            b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log$1(b);
7932          } else {
7933            r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log$1(r);
7934            g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log$1(g);
7935            b = 255;
7936          }
7937          return [r, g, b, 1];
7938        };
7939        var temperature2rgb_1 = temperature2rgb$1;
7940        var temperature2rgb = temperature2rgb_1;
7941        var unpack$6 = utils.unpack;
7942        var round = Math.round;
7943        var rgb2temperature$1 = function() {
7944          var args = [], len = arguments.length;
7945          while (len--) args[len] = arguments[len];
7946          var rgb2 = unpack$6(args, "rgb");
7947          var r = rgb2[0], b = rgb2[2];
7948          var minTemp = 1e3;
7949          var maxTemp = 4e4;
7950          var eps = 0.4;
7951          var temp;
7952          while (maxTemp - minTemp > eps) {
7953            temp = (maxTemp + minTemp) * 0.5;
7954            var rgb$1 = temperature2rgb(temp);
7955            if (rgb$1[2] / rgb$1[0] >= b / r) {
7956              maxTemp = temp;
7957            } else {
7958              minTemp = temp;
7959            }
7960          }
7961          return round(temp);
7962        };
7963        var rgb2temperature_1 = rgb2temperature$1;
7964        var chroma$7 = chroma_1;
7965        var Color$p = Color_1;
7966        var input$2 = input$h;
7967        var rgb2temperature = rgb2temperature_1;
7968        Color$p.prototype.temp = Color$p.prototype.kelvin = Color$p.prototype.temperature = function() {
7969          return rgb2temperature(this._rgb);
7970        };
7971        chroma$7.temp = chroma$7.kelvin = chroma$7.temperature = function() {
7972          var args = [], len = arguments.length;
7973          while (len--) args[len] = arguments[len];
7974          return new (Function.prototype.bind.apply(Color$p, [null].concat(args, ["temp"])))();
7975        };
7976        input$2.format.temp = input$2.format.kelvin = input$2.format.temperature = temperature2rgb_1;
7977        var unpack$5 = utils.unpack;
7978        var cbrt = Math.cbrt;
7979        var pow$8 = Math.pow;
7980        var sign$1 = Math.sign;
7981        var rgb2oklab$2 = function() {
7982          var args = [], len = arguments.length;
7983          while (len--) args[len] = arguments[len];
7984          var ref = unpack$5(args, "rgb");
7985          var r = ref[0];
7986          var g = ref[1];
7987          var b = ref[2];
7988          var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];
7989          var lr = ref$1[0];
7990          var lg = ref$1[1];
7991          var lb = ref$1[2];
7992          var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);
7993          var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);
7994          var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);
7995          return [
7996            0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
7997            1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
7998            0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s
7999          ];
8000        };
8001        var rgb2oklab_1 = rgb2oklab$2;
8002        function rgb2lrgb(c) {
8003          var abs2 = Math.abs(c);
8004          if (abs2 < 0.04045) {
8005            return c / 12.92;
8006          }
8007          return (sign$1(c) || 1) * pow$8((abs2 + 0.055) / 1.055, 2.4);
8008        }
8009        var unpack$4 = utils.unpack;
8010        var pow$7 = Math.pow;
8011        var sign = Math.sign;
8012        var oklab2rgb$1 = function() {
8013          var args = [], len = arguments.length;
8014          while (len--) args[len] = arguments[len];
8015          args = unpack$4(args, "lab");
8016          var L = args[0];
8017          var a = args[1];
8018          var b = args[2];
8019          var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);
8020          var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);
8021          var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);
8022          return [
8023            255 * lrgb2rgb(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),
8024            255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),
8025            255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),
8026            args.length > 3 ? args[3] : 1
8027          ];
8028        };
8029        var oklab2rgb_1 = oklab2rgb$1;
8030        function lrgb2rgb(c) {
8031          var abs2 = Math.abs(c);
8032          if (abs2 > 31308e-7) {
8033            return (sign(c) || 1) * (1.055 * pow$7(abs2, 1 / 2.4) - 0.055);
8034          }
8035          return c * 12.92;
8036        }
8037        var unpack$3 = utils.unpack;
8038        var type$8 = utils.type;
8039        var chroma$6 = chroma_1;
8040        var Color$o = Color_1;
8041        var input$1 = input$h;
8042        var rgb2oklab$1 = rgb2oklab_1;
8043        Color$o.prototype.oklab = function() {
8044          return rgb2oklab$1(this._rgb);
8045        };
8046        chroma$6.oklab = function() {
8047          var args = [], len = arguments.length;
8048          while (len--) args[len] = arguments[len];
8049          return new (Function.prototype.bind.apply(Color$o, [null].concat(args, ["oklab"])))();
8050        };
8051        input$1.format.oklab = oklab2rgb_1;
8052        input$1.autodetect.push({
8053          p: 3,
8054          test: function() {
8055            var args = [], len = arguments.length;
8056            while (len--) args[len] = arguments[len];
8057            args = unpack$3(args, "oklab");
8058            if (type$8(args) === "array" && args.length === 3) {
8059              return "oklab";
8060            }
8061          }
8062        });
8063        var unpack$2 = utils.unpack;
8064        var rgb2oklab = rgb2oklab_1;
8065        var lab2lch = lab2lch_1;
8066        var rgb2oklch$1 = function() {
8067          var args = [], len = arguments.length;
8068          while (len--) args[len] = arguments[len];
8069          var ref = unpack$2(args, "rgb");
8070          var r = ref[0];
8071          var g = ref[1];
8072          var b = ref[2];
8073          var ref$1 = rgb2oklab(r, g, b);
8074          var l = ref$1[0];
8075          var a = ref$1[1];
8076          var b_ = ref$1[2];
8077          return lab2lch(l, a, b_);
8078        };
8079        var rgb2oklch_1 = rgb2oklch$1;
8080        var unpack$1 = utils.unpack;
8081        var lch2lab = lch2lab_1;
8082        var oklab2rgb = oklab2rgb_1;
8083        var oklch2rgb = function() {
8084          var args = [], len = arguments.length;
8085          while (len--) args[len] = arguments[len];
8086          args = unpack$1(args, "lch");
8087          var l = args[0];
8088          var c = args[1];
8089          var h = args[2];
8090          var ref = lch2lab(l, c, h);
8091          var L = ref[0];
8092          var a = ref[1];
8093          var b_ = ref[2];
8094          var ref$1 = oklab2rgb(L, a, b_);
8095          var r = ref$1[0];
8096          var g = ref$1[1];
8097          var b = ref$1[2];
8098          return [r, g, b, args.length > 3 ? args[3] : 1];
8099        };
8100        var oklch2rgb_1 = oklch2rgb;
8101        var unpack = utils.unpack;
8102        var type$7 = utils.type;
8103        var chroma$5 = chroma_1;
8104        var Color$n = Color_1;
8105        var input = input$h;
8106        var rgb2oklch = rgb2oklch_1;
8107        Color$n.prototype.oklch = function() {
8108          return rgb2oklch(this._rgb);
8109        };
8110        chroma$5.oklch = function() {
8111          var args = [], len = arguments.length;
8112          while (len--) args[len] = arguments[len];
8113          return new (Function.prototype.bind.apply(Color$n, [null].concat(args, ["oklch"])))();
8114        };
8115        input.format.oklch = oklch2rgb_1;
8116        input.autodetect.push({
8117          p: 3,
8118          test: function() {
8119            var args = [], len = arguments.length;
8120            while (len--) args[len] = arguments[len];
8121            args = unpack(args, "oklch");
8122            if (type$7(args) === "array" && args.length === 3) {
8123              return "oklch";
8124            }
8125          }
8126        });
8127        var Color$m = Color_1;
8128        var type$6 = utils.type;
8129        Color$m.prototype.alpha = function(a, mutate) {
8130          if (mutate === void 0) mutate = false;
8131          if (a !== void 0 && type$6(a) === "number") {
8132            if (mutate) {
8133              this._rgb[3] = a;
8134              return this;
8135            }
8136            return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], "rgb");
8137          }
8138          return this._rgb[3];
8139        };
8140        var Color$l = Color_1;
8141        Color$l.prototype.clipped = function() {
8142          return this._rgb._clipped || false;
8143        };
8144        var Color$k = Color_1;
8145        var LAB_CONSTANTS$1 = labConstants;
8146        Color$k.prototype.darken = function(amount) {
8147          if (amount === void 0) amount = 1;
8148          var me = this;
8149          var lab2 = me.lab();
8150          lab2[0] -= LAB_CONSTANTS$1.Kn * amount;
8151          return new Color$k(lab2, "lab").alpha(me.alpha(), true);
8152        };
8153        Color$k.prototype.brighten = function(amount) {
8154          if (amount === void 0) amount = 1;
8155          return this.darken(-amount);
8156        };
8157        Color$k.prototype.darker = Color$k.prototype.darken;
8158        Color$k.prototype.brighter = Color$k.prototype.brighten;
8159        var Color$j = Color_1;
8160        Color$j.prototype.get = function(mc) {
8161          var ref = mc.split(".");
8162          var mode = ref[0];
8163          var channel = ref[1];
8164          var src = this[mode]();
8165          if (channel) {
8166            var i2 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0);
8167            if (i2 > -1) {
8168              return src[i2];
8169            }
8170            throw new Error("unknown channel " + channel + " in mode " + mode);
8171          } else {
8172            return src;
8173          }
8174        };
8175        var Color$i = Color_1;
8176        var type$5 = utils.type;
8177        var pow$6 = Math.pow;
8178        var EPS = 1e-7;
8179        var MAX_ITER = 20;
8180        Color$i.prototype.luminance = function(lum) {
8181          if (lum !== void 0 && type$5(lum) === "number") {
8182            if (lum === 0) {
8183              return new Color$i([0, 0, 0, this._rgb[3]], "rgb");
8184            }
8185            if (lum === 1) {
8186              return new Color$i([255, 255, 255, this._rgb[3]], "rgb");
8187            }
8188            var cur_lum = this.luminance();
8189            var mode = "rgb";
8190            var max_iter = MAX_ITER;
8191            var test = function(low, high) {
8192              var mid = low.interpolate(high, 0.5, mode);
8193              var lm = mid.luminance();
8194              if (Math.abs(lum - lm) < EPS || !max_iter--) {
8195                return mid;
8196              }
8197              return lm > lum ? test(low, mid) : test(mid, high);
8198            };
8199            var rgb2 = (cur_lum > lum ? test(new Color$i([0, 0, 0]), this) : test(this, new Color$i([255, 255, 255]))).rgb();
8200            return new Color$i(rgb2.concat([this._rgb[3]]));
8201          }
8202          return rgb2luminance.apply(void 0, this._rgb.slice(0, 3));
8203        };
8204        var rgb2luminance = function(r, g, b) {
8205          r = luminance_x(r);
8206          g = luminance_x(g);
8207          b = luminance_x(b);
8208          return 0.2126 * r + 0.7152 * g + 0.0722 * b;
8209        };
8210        var luminance_x = function(x) {
8211          x /= 255;
8212          return x <= 0.03928 ? x / 12.92 : pow$6((x + 0.055) / 1.055, 2.4);
8213        };
8214        var interpolator$1 = {};
8215        var Color$h = Color_1;
8216        var type$4 = utils.type;
8217        var interpolator = interpolator$1;
8218        var mix$1 = function(col1, col2, f) {
8219          if (f === void 0) f = 0.5;
8220          var rest = [], len = arguments.length - 3;
8221          while (len-- > 0) rest[len] = arguments[len + 3];
8222          var mode = rest[0] || "lrgb";
8223          if (!interpolator[mode] && !rest.length) {
8224            mode = Object.keys(interpolator)[0];
8225          }
8226          if (!interpolator[mode]) {
8227            throw new Error("interpolation mode " + mode + " is not defined");
8228          }
8229          if (type$4(col1) !== "object") {
8230            col1 = new Color$h(col1);
8231          }
8232          if (type$4(col2) !== "object") {
8233            col2 = new Color$h(col2);
8234          }
8235          return interpolator[mode](col1, col2, f).alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));
8236        };
8237        var Color$g = Color_1;
8238        var mix = mix$1;
8239        Color$g.prototype.mix = Color$g.prototype.interpolate = function(col2, f) {
8240          if (f === void 0) f = 0.5;
8241          var rest = [], len = arguments.length - 2;
8242          while (len-- > 0) rest[len] = arguments[len + 2];
8243          return mix.apply(void 0, [this, col2, f].concat(rest));
8244        };
8245        var Color$f = Color_1;
8246        Color$f.prototype.premultiply = function(mutate) {
8247          if (mutate === void 0) mutate = false;
8248          var rgb2 = this._rgb;
8249          var a = rgb2[3];
8250          if (mutate) {
8251            this._rgb = [rgb2[0] * a, rgb2[1] * a, rgb2[2] * a, a];
8252            return this;
8253          } else {
8254            return new Color$f([rgb2[0] * a, rgb2[1] * a, rgb2[2] * a, a], "rgb");
8255          }
8256        };
8257        var Color$e = Color_1;
8258        var LAB_CONSTANTS = labConstants;
8259        Color$e.prototype.saturate = function(amount) {
8260          if (amount === void 0) amount = 1;
8261          var me = this;
8262          var lch2 = me.lch();
8263          lch2[1] += LAB_CONSTANTS.Kn * amount;
8264          if (lch2[1] < 0) {
8265            lch2[1] = 0;
8266          }
8267          return new Color$e(lch2, "lch").alpha(me.alpha(), true);
8268        };
8269        Color$e.prototype.desaturate = function(amount) {
8270          if (amount === void 0) amount = 1;
8271          return this.saturate(-amount);
8272        };
8273        var Color$d = Color_1;
8274        var type$3 = utils.type;
8275        Color$d.prototype.set = function(mc, value, mutate) {
8276          if (mutate === void 0) mutate = false;
8277          var ref = mc.split(".");
8278          var mode = ref[0];
8279          var channel = ref[1];
8280          var src = this[mode]();
8281          if (channel) {
8282            var i2 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0);
8283            if (i2 > -1) {
8284              if (type$3(value) == "string") {
8285                switch (value.charAt(0)) {
8286                  case "+":
8287                    src[i2] += +value;
8288                    break;
8289                  case "-":
8290                    src[i2] += +value;
8291                    break;
8292                  case "*":
8293                    src[i2] *= +value.substr(1);
8294                    break;
8295                  case "/":
8296                    src[i2] /= +value.substr(1);
8297                    break;
8298                  default:
8299                    src[i2] = +value;
8300                }
8301              } else if (type$3(value) === "number") {
8302                src[i2] = value;
8303              } else {
8304                throw new Error("unsupported value for Color.set");
8305              }
8306              var out = new Color$d(src, mode);
8307              if (mutate) {
8308                this._rgb = out._rgb;
8309                return this;
8310              }
8311              return out;
8312            }
8313            throw new Error("unknown channel " + channel + " in mode " + mode);
8314          } else {
8315            return src;
8316          }
8317        };
8318        var Color$c = Color_1;
8319        var rgb = function(col1, col2, f) {
8320          var xyz0 = col1._rgb;
8321          var xyz1 = col2._rgb;
8322          return new Color$c(
8323            xyz0[0] + f * (xyz1[0] - xyz0[0]),
8324            xyz0[1] + f * (xyz1[1] - xyz0[1]),
8325            xyz0[2] + f * (xyz1[2] - xyz0[2]),
8326            "rgb"
8327          );
8328        };
8329        interpolator$1.rgb = rgb;
8330        var Color$b = Color_1;
8331        var sqrt$2 = Math.sqrt;
8332        var pow$5 = Math.pow;
8333        var lrgb = function(col1, col2, f) {
8334          var ref = col1._rgb;
8335          var x1 = ref[0];
8336          var y1 = ref[1];
8337          var z1 = ref[2];
8338          var ref$1 = col2._rgb;
8339          var x2 = ref$1[0];
8340          var y2 = ref$1[1];
8341          var z2 = ref$1[2];
8342          return new Color$b(
8343            sqrt$2(pow$5(x1, 2) * (1 - f) + pow$5(x2, 2) * f),
8344            sqrt$2(pow$5(y1, 2) * (1 - f) + pow$5(y2, 2) * f),
8345            sqrt$2(pow$5(z1, 2) * (1 - f) + pow$5(z2, 2) * f),
8346            "rgb"
8347          );
8348        };
8349        interpolator$1.lrgb = lrgb;
8350        var Color$a = Color_1;
8351        var lab = function(col1, col2, f) {
8352          var xyz0 = col1.lab();
8353          var xyz1 = col2.lab();
8354          return new Color$a(
8355            xyz0[0] + f * (xyz1[0] - xyz0[0]),
8356            xyz0[1] + f * (xyz1[1] - xyz0[1]),
8357            xyz0[2] + f * (xyz1[2] - xyz0[2]),
8358            "lab"
8359          );
8360        };
8361        interpolator$1.lab = lab;
8362        var Color$9 = Color_1;
8363        var _hsx = function(col1, col2, f, m) {
8364          var assign, assign$1;
8365          var xyz0, xyz1;
8366          if (m === "hsl") {
8367            xyz0 = col1.hsl();
8368            xyz1 = col2.hsl();
8369          } else if (m === "hsv") {
8370            xyz0 = col1.hsv();
8371            xyz1 = col2.hsv();
8372          } else if (m === "hcg") {
8373            xyz0 = col1.hcg();
8374            xyz1 = col2.hcg();
8375          } else if (m === "hsi") {
8376            xyz0 = col1.hsi();
8377            xyz1 = col2.hsi();
8378          } else if (m === "lch" || m === "hcl") {
8379            m = "hcl";
8380            xyz0 = col1.hcl();
8381            xyz1 = col2.hcl();
8382          } else if (m === "oklch") {
8383            xyz0 = col1.oklch().reverse();
8384            xyz1 = col2.oklch().reverse();
8385          }
8386          var hue0, hue1, sat0, sat1, lbv0, lbv1;
8387          if (m.substr(0, 1) === "h" || m === "oklch") {
8388            assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2];
8389            assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2];
8390          }
8391          var sat, hue, lbv, dh;
8392          if (!isNaN(hue0) && !isNaN(hue1)) {
8393            if (hue1 > hue0 && hue1 - hue0 > 180) {
8394              dh = hue1 - (hue0 + 360);
8395            } else if (hue1 < hue0 && hue0 - hue1 > 180) {
8396              dh = hue1 + 360 - hue0;
8397            } else {
8398              dh = hue1 - hue0;
8399            }
8400            hue = hue0 + f * dh;
8401          } else if (!isNaN(hue0)) {
8402            hue = hue0;
8403            if ((lbv1 == 1 || lbv1 == 0) && m != "hsv") {
8404              sat = sat0;
8405            }
8406          } else if (!isNaN(hue1)) {
8407            hue = hue1;
8408            if ((lbv0 == 1 || lbv0 == 0) && m != "hsv") {
8409              sat = sat1;
8410            }
8411          } else {
8412            hue = Number.NaN;
8413          }
8414          if (sat === void 0) {
8415            sat = sat0 + f * (sat1 - sat0);
8416          }
8417          lbv = lbv0 + f * (lbv1 - lbv0);
8418          return m === "oklch" ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);
8419        };
8420        var interpolate_hsx$5 = _hsx;
8421        var lch = function(col1, col2, f) {
8422          return interpolate_hsx$5(col1, col2, f, "lch");
8423        };
8424        interpolator$1.lch = lch;
8425        interpolator$1.hcl = lch;
8426        var Color$8 = Color_1;
8427        var num = function(col1, col2, f) {
8428          var c1 = col1.num();
8429          var c2 = col2.num();
8430          return new Color$8(c1 + f * (c2 - c1), "num");
8431        };
8432        interpolator$1.num = num;
8433        var interpolate_hsx$4 = _hsx;
8434        var hcg = function(col1, col2, f) {
8435          return interpolate_hsx$4(col1, col2, f, "hcg");
8436        };
8437        interpolator$1.hcg = hcg;
8438        var interpolate_hsx$3 = _hsx;
8439        var hsi = function(col1, col2, f) {
8440          return interpolate_hsx$3(col1, col2, f, "hsi");
8441        };
8442        interpolator$1.hsi = hsi;
8443        var interpolate_hsx$2 = _hsx;
8444        var hsl = function(col1, col2, f) {
8445          return interpolate_hsx$2(col1, col2, f, "hsl");
8446        };
8447        interpolator$1.hsl = hsl;
8448        var interpolate_hsx$1 = _hsx;
8449        var hsv = function(col1, col2, f) {
8450          return interpolate_hsx$1(col1, col2, f, "hsv");
8451        };
8452        interpolator$1.hsv = hsv;
8453        var Color$7 = Color_1;
8454        var oklab = function(col1, col2, f) {
8455          var xyz0 = col1.oklab();
8456          var xyz1 = col2.oklab();
8457          return new Color$7(
8458            xyz0[0] + f * (xyz1[0] - xyz0[0]),
8459            xyz0[1] + f * (xyz1[1] - xyz0[1]),
8460            xyz0[2] + f * (xyz1[2] - xyz0[2]),
8461            "oklab"
8462          );
8463        };
8464        interpolator$1.oklab = oklab;
8465        var interpolate_hsx = _hsx;
8466        var oklch = function(col1, col2, f) {
8467          return interpolate_hsx(col1, col2, f, "oklch");
8468        };
8469        interpolator$1.oklch = oklch;
8470        var Color$6 = Color_1;
8471        var clip_rgb$1 = utils.clip_rgb;
8472        var pow$4 = Math.pow;
8473        var sqrt$1 = Math.sqrt;
8474        var PI$1 = Math.PI;
8475        var cos$2 = Math.cos;
8476        var sin$2 = Math.sin;
8477        var atan2$1 = Math.atan2;
8478        var average = function(colors, mode, weights) {
8479          if (mode === void 0) mode = "lrgb";
8480          if (weights === void 0) weights = null;
8481          var l = colors.length;
8482          if (!weights) {
8483            weights = Array.from(new Array(l)).map(function() {
8484              return 1;
8485            });
8486          }
8487          var k = l / weights.reduce(function(a, b) {
8488            return a + b;
8489          });
8490          weights.forEach(function(w, i3) {
8491            weights[i3] *= k;
8492          });
8493          colors = colors.map(function(c) {
8494            return new Color$6(c);
8495          });
8496          if (mode === "lrgb") {
8497            return _average_lrgb(colors, weights);
8498          }
8499          var first = colors.shift();
8500          var xyz = first.get(mode);
8501          var cnt = [];
8502          var dx = 0;
8503          var dy = 0;
8504          for (var i2 = 0; i2 < xyz.length; i2++) {
8505            xyz[i2] = (xyz[i2] || 0) * weights[0];
8506            cnt.push(isNaN(xyz[i2]) ? 0 : weights[0]);
8507            if (mode.charAt(i2) === "h" && !isNaN(xyz[i2])) {
8508              var A = xyz[i2] / 180 * PI$1;
8509              dx += cos$2(A) * weights[0];
8510              dy += sin$2(A) * weights[0];
8511            }
8512          }
8513          var alpha = first.alpha() * weights[0];
8514          colors.forEach(function(c, ci) {
8515            var xyz2 = c.get(mode);
8516            alpha += c.alpha() * weights[ci + 1];
8517            for (var i3 = 0; i3 < xyz.length; i3++) {
8518              if (!isNaN(xyz2[i3])) {
8519                cnt[i3] += weights[ci + 1];
8520                if (mode.charAt(i3) === "h") {
8521                  var A2 = xyz2[i3] / 180 * PI$1;
8522                  dx += cos$2(A2) * weights[ci + 1];
8523                  dy += sin$2(A2) * weights[ci + 1];
8524                } else {
8525                  xyz[i3] += xyz2[i3] * weights[ci + 1];
8526                }
8527              }
8528            }
8529          });
8530          for (var i$12 = 0; i$12 < xyz.length; i$12++) {
8531            if (mode.charAt(i$12) === "h") {
8532              var A$1 = atan2$1(dy / cnt[i$12], dx / cnt[i$12]) / PI$1 * 180;
8533              while (A$1 < 0) {
8534                A$1 += 360;
8535              }
8536              while (A$1 >= 360) {
8537                A$1 -= 360;
8538              }
8539              xyz[i$12] = A$1;
8540            } else {
8541              xyz[i$12] = xyz[i$12] / cnt[i$12];
8542            }
8543          }
8544          alpha /= l;
8545          return new Color$6(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true);
8546        };
8547        var _average_lrgb = function(colors, weights) {
8548          var l = colors.length;
8549          var xyz = [0, 0, 0, 0];
8550          for (var i2 = 0; i2 < colors.length; i2++) {
8551            var col = colors[i2];
8552            var f = weights[i2] / l;
8553            var rgb2 = col._rgb;
8554            xyz[0] += pow$4(rgb2[0], 2) * f;
8555            xyz[1] += pow$4(rgb2[1], 2) * f;
8556            xyz[2] += pow$4(rgb2[2], 2) * f;
8557            xyz[3] += rgb2[3] * f;
8558          }
8559          xyz[0] = sqrt$1(xyz[0]);
8560          xyz[1] = sqrt$1(xyz[1]);
8561          xyz[2] = sqrt$1(xyz[2]);
8562          if (xyz[3] > 0.9999999) {
8563            xyz[3] = 1;
8564          }
8565          return new Color$6(clip_rgb$1(xyz));
8566        };
8567        var chroma$4 = chroma_1;
8568        var type$2 = utils.type;
8569        var pow$3 = Math.pow;
8570        var scale$2 = function(colors) {
8571          var _mode = "rgb";
8572          var _nacol = chroma$4("#ccc");
8573          var _spread = 0;
8574          var _domain = [0, 1];
8575          var _pos = [];
8576          var _padding = [0, 0];
8577          var _classes = false;
8578          var _colors = [];
8579          var _out = false;
8580          var _min = 0;
8581          var _max = 1;
8582          var _correctLightness = false;
8583          var _colorCache = {};
8584          var _useCache = true;
8585          var _gamma = 1;
8586          var setColors = function(colors2) {
8587            colors2 = colors2 || ["#fff", "#000"];
8588            if (colors2 && type$2(colors2) === "string" && chroma$4.brewer && chroma$4.brewer[colors2.toLowerCase()]) {
8589              colors2 = chroma$4.brewer[colors2.toLowerCase()];
8590            }
8591            if (type$2(colors2) === "array") {
8592              if (colors2.length === 1) {
8593                colors2 = [colors2[0], colors2[0]];
8594              }
8595              colors2 = colors2.slice(0);
8596              for (var c = 0; c < colors2.length; c++) {
8597                colors2[c] = chroma$4(colors2[c]);
8598              }
8599              _pos.length = 0;
8600              for (var c$1 = 0; c$1 < colors2.length; c$1++) {
8601                _pos.push(c$1 / (colors2.length - 1));
8602              }
8603            }
8604            resetCache();
8605            return _colors = colors2;
8606          };
8607          var getClass = function(value) {
8608            if (_classes != null) {
8609              var n = _classes.length - 1;
8610              var i2 = 0;
8611              while (i2 < n && value >= _classes[i2]) {
8612                i2++;
8613              }
8614              return i2 - 1;
8615            }
8616            return 0;
8617          };
8618          var tMapLightness = function(t) {
8619            return t;
8620          };
8621          var tMapDomain = function(t) {
8622            return t;
8623          };
8624          var getColor = function(val, bypassMap) {
8625            var col, t;
8626            if (bypassMap == null) {
8627              bypassMap = false;
8628            }
8629            if (isNaN(val) || val === null) {
8630              return _nacol;
8631            }
8632            if (!bypassMap) {
8633              if (_classes && _classes.length > 2) {
8634                var c = getClass(val);
8635                t = c / (_classes.length - 2);
8636              } else if (_max !== _min) {
8637                t = (val - _min) / (_max - _min);
8638              } else {
8639                t = 1;
8640              }
8641            } else {
8642              t = val;
8643            }
8644            t = tMapDomain(t);
8645            if (!bypassMap) {
8646              t = tMapLightness(t);
8647            }
8648            if (_gamma !== 1) {
8649              t = pow$3(t, _gamma);
8650            }
8651            t = _padding[0] + t * (1 - _padding[0] - _padding[1]);
8652            t = Math.min(1, Math.max(0, t));
8653            var k = Math.floor(t * 1e4);
8654            if (_useCache && _colorCache[k]) {
8655              col = _colorCache[k];
8656            } else {
8657              if (type$2(_colors) === "array") {
8658                for (var i2 = 0; i2 < _pos.length; i2++) {
8659                  var p = _pos[i2];
8660                  if (t <= p) {
8661                    col = _colors[i2];
8662                    break;
8663                  }
8664                  if (t >= p && i2 === _pos.length - 1) {
8665                    col = _colors[i2];
8666                    break;
8667                  }
8668                  if (t > p && t < _pos[i2 + 1]) {
8669                    t = (t - p) / (_pos[i2 + 1] - p);
8670                    col = chroma$4.interpolate(_colors[i2], _colors[i2 + 1], t, _mode);
8671                    break;
8672                  }
8673                }
8674              } else if (type$2(_colors) === "function") {
8675                col = _colors(t);
8676              }
8677              if (_useCache) {
8678                _colorCache[k] = col;
8679              }
8680            }
8681            return col;
8682          };
8683          var resetCache = function() {
8684            return _colorCache = {};
8685          };
8686          setColors(colors);
8687          var f = function(v) {
8688            var c = chroma$4(getColor(v));
8689            if (_out && c[_out]) {
8690              return c[_out]();
8691            } else {
8692              return c;
8693            }
8694          };
8695          f.classes = function(classes) {
8696            if (classes != null) {
8697              if (type$2(classes) === "array") {
8698                _classes = classes;
8699                _domain = [classes[0], classes[classes.length - 1]];
8700              } else {
8701                var d = chroma$4.analyze(_domain);
8702                if (classes === 0) {
8703                  _classes = [d.min, d.max];
8704                } else {
8705                  _classes = chroma$4.limits(d, "e", classes);
8706                }
8707              }
8708              return f;
8709            }
8710            return _classes;
8711          };
8712          f.domain = function(domain) {
8713            if (!arguments.length) {
8714              return _domain;
8715            }
8716            _min = domain[0];
8717            _max = domain[domain.length - 1];
8718            _pos = [];
8719            var k = _colors.length;
8720            if (domain.length === k && _min !== _max) {
8721              for (var i2 = 0, list2 = Array.from(domain); i2 < list2.length; i2 += 1) {
8722                var d = list2[i2];
8723                _pos.push((d - _min) / (_max - _min));
8724              }
8725            } else {
8726              for (var c = 0; c < k; c++) {
8727                _pos.push(c / (k - 1));
8728              }
8729              if (domain.length > 2) {
8730                var tOut = domain.map(function(d2, i3) {
8731                  return i3 / (domain.length - 1);
8732                });
8733                var tBreaks = domain.map(function(d2) {
8734                  return (d2 - _min) / (_max - _min);
8735                });
8736                if (!tBreaks.every(function(val, i3) {
8737                  return tOut[i3] === val;
8738                })) {
8739                  tMapDomain = function(t) {
8740                    if (t <= 0 || t >= 1) {
8741                      return t;
8742                    }
8743                    var i3 = 0;
8744                    while (t >= tBreaks[i3 + 1]) {
8745                      i3++;
8746                    }
8747                    var f2 = (t - tBreaks[i3]) / (tBreaks[i3 + 1] - tBreaks[i3]);
8748                    var out = tOut[i3] + f2 * (tOut[i3 + 1] - tOut[i3]);
8749                    return out;
8750                  };
8751                }
8752              }
8753            }
8754            _domain = [_min, _max];
8755            return f;
8756          };
8757          f.mode = function(_m) {
8758            if (!arguments.length) {
8759              return _mode;
8760            }
8761            _mode = _m;
8762            resetCache();
8763            return f;
8764          };
8765          f.range = function(colors2, _pos2) {
8766            setColors(colors2);
8767            return f;
8768          };
8769          f.out = function(_o) {
8770            _out = _o;
8771            return f;
8772          };
8773          f.spread = function(val) {
8774            if (!arguments.length) {
8775              return _spread;
8776            }
8777            _spread = val;
8778            return f;
8779          };
8780          f.correctLightness = function(v) {
8781            if (v == null) {
8782              v = true;
8783            }
8784            _correctLightness = v;
8785            resetCache();
8786            if (_correctLightness) {
8787              tMapLightness = function(t) {
8788                var L0 = getColor(0, true).lab()[0];
8789                var L1 = getColor(1, true).lab()[0];
8790                var pol = L0 > L1;
8791                var L_actual = getColor(t, true).lab()[0];
8792                var L_ideal = L0 + (L1 - L0) * t;
8793                var L_diff = L_actual - L_ideal;
8794                var t0 = 0;
8795                var t1 = 1;
8796                var max_iter = 20;
8797                while (Math.abs(L_diff) > 0.01 && max_iter-- > 0) {
8798                  (function() {
8799                    if (pol) {
8800                      L_diff *= -1;
8801                    }
8802                    if (L_diff < 0) {
8803                      t0 = t;
8804                      t += (t1 - t) * 0.5;
8805                    } else {
8806                      t1 = t;
8807                      t += (t0 - t) * 0.5;
8808                    }
8809                    L_actual = getColor(t, true).lab()[0];
8810                    return L_diff = L_actual - L_ideal;
8811                  })();
8812                }
8813                return t;
8814              };
8815            } else {
8816              tMapLightness = function(t) {
8817                return t;
8818              };
8819            }
8820            return f;
8821          };
8822          f.padding = function(p) {
8823            if (p != null) {
8824              if (type$2(p) === "number") {
8825                p = [p, p];
8826              }
8827              _padding = p;
8828              return f;
8829            } else {
8830              return _padding;
8831            }
8832          };
8833          f.colors = function(numColors, out) {
8834            if (arguments.length < 2) {
8835              out = "hex";
8836            }
8837            var result = [];
8838            if (arguments.length === 0) {
8839              result = _colors.slice(0);
8840            } else if (numColors === 1) {
8841              result = [f(0.5)];
8842            } else if (numColors > 1) {
8843              var dm = _domain[0];
8844              var dd = _domain[1] - dm;
8845              result = __range__(0, numColors, false).map(function(i3) {
8846                return f(dm + i3 / (numColors - 1) * dd);
8847              });
8848            } else {
8849              colors = [];
8850              var samples = [];
8851              if (_classes && _classes.length > 2) {
8852                for (var i2 = 1, end = _classes.length, asc = 1 <= end; asc ? i2 < end : i2 > end; asc ? i2++ : i2--) {
8853                  samples.push((_classes[i2 - 1] + _classes[i2]) * 0.5);
8854                }
8855              } else {
8856                samples = _domain;
8857              }
8858              result = samples.map(function(v) {
8859                return f(v);
8860              });
8861            }
8862            if (chroma$4[out]) {
8863              result = result.map(function(c) {
8864                return c[out]();
8865              });
8866            }
8867            return result;
8868          };
8869          f.cache = function(c) {
8870            if (c != null) {
8871              _useCache = c;
8872              return f;
8873            } else {
8874              return _useCache;
8875            }
8876          };
8877          f.gamma = function(g) {
8878            if (g != null) {
8879              _gamma = g;
8880              return f;
8881            } else {
8882              return _gamma;
8883            }
8884          };
8885          f.nodata = function(d) {
8886            if (d != null) {
8887              _nacol = chroma$4(d);
8888              return f;
8889            } else {
8890              return _nacol;
8891            }
8892          };
8893          return f;
8894        };
8895        function __range__(left, right, inclusive) {
8896          var range = [];
8897          var ascending = left < right;
8898          var end = !inclusive ? right : ascending ? right + 1 : right - 1;
8899          for (var i2 = left; ascending ? i2 < end : i2 > end; ascending ? i2++ : i2--) {
8900            range.push(i2);
8901          }
8902          return range;
8903        }
8904        var Color$5 = Color_1;
8905        var scale$1 = scale$2;
8906        var binom_row = function(n) {
8907          var row = [1, 1];
8908          for (var i2 = 1; i2 < n; i2++) {
8909            var newrow = [1];
8910            for (var j = 1; j <= row.length; j++) {
8911              newrow[j] = (row[j] || 0) + row[j - 1];
8912            }
8913            row = newrow;
8914          }
8915          return row;
8916        };
8917        var bezier = function(colors) {
8918          var assign, assign$1, assign$2;
8919          var I, lab0, lab1, lab2;
8920          colors = colors.map(function(c) {
8921            return new Color$5(c);
8922          });
8923          if (colors.length === 2) {
8924            assign = colors.map(function(c) {
8925              return c.lab();
8926            }), lab0 = assign[0], lab1 = assign[1];
8927            I = function(t) {
8928              var lab4 = [0, 1, 2].map(function(i2) {
8929                return lab0[i2] + t * (lab1[i2] - lab0[i2]);
8930              });
8931              return new Color$5(lab4, "lab");
8932            };
8933          } else if (colors.length === 3) {
8934            assign$1 = colors.map(function(c) {
8935              return c.lab();
8936            }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2];
8937            I = function(t) {
8938              var lab4 = [0, 1, 2].map(function(i2) {
8939                return (1 - t) * (1 - t) * lab0[i2] + 2 * (1 - t) * t * lab1[i2] + t * t * lab2[i2];
8940              });
8941              return new Color$5(lab4, "lab");
8942            };
8943          } else if (colors.length === 4) {
8944            var lab3;
8945            assign$2 = colors.map(function(c) {
8946              return c.lab();
8947            }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3];
8948            I = function(t) {
8949              var lab4 = [0, 1, 2].map(function(i2) {
8950                return (1 - t) * (1 - t) * (1 - t) * lab0[i2] + 3 * (1 - t) * (1 - t) * t * lab1[i2] + 3 * (1 - t) * t * t * lab2[i2] + t * t * t * lab3[i2];
8951              });
8952              return new Color$5(lab4, "lab");
8953            };
8954          } else if (colors.length >= 5) {
8955            var labs, row, n;
8956            labs = colors.map(function(c) {
8957              return c.lab();
8958            });
8959            n = colors.length - 1;
8960            row = binom_row(n);
8961            I = function(t) {
8962              var u = 1 - t;
8963              var lab4 = [0, 1, 2].map(function(i2) {
8964                return labs.reduce(function(sum, el, j) {
8965                  return sum + row[j] * Math.pow(u, n - j) * Math.pow(t, j) * el[i2];
8966                }, 0);
8967              });
8968              return new Color$5(lab4, "lab");
8969            };
8970          } else {
8971            throw new RangeError("No point in running bezier with only one color.");
8972          }
8973          return I;
8974        };
8975        var bezier_1 = function(colors) {
8976          var f = bezier(colors);
8977          f.scale = function() {
8978            return scale$1(f);
8979          };
8980          return f;
8981        };
8982        var chroma$3 = chroma_1;
8983        var blend = function(bottom, top, mode) {
8984          if (!blend[mode]) {
8985            throw new Error("unknown blend mode " + mode);
8986          }
8987          return blend[mode](bottom, top);
8988        };
8989        var blend_f = function(f) {
8990          return function(bottom, top) {
8991            var c0 = chroma$3(top).rgb();
8992            var c1 = chroma$3(bottom).rgb();
8993            return chroma$3.rgb(f(c0, c1));
8994          };
8995        };
8996        var each = function(f) {
8997          return function(c0, c1) {
8998            var out = [];
8999            out[0] = f(c0[0], c1[0]);
9000            out[1] = f(c0[1], c1[1]);
9001            out[2] = f(c0[2], c1[2]);
9002            return out;
9003          };
9004        };
9005        var normal = function(a) {
9006          return a;
9007        };
9008        var multiply = function(a, b) {
9009          return a * b / 255;
9010        };
9011        var darken = function(a, b) {
9012          return a > b ? b : a;
9013        };
9014        var lighten = function(a, b) {
9015          return a > b ? a : b;
9016        };
9017        var screen = function(a, b) {
9018          return 255 * (1 - (1 - a / 255) * (1 - b / 255));
9019        };
9020        var overlay = function(a, b) {
9021          return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));
9022        };
9023        var burn = function(a, b) {
9024          return 255 * (1 - (1 - b / 255) / (a / 255));
9025        };
9026        var dodge = function(a, b) {
9027          if (a === 255) {
9028            return 255;
9029          }
9030          a = 255 * (b / 255) / (1 - a / 255);
9031          return a > 255 ? 255 : a;
9032        };
9033        blend.normal = blend_f(each(normal));
9034        blend.multiply = blend_f(each(multiply));
9035        blend.screen = blend_f(each(screen));
9036        blend.overlay = blend_f(each(overlay));
9037        blend.darken = blend_f(each(darken));
9038        blend.lighten = blend_f(each(lighten));
9039        blend.dodge = blend_f(each(dodge));
9040        blend.burn = blend_f(each(burn));
9041        var blend_1 = blend;
9042        var type$1 = utils.type;
9043        var clip_rgb = utils.clip_rgb;
9044        var TWOPI = utils.TWOPI;
9045        var pow$2 = Math.pow;
9046        var sin$1 = Math.sin;
9047        var cos$1 = Math.cos;
9048        var chroma$2 = chroma_1;
9049        var cubehelix = function(start, rotations, hue, gamma, lightness) {
9050          if (start === void 0) start = 300;
9051          if (rotations === void 0) rotations = -1.5;
9052          if (hue === void 0) hue = 1;
9053          if (gamma === void 0) gamma = 1;
9054          if (lightness === void 0) lightness = [0, 1];
9055          var dh = 0, dl;
9056          if (type$1(lightness) === "array") {
9057            dl = lightness[1] - lightness[0];
9058          } else {
9059            dl = 0;
9060            lightness = [lightness, lightness];
9061          }
9062          var f = function(fract) {
9063            var a = TWOPI * ((start + 120) / 360 + rotations * fract);
9064            var l = pow$2(lightness[0] + dl * fract, gamma);
9065            var h = dh !== 0 ? hue[0] + fract * dh : hue;
9066            var amp = h * l * (1 - l) / 2;
9067            var cos_a = cos$1(a);
9068            var sin_a = sin$1(a);
9069            var r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);
9070            var g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);
9071            var b = l + amp * (1.97294 * cos_a);
9072            return chroma$2(clip_rgb([r * 255, g * 255, b * 255, 1]));
9073          };
9074          f.start = function(s) {
9075            if (s == null) {
9076              return start;
9077            }
9078            start = s;
9079            return f;
9080          };
9081          f.rotations = function(r) {
9082            if (r == null) {
9083              return rotations;
9084            }
9085            rotations = r;
9086            return f;
9087          };
9088          f.gamma = function(g) {
9089            if (g == null) {
9090              return gamma;
9091            }
9092            gamma = g;
9093            return f;
9094          };
9095          f.hue = function(h) {
9096            if (h == null) {
9097              return hue;
9098            }
9099            hue = h;
9100            if (type$1(hue) === "array") {
9101              dh = hue[1] - hue[0];
9102              if (dh === 0) {
9103                hue = hue[1];
9104              }
9105            } else {
9106              dh = 0;
9107            }
9108            return f;
9109          };
9110          f.lightness = function(h) {
9111            if (h == null) {
9112              return lightness;
9113            }
9114            if (type$1(h) === "array") {
9115              lightness = h;
9116              dl = h[1] - h[0];
9117            } else {
9118              lightness = [h, h];
9119              dl = 0;
9120            }
9121            return f;
9122          };
9123          f.scale = function() {
9124            return chroma$2.scale(f);
9125          };
9126          f.hue(hue);
9127          return f;
9128        };
9129        var Color$4 = Color_1;
9130        var digits = "0123456789abcdef";
9131        var floor$1 = Math.floor;
9132        var random = Math.random;
9133        var random_1 = function() {
9134          var code = "#";
9135          for (var i2 = 0; i2 < 6; i2++) {
9136            code += digits.charAt(floor$1(random() * 16));
9137          }
9138          return new Color$4(code, "hex");
9139        };
9140        var type = type$p;
9141        var log = Math.log;
9142        var pow$1 = Math.pow;
9143        var floor = Math.floor;
9144        var abs$1 = Math.abs;
9145        var analyze = function(data, key2) {
9146          if (key2 === void 0) key2 = null;
9147          var r = {
9148            min: Number.MAX_VALUE,
9149            max: Number.MAX_VALUE * -1,
9150            sum: 0,
9151            values: [],
9152            count: 0
9153          };
9154          if (type(data) === "object") {
9155            data = Object.values(data);
9156          }
9157          data.forEach(function(val) {
9158            if (key2 && type(val) === "object") {
9159              val = val[key2];
9160            }
9161            if (val !== void 0 && val !== null && !isNaN(val)) {
9162              r.values.push(val);
9163              r.sum += val;
9164              if (val < r.min) {
9165                r.min = val;
9166              }
9167              if (val > r.max) {
9168                r.max = val;
9169              }
9170              r.count += 1;
9171            }
9172          });
9173          r.domain = [r.min, r.max];
9174          r.limits = function(mode, num2) {
9175            return limits(r, mode, num2);
9176          };
9177          return r;
9178        };
9179        var limits = function(data, mode, num2) {
9180          if (mode === void 0) mode = "equal";
9181          if (num2 === void 0) num2 = 7;
9182          if (type(data) == "array") {
9183            data = analyze(data);
9184          }
9185          var min2 = data.min;
9186          var max2 = data.max;
9187          var values = data.values.sort(function(a, b) {
9188            return a - b;
9189          });
9190          if (num2 === 1) {
9191            return [min2, max2];
9192          }
9193          var limits2 = [];
9194          if (mode.substr(0, 1) === "c") {
9195            limits2.push(min2);
9196            limits2.push(max2);
9197          }
9198          if (mode.substr(0, 1) === "e") {
9199            limits2.push(min2);
9200            for (var i2 = 1; i2 < num2; i2++) {
9201              limits2.push(min2 + i2 / num2 * (max2 - min2));
9202            }
9203            limits2.push(max2);
9204          } else if (mode.substr(0, 1) === "l") {
9205            if (min2 <= 0) {
9206              throw new Error("Logarithmic scales are only possible for values > 0");
9207            }
9208            var min_log = Math.LOG10E * log(min2);
9209            var max_log = Math.LOG10E * log(max2);
9210            limits2.push(min2);
9211            for (var i$12 = 1; i$12 < num2; i$12++) {
9212              limits2.push(pow$1(10, min_log + i$12 / num2 * (max_log - min_log)));
9213            }
9214            limits2.push(max2);
9215          } else if (mode.substr(0, 1) === "q") {
9216            limits2.push(min2);
9217            for (var i$2 = 1; i$2 < num2; i$2++) {
9218              var p = (values.length - 1) * i$2 / num2;
9219              var pb = floor(p);
9220              if (pb === p) {
9221                limits2.push(values[pb]);
9222              } else {
9223                var pr = p - pb;
9224                limits2.push(values[pb] * (1 - pr) + values[pb + 1] * pr);
9225              }
9226            }
9227            limits2.push(max2);
9228          } else if (mode.substr(0, 1) === "k") {
9229            var cluster;
9230            var n = values.length;
9231            var assignments = new Array(n);
9232            var clusterSizes = new Array(num2);
9233            var repeat = true;
9234            var nb_iters = 0;
9235            var centroids = null;
9236            centroids = [];
9237            centroids.push(min2);
9238            for (var i$3 = 1; i$3 < num2; i$3++) {
9239              centroids.push(min2 + i$3 / num2 * (max2 - min2));
9240            }
9241            centroids.push(max2);
9242            while (repeat) {
9243              for (var j = 0; j < num2; j++) {
9244                clusterSizes[j] = 0;
9245              }
9246              for (var i$4 = 0; i$4 < n; i$4++) {
9247                var value = values[i$4];
9248                var mindist = Number.MAX_VALUE;
9249                var best = void 0;
9250                for (var j$1 = 0; j$1 < num2; j$1++) {
9251                  var dist = abs$1(centroids[j$1] - value);
9252                  if (dist < mindist) {
9253                    mindist = dist;
9254                    best = j$1;
9255                  }
9256                  clusterSizes[best]++;
9257                  assignments[i$4] = best;
9258                }
9259              }
9260              var newCentroids = new Array(num2);
9261              for (var j$2 = 0; j$2 < num2; j$2++) {
9262                newCentroids[j$2] = null;
9263              }
9264              for (var i$5 = 0; i$5 < n; i$5++) {
9265                cluster = assignments[i$5];
9266                if (newCentroids[cluster] === null) {
9267                  newCentroids[cluster] = values[i$5];
9268                } else {
9269                  newCentroids[cluster] += values[i$5];
9270                }
9271              }
9272              for (var j$3 = 0; j$3 < num2; j$3++) {
9273                newCentroids[j$3] *= 1 / clusterSizes[j$3];
9274              }
9275              repeat = false;
9276              for (var j$4 = 0; j$4 < num2; j$4++) {
9277                if (newCentroids[j$4] !== centroids[j$4]) {
9278                  repeat = true;
9279                  break;
9280                }
9281              }
9282              centroids = newCentroids;
9283              nb_iters++;
9284              if (nb_iters > 200) {
9285                repeat = false;
9286              }
9287            }
9288            var kClusters = {};
9289            for (var j$5 = 0; j$5 < num2; j$5++) {
9290              kClusters[j$5] = [];
9291            }
9292            for (var i$6 = 0; i$6 < n; i$6++) {
9293              cluster = assignments[i$6];
9294              kClusters[cluster].push(values[i$6]);
9295            }
9296            var tmpKMeansBreaks = [];
9297            for (var j$6 = 0; j$6 < num2; j$6++) {
9298              tmpKMeansBreaks.push(kClusters[j$6][0]);
9299              tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length - 1]);
9300            }
9301            tmpKMeansBreaks = tmpKMeansBreaks.sort(function(a, b) {
9302              return a - b;
9303            });
9304            limits2.push(tmpKMeansBreaks[0]);
9305            for (var i$7 = 1; i$7 < tmpKMeansBreaks.length; i$7 += 2) {
9306              var v = tmpKMeansBreaks[i$7];
9307              if (!isNaN(v) && limits2.indexOf(v) === -1) {
9308                limits2.push(v);
9309              }
9310            }
9311          }
9312          return limits2;
9313        };
9314        var analyze_1 = { analyze, limits };
9315        var Color$3 = Color_1;
9316        var contrast = function(a, b) {
9317          a = new Color$3(a);
9318          b = new Color$3(b);
9319          var l1 = a.luminance();
9320          var l2 = b.luminance();
9321          return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);
9322        };
9323        var Color$2 = Color_1;
9324        var sqrt = Math.sqrt;
9325        var pow = Math.pow;
9326        var min = Math.min;
9327        var max = Math.max;
9328        var atan2 = Math.atan2;
9329        var abs = Math.abs;
9330        var cos = Math.cos;
9331        var sin = Math.sin;
9332        var exp = Math.exp;
9333        var PI = Math.PI;
9334        var deltaE = function(a, b, Kl, Kc, Kh) {
9335          if (Kl === void 0) Kl = 1;
9336          if (Kc === void 0) Kc = 1;
9337          if (Kh === void 0) Kh = 1;
9338          var rad2deg = function(rad) {
9339            return 360 * rad / (2 * PI);
9340          };
9341          var deg2rad = function(deg) {
9342            return 2 * PI * deg / 360;
9343          };
9344          a = new Color$2(a);
9345          b = new Color$2(b);
9346          var ref = Array.from(a.lab());
9347          var L1 = ref[0];
9348          var a1 = ref[1];
9349          var b1 = ref[2];
9350          var ref$1 = Array.from(b.lab());
9351          var L2 = ref$1[0];
9352          var a2 = ref$1[1];
9353          var b2 = ref$1[2];
9354          var avgL = (L1 + L2) / 2;
9355          var C1 = sqrt(pow(a1, 2) + pow(b1, 2));
9356          var C2 = sqrt(pow(a2, 2) + pow(b2, 2));
9357          var avgC = (C1 + C2) / 2;
9358          var G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7))));
9359          var a1p = a1 * (1 + G);
9360          var a2p = a2 * (1 + G);
9361          var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));
9362          var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));
9363          var avgCp = (C1p + C2p) / 2;
9364          var arctan1 = rad2deg(atan2(b1, a1p));
9365          var arctan2 = rad2deg(atan2(b2, a2p));
9366          var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;
9367          var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;
9368          var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2;
9369          var T = 1 - 0.17 * cos(deg2rad(avgHp - 30)) + 0.24 * cos(deg2rad(2 * avgHp)) + 0.32 * cos(deg2rad(3 * avgHp + 6)) - 0.2 * cos(deg2rad(4 * avgHp - 63));
9370          var deltaHp = h2p - h1p;
9371          deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;
9372          deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2);
9373          var deltaL = L2 - L1;
9374          var deltaCp = C2p - C1p;
9375          var sl = 1 + 0.015 * pow(avgL - 50, 2) / sqrt(20 + pow(avgL - 50, 2));
9376          var sc = 1 + 0.045 * avgCp;
9377          var sh = 1 + 0.015 * avgCp * T;
9378          var deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2));
9379          var Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7)));
9380          var Rt = -Rc * sin(2 * deg2rad(deltaTheta));
9381          var result = sqrt(pow(deltaL / (Kl * sl), 2) + pow(deltaCp / (Kc * sc), 2) + pow(deltaHp / (Kh * sh), 2) + Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh)));
9382          return max(0, min(100, result));
9383        };
9384        var Color$1 = Color_1;
9385        var distance = function(a, b, mode) {
9386          if (mode === void 0) mode = "lab";
9387          a = new Color$1(a);
9388          b = new Color$1(b);
9389          var l1 = a.get(mode);
9390          var l2 = b.get(mode);
9391          var sum_sq = 0;
9392          for (var i2 in l1) {
9393            var d = (l1[i2] || 0) - (l2[i2] || 0);
9394            sum_sq += d * d;
9395          }
9396          return Math.sqrt(sum_sq);
9397        };
9398        var Color = Color_1;
9399        var valid = function() {
9400          var args = [], len = arguments.length;
9401          while (len--) args[len] = arguments[len];
9402          try {
9403            new (Function.prototype.bind.apply(Color, [null].concat(args)))();
9404            return true;
9405          } catch (e) {
9406            return false;
9407          }
9408        };
9409        var chroma$1 = chroma_1;
9410        var scale = scale$2;
9411        var scales = {
9412          cool: function cool() {
9413            return scale([chroma$1.hsl(180, 1, 0.9), chroma$1.hsl(250, 0.7, 0.4)]);
9414          },
9415          hot: function hot() {
9416            return scale(["#000", "#f00", "#ff0", "#fff"]).mode("rgb");
9417          }
9418        };
9419        var colorbrewer = {
9420          // sequential
9421          OrRd: ["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"],
9422          PuBu: ["#fff7fb", "#ece7f2", "#d0d1e6", "#a6bddb", "#74a9cf", "#3690c0", "#0570b0", "#045a8d", "#023858"],
9423          BuPu: ["#f7fcfd", "#e0ecf4", "#bfd3e6", "#9ebcda", "#8c96c6", "#8c6bb1", "#88419d", "#810f7c", "#4d004b"],
9424          Oranges: ["#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"],
9425          BuGn: ["#f7fcfd", "#e5f5f9", "#ccece6", "#99d8c9", "#66c2a4", "#41ae76", "#238b45", "#006d2c", "#00441b"],
9426          YlOrBr: ["#ffffe5", "#fff7bc", "#fee391", "#fec44f", "#fe9929", "#ec7014", "#cc4c02", "#993404", "#662506"],
9427          YlGn: ["#ffffe5", "#f7fcb9", "#d9f0a3", "#addd8e", "#78c679", "#41ab5d", "#238443", "#006837", "#004529"],
9428          Reds: ["#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"],
9429          RdPu: ["#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497", "#ae017e", "#7a0177", "#49006a"],
9430          Greens: ["#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"],
9431          YlGnBu: ["#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0", "#225ea8", "#253494", "#081d58"],
9432          Purples: ["#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"],
9433          GnBu: ["#f7fcf0", "#e0f3db", "#ccebc5", "#a8ddb5", "#7bccc4", "#4eb3d3", "#2b8cbe", "#0868ac", "#084081"],
9434          Greys: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"],
9435          YlOrRd: ["#ffffcc", "#ffeda0", "#fed976", "#feb24c", "#fd8d3c", "#fc4e2a", "#e31a1c", "#bd0026", "#800026"],
9436          PuRd: ["#f7f4f9", "#e7e1ef", "#d4b9da", "#c994c7", "#df65b0", "#e7298a", "#ce1256", "#980043", "#67001f"],
9437          Blues: ["#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"],
9438          PuBuGn: ["#fff7fb", "#ece2f0", "#d0d1e6", "#a6bddb", "#67a9cf", "#3690c0", "#02818a", "#016c59", "#014636"],
9439          Viridis: ["#440154", "#482777", "#3f4a8a", "#31678e", "#26838f", "#1f9d8a", "#6cce5a", "#b6de2b", "#fee825"],
9440          // diverging
9441          Spectral: ["#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"],
9442          RdYlGn: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"],
9443          RdBu: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"],
9444          PiYG: ["#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"],
9445          PRGn: ["#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"],
9446          RdYlBu: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"],
9447          BrBG: ["#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"],
9448          RdGy: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"],
9449          PuOr: ["#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"],
9450          // qualitative
9451          Set2: ["#66c2a5", "#fc8d62", "#8da0cb", "#e78ac3", "#a6d854", "#ffd92f", "#e5c494", "#b3b3b3"],
9452          Accent: ["#7fc97f", "#beaed4", "#fdc086", "#ffff99", "#386cb0", "#f0027f", "#bf5b17", "#666666"],
9453          Set1: ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999"],
9454          Set3: ["#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5", "#d9d9d9", "#bc80bd", "#ccebc5", "#ffed6f"],
9455          Dark2: ["#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e", "#e6ab02", "#a6761d", "#666666"],
9456          Paired: ["#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00", "#cab2d6", "#6a3d9a", "#ffff99", "#b15928"],
9457          Pastel2: ["#b3e2cd", "#fdcdac", "#cbd5e8", "#f4cae4", "#e6f5c9", "#fff2ae", "#f1e2cc", "#cccccc"],
9458          Pastel1: ["#fbb4ae", "#b3cde3", "#ccebc5", "#decbe4", "#fed9a6", "#ffffcc", "#e5d8bd", "#fddaec", "#f2f2f2"]
9459        };
9460        for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {
9461          var key = list[i];
9462          colorbrewer[key.toLowerCase()] = colorbrewer[key];
9463        }
9464        var colorbrewer_1 = colorbrewer;
9465        var chroma2 = chroma_1;
9466        chroma2.average = average;
9467        chroma2.bezier = bezier_1;
9468        chroma2.blend = blend_1;
9469        chroma2.cubehelix = cubehelix;
9470        chroma2.mix = chroma2.interpolate = mix$1;
9471        chroma2.random = random_1;
9472        chroma2.scale = scale$2;
9473        chroma2.analyze = analyze_1.analyze;
9474        chroma2.contrast = contrast;
9475        chroma2.deltaE = deltaE;
9476        chroma2.distance = distance;
9477        chroma2.limits = analyze_1.limits;
9478        chroma2.valid = valid;
9479        chroma2.scales = scales;
9480        chroma2.colors = w3cx11_1;
9481        chroma2.brewer = colorbrewer_1;
9482        var chroma_js = chroma2;
9483        return chroma_js;
9484      });
9485    }
9486  });
9487
9488  
9488// app/javascript/entrypoints/customer-center/chroma.js
9489  init_define_process();
9490  init_jquery();
9491  var import_chroma_js = __toESM(require_chroma());
9492  window.chroma = import_chroma_js.default;
9493})();
9494/*! Bundled license information:
9495
9496jquery/dist/jquery.js:
9497  (*!
9498   * jQuery JavaScript Library v3.5.1
9499   * https://jquery.com/
9500   *
9501   * Includes Sizzle.js
9502   * https://sizzlejs.com/
9503   *
9504   * Copyright JS Foundation and other contributors
9505   * Released under the MIT license
9506   * https://jquery.org/license
9507   *
9508   * Date: 2020-05-04T22:49Z
9509   *)
9510
9511chroma-js/chroma.js:
9512  (**
9513   * chroma.js - JavaScript library for color conversions
9514   *
9515   * Copyright (c) 2011-2019, Gregor Aisch
9516   * All rights reserved.
9517   *
9518   * Redistribution and use in source and binary forms, with or without
9519   * modification, are permitted provided that the following conditions are met:
9520   *
9521   * 1. Redistributions of source code must retain the above copyright notice, this
9522   * list of conditions and the following disclaimer.
9523   *
9524   * 2. Redistributions in binary form must reproduce the above copyright notice,
9525   * this list of conditions and the following disclaimer in the documentation
9526   * and/or other materials provided with the distribution.
9527   *
9528   * 3. The name Gregor Aisch may not be used to endorse or promote products
9529   * derived from this software without specific prior written permission.
9530   *
9531   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
9532   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9533   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
9534   * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
9535   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
9536   * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9537   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
9538   * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
9539   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
9540   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9541   *
9542   * -------------------------------------------------------
9543   *
9544   * chroma.js includes colors from colorbrewer2.org, which are released under
9545   * the following license:
9546   *
9547   * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,
9548   * and The Pennsylvania State University.
9549   *
9550   * Licensed under the Apache License, Version 2.0 (the "License");
9551   * you may not use this file except in compliance with the License.
9552   * You may obtain a copy of the License at
9553   * http://www.apache.org/licenses/LICENSE-2.0
9554   *
9555   * Unless required by applicable law or agreed to in writing,
9556   * software distributed under the License is distributed on an
9557   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
9558   * either express or implied. See the License for the specific
9559   * language governing permissions and limitations under the License.
9560   *
9561   * ------------------------------------------------------
9562   *
9563   * Named colors are taken from X11 Color Names.
9564   * http://www.w3.org/TR/css3-color/#svg-color
9565   *
9566   * @preserve
9567   *)
9568*/
9569//# sourceMappingURL=/assets/chroma.js-7c6a106a46b97e0ee0488143f4558d7f2f5b3b4a267fbee5c165a1cc0d22ceba.map
9570//!
9571;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.