Index: imaps-frontend/node_modules/.vite/deps/_metadata.json
===================================================================
--- imaps-frontend/node_modules/.vite/deps/_metadata.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/.vite/deps/_metadata.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,12 +1,12 @@
 {
-  "hash": "2c24f994",
+  "hash": "cc50243c",
   "configHash": "837c12a6",
-  "lockfileHash": "59dab0f2",
-  "browserHash": "aa530227",
+  "lockfileHash": "59e4b273",
+  "browserHash": "54a074df",
   "optimized": {
     "react": {
       "src": "../../react/index.js",
       "file": "react.js",
-      "fileHash": "68f133c1",
+      "fileHash": "c082a74c",
       "needsInterop": true
     },
@@ -14,5 +14,5 @@
       "src": "../../react-dom/index.js",
       "file": "react-dom.js",
-      "fileHash": "18942359",
+      "fileHash": "883e5857",
       "needsInterop": true
     },
@@ -20,5 +20,5 @@
       "src": "../../react/jsx-dev-runtime.js",
       "file": "react_jsx-dev-runtime.js",
-      "fileHash": "b9378634",
+      "fileHash": "fe8414ff",
       "needsInterop": true
     },
@@ -26,5 +26,5 @@
       "src": "../../react/jsx-runtime.js",
       "file": "react_jsx-runtime.js",
-      "fileHash": "6ae1222f",
+      "fileHash": "93034c75",
       "needsInterop": true
     },
@@ -32,11 +32,17 @@
       "src": "../../eslint-plugin-react/lib/util/log.js",
       "file": "eslint-plugin-react_lib_util_log__js.js",
-      "fileHash": "47dee916",
+      "fileHash": "897284d4",
       "needsInterop": true
+    },
+    "jspdf": {
+      "src": "../../jspdf/dist/jspdf.es.min.js",
+      "file": "jspdf.js",
+      "fileHash": "bc90021b",
+      "needsInterop": false
     },
     "konva": {
       "src": "../../konva/lib/index.js",
       "file": "konva.js",
-      "fileHash": "cc46c221",
+      "fileHash": "ea792500",
       "needsInterop": true
     },
@@ -44,5 +50,5 @@
       "src": "../../konva/lib/Global.js",
       "file": "konva_lib_Global.js",
-      "fileHash": "f387d01b",
+      "fileHash": "1edf8837",
       "needsInterop": true
     },
@@ -50,5 +56,5 @@
       "src": "../../konva/lib/Global.js",
       "file": "konva_lib_Global__js.js",
-      "fileHash": "2bb53dd2",
+      "fileHash": "96660975",
       "needsInterop": true
     },
@@ -56,5 +62,5 @@
       "src": "../../prop-types/index.js",
       "file": "prop-types.js",
-      "fileHash": "eed74826",
+      "fileHash": "9a5116ba",
       "needsInterop": true
     },
@@ -62,5 +68,5 @@
       "src": "../../react-dom/client.js",
       "file": "react-dom_client.js",
-      "fileHash": "e4bddeef",
+      "fileHash": "fadf9dbe",
       "needsInterop": true
     },
@@ -68,5 +74,5 @@
       "src": "../../react-router-dom/dist/index.js",
       "file": "react-router-dom.js",
-      "fileHash": "11359996",
+      "fileHash": "5b7ee6d3",
       "needsInterop": false
     },
@@ -74,9 +80,27 @@
       "src": "../../react-tiles-dnd/esm/index.js",
       "file": "react-tiles-dnd.js",
-      "fileHash": "f409283a",
+      "fileHash": "5b476061",
+      "needsInterop": false
+    },
+    "uuid": {
+      "src": "../../uuid/dist/esm-browser/index.js",
+      "file": "uuid.js",
+      "fileHash": "636f8914",
       "needsInterop": false
     }
   },
   "chunks": {
+    "index.es-7XNKQPVZ": {
+      "file": "index__es-7XNKQPVZ.js"
+    },
+    "chunk-D7ZASVPN": {
+      "file": "chunk-D7ZASVPN.js"
+    },
+    "html2canvas.esm-WKGZI7AQ": {
+      "file": "html2canvas__esm-WKGZI7AQ.js"
+    },
+    "purify.es-25GRGOID": {
+      "file": "purify__es-25GRGOID.js"
+    },
     "chunk-GKJBSOWT": {
       "file": "chunk-GKJBSOWT.js"
Index: imaps-frontend/node_modules/.vite/deps/chunk-D7ZASVPN.js
===================================================================
--- imaps-frontend/node_modules/.vite/deps/chunk-D7ZASVPN.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/chunk-D7ZASVPN.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,14 @@
+// node_modules/@babel/runtime/helpers/esm/typeof.js
+function _typeof(o) {
+  "@babel/helpers - typeof";
+  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
+    return typeof o2;
+  } : function(o2) {
+    return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
+  }, _typeof(o);
+}
+
+export {
+  _typeof
+};
+//# sourceMappingURL=chunk-D7ZASVPN.js.map
Index: imaps-frontend/node_modules/.vite/deps/chunk-D7ZASVPN.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/chunk-D7ZASVPN.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/chunk-D7ZASVPN.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": ["../../@babel/runtime/helpers/esm/typeof.js"],
+  "sourcesContent": ["function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };"],
+  "mappings": ";AAAA,SAAS,QAAQ,GAAG;AAClB;AAEA,SAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUA,IAAG;AAChG,WAAO,OAAOA;AAAA,EAChB,IAAI,SAAUA,IAAG;AACf,WAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EACpH,GAAG,QAAQ,CAAC;AACd;",
+  "names": ["o"]
+}
Index: imaps-frontend/node_modules/.vite/deps/html2canvas.esm-WKGZI7AQ.js
===================================================================
--- imaps-frontend/node_modules/.vite/deps/html2canvas.esm-WKGZI7AQ.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/html2canvas.esm-WKGZI7AQ.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7808 @@
+import "./chunk-V4OQ3NZ2.js";
+
+// node_modules/html2canvas/dist/html2canvas.esm.js
+var extendStatics = function(d, b) {
+  extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
+    d2.__proto__ = b2;
+  } || function(d2, b2) {
+    for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
+  };
+  return extendStatics(d, b);
+};
+function __extends(d, b) {
+  if (typeof b !== "function" && b !== null)
+    throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+  extendStatics(d, b);
+  function __() {
+    this.constructor = d;
+  }
+  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+}
+var __assign = function() {
+  __assign = Object.assign || function __assign2(t) {
+    for (var s, i = 1, n = arguments.length; i < n; i++) {
+      s = arguments[i];
+      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+    }
+    return t;
+  };
+  return __assign.apply(this, arguments);
+};
+function __awaiter(thisArg, _arguments, P, generator) {
+  function adopt(value) {
+    return value instanceof P ? value : new P(function(resolve) {
+      resolve(value);
+    });
+  }
+  return new (P || (P = Promise))(function(resolve, reject) {
+    function fulfilled(value) {
+      try {
+        step(generator.next(value));
+      } catch (e2) {
+        reject(e2);
+      }
+    }
+    function rejected(value) {
+      try {
+        step(generator["throw"](value));
+      } catch (e2) {
+        reject(e2);
+      }
+    }
+    function step(result) {
+      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
+    }
+    step((generator = generator.apply(thisArg, _arguments || [])).next());
+  });
+}
+function __generator(thisArg, body) {
+  var _ = { label: 0, sent: function() {
+    if (t[0] & 1) throw t[1];
+    return t[1];
+  }, trys: [], ops: [] }, f2, y, t, g;
+  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
+    return this;
+  }), g;
+  function verb(n) {
+    return function(v) {
+      return step([n, v]);
+    };
+  }
+  function step(op) {
+    if (f2) throw new TypeError("Generator is already executing.");
+    while (_) try {
+      if (f2 = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+      if (y = 0, t) op = [op[0] & 2, t.value];
+      switch (op[0]) {
+        case 0:
+        case 1:
+          t = op;
+          break;
+        case 4:
+          _.label++;
+          return { value: op[1], done: false };
+        case 5:
+          _.label++;
+          y = op[1];
+          op = [0];
+          continue;
+        case 7:
+          op = _.ops.pop();
+          _.trys.pop();
+          continue;
+        default:
+          if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+            _ = 0;
+            continue;
+          }
+          if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+            _.label = op[1];
+            break;
+          }
+          if (op[0] === 6 && _.label < t[1]) {
+            _.label = t[1];
+            t = op;
+            break;
+          }
+          if (t && _.label < t[2]) {
+            _.label = t[2];
+            _.ops.push(op);
+            break;
+          }
+          if (t[2]) _.ops.pop();
+          _.trys.pop();
+          continue;
+      }
+      op = body.call(thisArg, _);
+    } catch (e2) {
+      op = [6, e2];
+      y = 0;
+    } finally {
+      f2 = t = 0;
+    }
+    if (op[0] & 5) throw op[1];
+    return { value: op[0] ? op[1] : void 0, done: true };
+  }
+}
+function __spreadArray(to, from, pack2) {
+  if (pack2 || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+    if (ar || !(i in from)) {
+      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+      ar[i] = from[i];
+    }
+  }
+  return to.concat(ar || from);
+}
+var Bounds = (
+  /** @class */
+  function() {
+    function Bounds2(left, top, width, height) {
+      this.left = left;
+      this.top = top;
+      this.width = width;
+      this.height = height;
+    }
+    Bounds2.prototype.add = function(x, y, w, h) {
+      return new Bounds2(this.left + x, this.top + y, this.width + w, this.height + h);
+    };
+    Bounds2.fromClientRect = function(context, clientRect) {
+      return new Bounds2(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);
+    };
+    Bounds2.fromDOMRectList = function(context, domRectList) {
+      var domRect = Array.from(domRectList).find(function(rect) {
+        return rect.width !== 0;
+      });
+      return domRect ? new Bounds2(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds2.EMPTY;
+    };
+    Bounds2.EMPTY = new Bounds2(0, 0, 0, 0);
+    return Bounds2;
+  }()
+);
+var parseBounds = function(context, node) {
+  return Bounds.fromClientRect(context, node.getBoundingClientRect());
+};
+var parseDocumentSize = function(document2) {
+  var body = document2.body;
+  var documentElement = document2.documentElement;
+  if (!body || !documentElement) {
+    throw new Error("Unable to get document size");
+  }
+  var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
+  var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
+  return new Bounds(0, 0, width, height);
+};
+var toCodePoints$1 = function(str) {
+  var codePoints = [];
+  var i = 0;
+  var length = str.length;
+  while (i < length) {
+    var value = str.charCodeAt(i++);
+    if (value >= 55296 && value <= 56319 && i < length) {
+      var extra = str.charCodeAt(i++);
+      if ((extra & 64512) === 56320) {
+        codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
+      } else {
+        codePoints.push(value);
+        i--;
+      }
+    } else {
+      codePoints.push(value);
+    }
+  }
+  return codePoints;
+};
+var fromCodePoint$1 = function() {
+  var codePoints = [];
+  for (var _i = 0; _i < arguments.length; _i++) {
+    codePoints[_i] = arguments[_i];
+  }
+  if (String.fromCodePoint) {
+    return String.fromCodePoint.apply(String, codePoints);
+  }
+  var length = codePoints.length;
+  if (!length) {
+    return "";
+  }
+  var codeUnits = [];
+  var index = -1;
+  var result = "";
+  while (++index < length) {
+    var codePoint = codePoints[index];
+    if (codePoint <= 65535) {
+      codeUnits.push(codePoint);
+    } else {
+      codePoint -= 65536;
+      codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
+    }
+    if (index + 1 === length || codeUnits.length > 16384) {
+      result += String.fromCharCode.apply(String, codeUnits);
+      codeUnits.length = 0;
+    }
+  }
+  return result;
+};
+var chars$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+var lookup$2 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+for (i$2 = 0; i$2 < chars$2.length; i$2++) {
+  lookup$2[chars$2.charCodeAt(i$2)] = i$2;
+}
+var i$2;
+var chars$1$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+var lookup$1$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+for (i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
+  lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;
+}
+var i$1$1;
+var decode$1 = function(base642) {
+  var bufferLength = base642.length * 0.75, len = base642.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
+  if (base642[base642.length - 1] === "=") {
+    bufferLength--;
+    if (base642[base642.length - 2] === "=") {
+      bufferLength--;
+    }
+  }
+  var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
+  var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
+  for (i = 0; i < len; i += 4) {
+    encoded1 = lookup$1$1[base642.charCodeAt(i)];
+    encoded2 = lookup$1$1[base642.charCodeAt(i + 1)];
+    encoded3 = lookup$1$1[base642.charCodeAt(i + 2)];
+    encoded4 = lookup$1$1[base642.charCodeAt(i + 3)];
+    bytes[p++] = encoded1 << 2 | encoded2 >> 4;
+    bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
+    bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
+  }
+  return buffer;
+};
+var polyUint16Array$1 = function(buffer) {
+  var length = buffer.length;
+  var bytes = [];
+  for (var i = 0; i < length; i += 2) {
+    bytes.push(buffer[i + 1] << 8 | buffer[i]);
+  }
+  return bytes;
+};
+var polyUint32Array$1 = function(buffer) {
+  var length = buffer.length;
+  var bytes = [];
+  for (var i = 0; i < length; i += 4) {
+    bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);
+  }
+  return bytes;
+};
+var UTRIE2_SHIFT_2$1 = 5;
+var UTRIE2_SHIFT_1$1 = 6 + 5;
+var UTRIE2_INDEX_SHIFT$1 = 2;
+var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;
+var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1;
+var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;
+var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;
+var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1;
+var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;
+var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;
+var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6;
+var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;
+var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1;
+var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;
+var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;
+var slice16$1 = function(view, start, end) {
+  if (view.slice) {
+    return view.slice(start, end);
+  }
+  return new Uint16Array(Array.prototype.slice.call(view, start, end));
+};
+var slice32$1 = function(view, start, end) {
+  if (view.slice) {
+    return view.slice(start, end);
+  }
+  return new Uint32Array(Array.prototype.slice.call(view, start, end));
+};
+var createTrieFromBase64$1 = function(base642, _byteLength) {
+  var buffer = decode$1(base642);
+  var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);
+  var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);
+  var headerLength = 24;
+  var index = slice16$1(view16, headerLength / 2, view32[4] / 2);
+  var data = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));
+  return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);
+};
+var Trie$1 = (
+  /** @class */
+  function() {
+    function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data) {
+      this.initialValue = initialValue;
+      this.errorValue = errorValue;
+      this.highStart = highStart;
+      this.highValueIndex = highValueIndex;
+      this.index = index;
+      this.data = data;
+    }
+    Trie2.prototype.get = function(codePoint) {
+      var ix;
+      if (codePoint >= 0) {
+        if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
+          ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];
+          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
+          return this.data[ix];
+        }
+        if (codePoint <= 65535) {
+          ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 55296 >> UTRIE2_SHIFT_2$1)];
+          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
+          return this.data[ix];
+        }
+        if (codePoint < this.highStart) {
+          ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);
+          ix = this.index[ix];
+          ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1;
+          ix = this.index[ix];
+          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
+          return this.data[ix];
+        }
+        if (codePoint <= 1114111) {
+          return this.data[this.highValueIndex];
+        }
+      }
+      return this.errorValue;
+    };
+    return Trie2;
+  }()
+);
+var chars$3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+var lookup$3 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+for (i$3 = 0; i$3 < chars$3.length; i$3++) {
+  lookup$3[chars$3.charCodeAt(i$3)] = i$3;
+}
+var i$3;
+var base64$1 = "KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==";
+var LETTER_NUMBER_MODIFIER = 50;
+var BK = 1;
+var CR$1 = 2;
+var LF$1 = 3;
+var CM = 4;
+var NL = 5;
+var WJ = 7;
+var ZW = 8;
+var GL = 9;
+var SP = 10;
+var ZWJ$1 = 11;
+var B2 = 12;
+var BA = 13;
+var BB = 14;
+var HY = 15;
+var CB = 16;
+var CL = 17;
+var CP = 18;
+var EX = 19;
+var IN = 20;
+var NS = 21;
+var OP = 22;
+var QU = 23;
+var IS = 24;
+var NU = 25;
+var PO = 26;
+var PR = 27;
+var SY = 28;
+var AI = 29;
+var AL = 30;
+var CJ = 31;
+var EB = 32;
+var EM = 33;
+var H2 = 34;
+var H3 = 35;
+var HL = 36;
+var ID = 37;
+var JL = 38;
+var JV = 39;
+var JT = 40;
+var RI$1 = 41;
+var SA = 42;
+var XX = 43;
+var ea_OP = [9001, 65288];
+var BREAK_MANDATORY = "!";
+var BREAK_NOT_ALLOWED$1 = "×";
+var BREAK_ALLOWED$1 = "÷";
+var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);
+var ALPHABETICS = [AL, HL];
+var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];
+var SPACE$1 = [SP, ZW];
+var PREFIX_POSTFIX = [PR, PO];
+var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);
+var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
+var HYPHEN = [HY, BA];
+var codePointsToCharacterClasses = function(codePoints, lineBreak2) {
+  if (lineBreak2 === void 0) {
+    lineBreak2 = "strict";
+  }
+  var types = [];
+  var indices = [];
+  var categories = [];
+  codePoints.forEach(function(codePoint, index) {
+    var classType = UnicodeTrie$1.get(codePoint);
+    if (classType > LETTER_NUMBER_MODIFIER) {
+      categories.push(true);
+      classType -= LETTER_NUMBER_MODIFIER;
+    } else {
+      categories.push(false);
+    }
+    if (["normal", "auto", "loose"].indexOf(lineBreak2) !== -1) {
+      if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) {
+        indices.push(index);
+        return types.push(CB);
+      }
+    }
+    if (classType === CM || classType === ZWJ$1) {
+      if (index === 0) {
+        indices.push(index);
+        return types.push(AL);
+      }
+      var prev = types[index - 1];
+      if (LINE_BREAKS.indexOf(prev) === -1) {
+        indices.push(indices[index - 1]);
+        return types.push(prev);
+      }
+      indices.push(index);
+      return types.push(AL);
+    }
+    indices.push(index);
+    if (classType === CJ) {
+      return types.push(lineBreak2 === "strict" ? NS : ID);
+    }
+    if (classType === SA) {
+      return types.push(AL);
+    }
+    if (classType === AI) {
+      return types.push(AL);
+    }
+    if (classType === XX) {
+      if (codePoint >= 131072 && codePoint <= 196605 || codePoint >= 196608 && codePoint <= 262141) {
+        return types.push(ID);
+      } else {
+        return types.push(AL);
+      }
+    }
+    types.push(classType);
+  });
+  return [indices, types, categories];
+};
+var isAdjacentWithSpaceIgnored = function(a2, b, currentIndex, classTypes) {
+  var current = classTypes[currentIndex];
+  if (Array.isArray(a2) ? a2.indexOf(current) !== -1 : a2 === current) {
+    var i = currentIndex;
+    while (i <= classTypes.length) {
+      i++;
+      var next = classTypes[i];
+      if (next === b) {
+        return true;
+      }
+      if (next !== SP) {
+        break;
+      }
+    }
+  }
+  if (current === SP) {
+    var i = currentIndex;
+    while (i > 0) {
+      i--;
+      var prev = classTypes[i];
+      if (Array.isArray(a2) ? a2.indexOf(prev) !== -1 : a2 === prev) {
+        var n = currentIndex;
+        while (n <= classTypes.length) {
+          n++;
+          var next = classTypes[n];
+          if (next === b) {
+            return true;
+          }
+          if (next !== SP) {
+            break;
+          }
+        }
+      }
+      if (prev !== SP) {
+        break;
+      }
+    }
+  }
+  return false;
+};
+var previousNonSpaceClassType = function(currentIndex, classTypes) {
+  var i = currentIndex;
+  while (i >= 0) {
+    var type = classTypes[i];
+    if (type === SP) {
+      i--;
+    } else {
+      return type;
+    }
+  }
+  return 0;
+};
+var _lineBreakAtIndex = function(codePoints, classTypes, indicies, index, forbiddenBreaks) {
+  if (indicies[index] === 0) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  var currentIndex = index - 1;
+  if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  var beforeIndex = currentIndex - 1;
+  var afterIndex = currentIndex + 1;
+  var current = classTypes[currentIndex];
+  var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
+  var next = classTypes[afterIndex];
+  if (current === CR$1 && next === LF$1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
+    return BREAK_MANDATORY;
+  }
+  if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (SPACE$1.indexOf(next) !== -1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
+    return BREAK_ALLOWED$1;
+  }
+  if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (current === WJ || next === WJ) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (current === GL) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (current === SP) {
+    return BREAK_ALLOWED$1;
+  }
+  if (current === QU || next === QU) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (next === CB || current === CB) {
+    return BREAK_ALLOWED$1;
+  }
+  if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (before === HL && HYPHEN.indexOf(current) !== -1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (current === SY && next === HL) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (next === IN) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (
+    // (PR | PO) × ( OP | HY )? NU
+    [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU
+    [OP, HY].indexOf(current) !== -1 && next === NU || // NU ×	(NU | SY | IS)
+    current === NU && [NU, SY, IS].indexOf(next) !== -1
+  ) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
+    var prevIndex = currentIndex;
+    while (prevIndex >= 0) {
+      var type = classTypes[prevIndex];
+      if (type === NU) {
+        return BREAK_NOT_ALLOWED$1;
+      } else if ([SY, IS].indexOf(type) !== -1) {
+        prevIndex--;
+      } else {
+        break;
+      }
+    }
+  }
+  if ([PR, PO].indexOf(next) !== -1) {
+    var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
+    while (prevIndex >= 0) {
+      var type = classTypes[prevIndex];
+      if (type === NU) {
+        return BREAK_NOT_ALLOWED$1;
+      } else if ([SY, IS].indexOf(type) !== -1) {
+        prevIndex--;
+      } else {
+        break;
+      }
+    }
+  }
+  if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  if (current === RI$1 && next === RI$1) {
+    var i = indicies[currentIndex];
+    var count = 1;
+    while (i > 0) {
+      i--;
+      if (classTypes[i] === RI$1) {
+        count++;
+      } else {
+        break;
+      }
+    }
+    if (count % 2 !== 0) {
+      return BREAK_NOT_ALLOWED$1;
+    }
+  }
+  if (current === EB && next === EM) {
+    return BREAK_NOT_ALLOWED$1;
+  }
+  return BREAK_ALLOWED$1;
+};
+var cssFormattedClasses = function(codePoints, options) {
+  if (!options) {
+    options = { lineBreak: "normal", wordBreak: "normal" };
+  }
+  var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];
+  if (options.wordBreak === "break-all" || options.wordBreak === "break-word") {
+    classTypes = classTypes.map(function(type) {
+      return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;
+    });
+  }
+  var forbiddenBreakpoints = options.wordBreak === "keep-all" ? isLetterNumber.map(function(letterNumber, i) {
+    return letterNumber && codePoints[i] >= 19968 && codePoints[i] <= 40959;
+  }) : void 0;
+  return [indicies, classTypes, forbiddenBreakpoints];
+};
+var Break = (
+  /** @class */
+  function() {
+    function Break2(codePoints, lineBreak2, start, end) {
+      this.codePoints = codePoints;
+      this.required = lineBreak2 === BREAK_MANDATORY;
+      this.start = start;
+      this.end = end;
+    }
+    Break2.prototype.slice = function() {
+      return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));
+    };
+    return Break2;
+  }()
+);
+var LineBreaker = function(str, options) {
+  var codePoints = toCodePoints$1(str);
+  var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];
+  var length = codePoints.length;
+  var lastEnd = 0;
+  var nextIndex = 0;
+  return {
+    next: function() {
+      if (nextIndex >= length) {
+        return { done: true, value: null };
+      }
+      var lineBreak2 = BREAK_NOT_ALLOWED$1;
+      while (nextIndex < length && (lineBreak2 = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) {
+      }
+      if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
+        var value = new Break(codePoints, lineBreak2, lastEnd, nextIndex);
+        lastEnd = nextIndex;
+        return { value, done: false };
+      }
+      return { done: true, value: null };
+    }
+  };
+};
+var FLAG_UNRESTRICTED = 1 << 0;
+var FLAG_ID = 1 << 1;
+var FLAG_INTEGER = 1 << 2;
+var FLAG_NUMBER = 1 << 3;
+var LINE_FEED = 10;
+var SOLIDUS = 47;
+var REVERSE_SOLIDUS = 92;
+var CHARACTER_TABULATION = 9;
+var SPACE = 32;
+var QUOTATION_MARK = 34;
+var EQUALS_SIGN = 61;
+var NUMBER_SIGN = 35;
+var DOLLAR_SIGN = 36;
+var PERCENTAGE_SIGN = 37;
+var APOSTROPHE = 39;
+var LEFT_PARENTHESIS = 40;
+var RIGHT_PARENTHESIS = 41;
+var LOW_LINE = 95;
+var HYPHEN_MINUS = 45;
+var EXCLAMATION_MARK = 33;
+var LESS_THAN_SIGN = 60;
+var GREATER_THAN_SIGN = 62;
+var COMMERCIAL_AT = 64;
+var LEFT_SQUARE_BRACKET = 91;
+var RIGHT_SQUARE_BRACKET = 93;
+var CIRCUMFLEX_ACCENT = 61;
+var LEFT_CURLY_BRACKET = 123;
+var QUESTION_MARK = 63;
+var RIGHT_CURLY_BRACKET = 125;
+var VERTICAL_LINE = 124;
+var TILDE = 126;
+var CONTROL = 128;
+var REPLACEMENT_CHARACTER = 65533;
+var ASTERISK = 42;
+var PLUS_SIGN = 43;
+var COMMA = 44;
+var COLON = 58;
+var SEMICOLON = 59;
+var FULL_STOP = 46;
+var NULL = 0;
+var BACKSPACE = 8;
+var LINE_TABULATION = 11;
+var SHIFT_OUT = 14;
+var INFORMATION_SEPARATOR_ONE = 31;
+var DELETE = 127;
+var EOF = -1;
+var ZERO = 48;
+var a = 97;
+var e = 101;
+var f = 102;
+var u = 117;
+var z = 122;
+var A = 65;
+var E = 69;
+var F = 70;
+var U = 85;
+var Z = 90;
+var isDigit = function(codePoint) {
+  return codePoint >= ZERO && codePoint <= 57;
+};
+var isSurrogateCodePoint = function(codePoint) {
+  return codePoint >= 55296 && codePoint <= 57343;
+};
+var isHex = function(codePoint) {
+  return isDigit(codePoint) || codePoint >= A && codePoint <= F || codePoint >= a && codePoint <= f;
+};
+var isLowerCaseLetter = function(codePoint) {
+  return codePoint >= a && codePoint <= z;
+};
+var isUpperCaseLetter = function(codePoint) {
+  return codePoint >= A && codePoint <= Z;
+};
+var isLetter = function(codePoint) {
+  return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);
+};
+var isNonASCIICodePoint = function(codePoint) {
+  return codePoint >= CONTROL;
+};
+var isWhiteSpace = function(codePoint) {
+  return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
+};
+var isNameStartCodePoint = function(codePoint) {
+  return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
+};
+var isNameCodePoint = function(codePoint) {
+  return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
+};
+var isNonPrintableCodePoint = function(codePoint) {
+  return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;
+};
+var isValidEscape = function(c1, c2) {
+  if (c1 !== REVERSE_SOLIDUS) {
+    return false;
+  }
+  return c2 !== LINE_FEED;
+};
+var isIdentifierStart = function(c1, c2, c3) {
+  if (c1 === HYPHEN_MINUS) {
+    return isNameStartCodePoint(c2) || isValidEscape(c2, c3);
+  } else if (isNameStartCodePoint(c1)) {
+    return true;
+  } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
+    return true;
+  }
+  return false;
+};
+var isNumberStart = function(c1, c2, c3) {
+  if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
+    if (isDigit(c2)) {
+      return true;
+    }
+    return c2 === FULL_STOP && isDigit(c3);
+  }
+  if (c1 === FULL_STOP) {
+    return isDigit(c2);
+  }
+  return isDigit(c1);
+};
+var stringToNumber = function(codePoints) {
+  var c = 0;
+  var sign = 1;
+  if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
+    if (codePoints[c] === HYPHEN_MINUS) {
+      sign = -1;
+    }
+    c++;
+  }
+  var integers = [];
+  while (isDigit(codePoints[c])) {
+    integers.push(codePoints[c++]);
+  }
+  var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;
+  if (codePoints[c] === FULL_STOP) {
+    c++;
+  }
+  var fraction = [];
+  while (isDigit(codePoints[c])) {
+    fraction.push(codePoints[c++]);
+  }
+  var fracd = fraction.length;
+  var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;
+  if (codePoints[c] === E || codePoints[c] === e) {
+    c++;
+  }
+  var expsign = 1;
+  if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
+    if (codePoints[c] === HYPHEN_MINUS) {
+      expsign = -1;
+    }
+    c++;
+  }
+  var exponent = [];
+  while (isDigit(codePoints[c])) {
+    exponent.push(codePoints[c++]);
+  }
+  var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;
+  return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
+};
+var LEFT_PARENTHESIS_TOKEN = {
+  type: 2
+  /* LEFT_PARENTHESIS_TOKEN */
+};
+var RIGHT_PARENTHESIS_TOKEN = {
+  type: 3
+  /* RIGHT_PARENTHESIS_TOKEN */
+};
+var COMMA_TOKEN = {
+  type: 4
+  /* COMMA_TOKEN */
+};
+var SUFFIX_MATCH_TOKEN = {
+  type: 13
+  /* SUFFIX_MATCH_TOKEN */
+};
+var PREFIX_MATCH_TOKEN = {
+  type: 8
+  /* PREFIX_MATCH_TOKEN */
+};
+var COLUMN_TOKEN = {
+  type: 21
+  /* COLUMN_TOKEN */
+};
+var DASH_MATCH_TOKEN = {
+  type: 9
+  /* DASH_MATCH_TOKEN */
+};
+var INCLUDE_MATCH_TOKEN = {
+  type: 10
+  /* INCLUDE_MATCH_TOKEN */
+};
+var LEFT_CURLY_BRACKET_TOKEN = {
+  type: 11
+  /* LEFT_CURLY_BRACKET_TOKEN */
+};
+var RIGHT_CURLY_BRACKET_TOKEN = {
+  type: 12
+  /* RIGHT_CURLY_BRACKET_TOKEN */
+};
+var SUBSTRING_MATCH_TOKEN = {
+  type: 14
+  /* SUBSTRING_MATCH_TOKEN */
+};
+var BAD_URL_TOKEN = {
+  type: 23
+  /* BAD_URL_TOKEN */
+};
+var BAD_STRING_TOKEN = {
+  type: 1
+  /* BAD_STRING_TOKEN */
+};
+var CDO_TOKEN = {
+  type: 25
+  /* CDO_TOKEN */
+};
+var CDC_TOKEN = {
+  type: 24
+  /* CDC_TOKEN */
+};
+var COLON_TOKEN = {
+  type: 26
+  /* COLON_TOKEN */
+};
+var SEMICOLON_TOKEN = {
+  type: 27
+  /* SEMICOLON_TOKEN */
+};
+var LEFT_SQUARE_BRACKET_TOKEN = {
+  type: 28
+  /* LEFT_SQUARE_BRACKET_TOKEN */
+};
+var RIGHT_SQUARE_BRACKET_TOKEN = {
+  type: 29
+  /* RIGHT_SQUARE_BRACKET_TOKEN */
+};
+var WHITESPACE_TOKEN = {
+  type: 31
+  /* WHITESPACE_TOKEN */
+};
+var EOF_TOKEN = {
+  type: 32
+  /* EOF_TOKEN */
+};
+var Tokenizer = (
+  /** @class */
+  function() {
+    function Tokenizer2() {
+      this._value = [];
+    }
+    Tokenizer2.prototype.write = function(chunk) {
+      this._value = this._value.concat(toCodePoints$1(chunk));
+    };
+    Tokenizer2.prototype.read = function() {
+      var tokens = [];
+      var token = this.consumeToken();
+      while (token !== EOF_TOKEN) {
+        tokens.push(token);
+        token = this.consumeToken();
+      }
+      return tokens;
+    };
+    Tokenizer2.prototype.consumeToken = function() {
+      var codePoint = this.consumeCodePoint();
+      switch (codePoint) {
+        case QUOTATION_MARK:
+          return this.consumeStringToken(QUOTATION_MARK);
+        case NUMBER_SIGN:
+          var c1 = this.peekCodePoint(0);
+          var c2 = this.peekCodePoint(1);
+          var c3 = this.peekCodePoint(2);
+          if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
+            var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
+            var value = this.consumeName();
+            return { type: 5, value, flags };
+          }
+          break;
+        case DOLLAR_SIGN:
+          if (this.peekCodePoint(0) === EQUALS_SIGN) {
+            this.consumeCodePoint();
+            return SUFFIX_MATCH_TOKEN;
+          }
+          break;
+        case APOSTROPHE:
+          return this.consumeStringToken(APOSTROPHE);
+        case LEFT_PARENTHESIS:
+          return LEFT_PARENTHESIS_TOKEN;
+        case RIGHT_PARENTHESIS:
+          return RIGHT_PARENTHESIS_TOKEN;
+        case ASTERISK:
+          if (this.peekCodePoint(0) === EQUALS_SIGN) {
+            this.consumeCodePoint();
+            return SUBSTRING_MATCH_TOKEN;
+          }
+          break;
+        case PLUS_SIGN:
+          if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
+            this.reconsumeCodePoint(codePoint);
+            return this.consumeNumericToken();
+          }
+          break;
+        case COMMA:
+          return COMMA_TOKEN;
+        case HYPHEN_MINUS:
+          var e1 = codePoint;
+          var e2 = this.peekCodePoint(0);
+          var e3 = this.peekCodePoint(1);
+          if (isNumberStart(e1, e2, e3)) {
+            this.reconsumeCodePoint(codePoint);
+            return this.consumeNumericToken();
+          }
+          if (isIdentifierStart(e1, e2, e3)) {
+            this.reconsumeCodePoint(codePoint);
+            return this.consumeIdentLikeToken();
+          }
+          if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
+            this.consumeCodePoint();
+            this.consumeCodePoint();
+            return CDC_TOKEN;
+          }
+          break;
+        case FULL_STOP:
+          if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
+            this.reconsumeCodePoint(codePoint);
+            return this.consumeNumericToken();
+          }
+          break;
+        case SOLIDUS:
+          if (this.peekCodePoint(0) === ASTERISK) {
+            this.consumeCodePoint();
+            while (true) {
+              var c = this.consumeCodePoint();
+              if (c === ASTERISK) {
+                c = this.consumeCodePoint();
+                if (c === SOLIDUS) {
+                  return this.consumeToken();
+                }
+              }
+              if (c === EOF) {
+                return this.consumeToken();
+              }
+            }
+          }
+          break;
+        case COLON:
+          return COLON_TOKEN;
+        case SEMICOLON:
+          return SEMICOLON_TOKEN;
+        case LESS_THAN_SIGN:
+          if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {
+            this.consumeCodePoint();
+            this.consumeCodePoint();
+            return CDO_TOKEN;
+          }
+          break;
+        case COMMERCIAL_AT:
+          var a1 = this.peekCodePoint(0);
+          var a2 = this.peekCodePoint(1);
+          var a3 = this.peekCodePoint(2);
+          if (isIdentifierStart(a1, a2, a3)) {
+            var value = this.consumeName();
+            return { type: 7, value };
+          }
+          break;
+        case LEFT_SQUARE_BRACKET:
+          return LEFT_SQUARE_BRACKET_TOKEN;
+        case REVERSE_SOLIDUS:
+          if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+            this.reconsumeCodePoint(codePoint);
+            return this.consumeIdentLikeToken();
+          }
+          break;
+        case RIGHT_SQUARE_BRACKET:
+          return RIGHT_SQUARE_BRACKET_TOKEN;
+        case CIRCUMFLEX_ACCENT:
+          if (this.peekCodePoint(0) === EQUALS_SIGN) {
+            this.consumeCodePoint();
+            return PREFIX_MATCH_TOKEN;
+          }
+          break;
+        case LEFT_CURLY_BRACKET:
+          return LEFT_CURLY_BRACKET_TOKEN;
+        case RIGHT_CURLY_BRACKET:
+          return RIGHT_CURLY_BRACKET_TOKEN;
+        case u:
+        case U:
+          var u1 = this.peekCodePoint(0);
+          var u2 = this.peekCodePoint(1);
+          if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
+            this.consumeCodePoint();
+            this.consumeUnicodeRangeToken();
+          }
+          this.reconsumeCodePoint(codePoint);
+          return this.consumeIdentLikeToken();
+        case VERTICAL_LINE:
+          if (this.peekCodePoint(0) === EQUALS_SIGN) {
+            this.consumeCodePoint();
+            return DASH_MATCH_TOKEN;
+          }
+          if (this.peekCodePoint(0) === VERTICAL_LINE) {
+            this.consumeCodePoint();
+            return COLUMN_TOKEN;
+          }
+          break;
+        case TILDE:
+          if (this.peekCodePoint(0) === EQUALS_SIGN) {
+            this.consumeCodePoint();
+            return INCLUDE_MATCH_TOKEN;
+          }
+          break;
+        case EOF:
+          return EOF_TOKEN;
+      }
+      if (isWhiteSpace(codePoint)) {
+        this.consumeWhiteSpace();
+        return WHITESPACE_TOKEN;
+      }
+      if (isDigit(codePoint)) {
+        this.reconsumeCodePoint(codePoint);
+        return this.consumeNumericToken();
+      }
+      if (isNameStartCodePoint(codePoint)) {
+        this.reconsumeCodePoint(codePoint);
+        return this.consumeIdentLikeToken();
+      }
+      return { type: 6, value: fromCodePoint$1(codePoint) };
+    };
+    Tokenizer2.prototype.consumeCodePoint = function() {
+      var value = this._value.shift();
+      return typeof value === "undefined" ? -1 : value;
+    };
+    Tokenizer2.prototype.reconsumeCodePoint = function(codePoint) {
+      this._value.unshift(codePoint);
+    };
+    Tokenizer2.prototype.peekCodePoint = function(delta) {
+      if (delta >= this._value.length) {
+        return -1;
+      }
+      return this._value[delta];
+    };
+    Tokenizer2.prototype.consumeUnicodeRangeToken = function() {
+      var digits = [];
+      var codePoint = this.consumeCodePoint();
+      while (isHex(codePoint) && digits.length < 6) {
+        digits.push(codePoint);
+        codePoint = this.consumeCodePoint();
+      }
+      var questionMarks = false;
+      while (codePoint === QUESTION_MARK && digits.length < 6) {
+        digits.push(codePoint);
+        codePoint = this.consumeCodePoint();
+        questionMarks = true;
+      }
+      if (questionMarks) {
+        var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
+          return digit === QUESTION_MARK ? ZERO : digit;
+        })), 16);
+        var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
+          return digit === QUESTION_MARK ? F : digit;
+        })), 16);
+        return { type: 30, start: start_1, end };
+      }
+      var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);
+      if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
+        this.consumeCodePoint();
+        codePoint = this.consumeCodePoint();
+        var endDigits = [];
+        while (isHex(codePoint) && endDigits.length < 6) {
+          endDigits.push(codePoint);
+          codePoint = this.consumeCodePoint();
+        }
+        var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);
+        return { type: 30, start, end };
+      } else {
+        return { type: 30, start, end: start };
+      }
+    };
+    Tokenizer2.prototype.consumeIdentLikeToken = function() {
+      var value = this.consumeName();
+      if (value.toLowerCase() === "url" && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
+        this.consumeCodePoint();
+        return this.consumeUrlToken();
+      } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
+        this.consumeCodePoint();
+        return { type: 19, value };
+      }
+      return { type: 20, value };
+    };
+    Tokenizer2.prototype.consumeUrlToken = function() {
+      var value = [];
+      this.consumeWhiteSpace();
+      if (this.peekCodePoint(0) === EOF) {
+        return { type: 22, value: "" };
+      }
+      var next = this.peekCodePoint(0);
+      if (next === APOSTROPHE || next === QUOTATION_MARK) {
+        var stringToken = this.consumeStringToken(this.consumeCodePoint());
+        if (stringToken.type === 0) {
+          this.consumeWhiteSpace();
+          if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
+            this.consumeCodePoint();
+            return { type: 22, value: stringToken.value };
+          }
+        }
+        this.consumeBadUrlRemnants();
+        return BAD_URL_TOKEN;
+      }
+      while (true) {
+        var codePoint = this.consumeCodePoint();
+        if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
+          return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
+        } else if (isWhiteSpace(codePoint)) {
+          this.consumeWhiteSpace();
+          if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
+            this.consumeCodePoint();
+            return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
+          }
+          this.consumeBadUrlRemnants();
+          return BAD_URL_TOKEN;
+        } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {
+          this.consumeBadUrlRemnants();
+          return BAD_URL_TOKEN;
+        } else if (codePoint === REVERSE_SOLIDUS) {
+          if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+            value.push(this.consumeEscapedCodePoint());
+          } else {
+            this.consumeBadUrlRemnants();
+            return BAD_URL_TOKEN;
+          }
+        } else {
+          value.push(codePoint);
+        }
+      }
+    };
+    Tokenizer2.prototype.consumeWhiteSpace = function() {
+      while (isWhiteSpace(this.peekCodePoint(0))) {
+        this.consumeCodePoint();
+      }
+    };
+    Tokenizer2.prototype.consumeBadUrlRemnants = function() {
+      while (true) {
+        var codePoint = this.consumeCodePoint();
+        if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
+          return;
+        }
+        if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+          this.consumeEscapedCodePoint();
+        }
+      }
+    };
+    Tokenizer2.prototype.consumeStringSlice = function(count) {
+      var SLICE_STACK_SIZE = 5e4;
+      var value = "";
+      while (count > 0) {
+        var amount = Math.min(SLICE_STACK_SIZE, count);
+        value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));
+        count -= amount;
+      }
+      this._value.shift();
+      return value;
+    };
+    Tokenizer2.prototype.consumeStringToken = function(endingCodePoint) {
+      var value = "";
+      var i = 0;
+      do {
+        var codePoint = this._value[i];
+        if (codePoint === EOF || codePoint === void 0 || codePoint === endingCodePoint) {
+          value += this.consumeStringSlice(i);
+          return { type: 0, value };
+        }
+        if (codePoint === LINE_FEED) {
+          this._value.splice(0, i);
+          return BAD_STRING_TOKEN;
+        }
+        if (codePoint === REVERSE_SOLIDUS) {
+          var next = this._value[i + 1];
+          if (next !== EOF && next !== void 0) {
+            if (next === LINE_FEED) {
+              value += this.consumeStringSlice(i);
+              i = -1;
+              this._value.shift();
+            } else if (isValidEscape(codePoint, next)) {
+              value += this.consumeStringSlice(i);
+              value += fromCodePoint$1(this.consumeEscapedCodePoint());
+              i = -1;
+            }
+          }
+        }
+        i++;
+      } while (true);
+    };
+    Tokenizer2.prototype.consumeNumber = function() {
+      var repr = [];
+      var type = FLAG_INTEGER;
+      var c1 = this.peekCodePoint(0);
+      if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
+        repr.push(this.consumeCodePoint());
+      }
+      while (isDigit(this.peekCodePoint(0))) {
+        repr.push(this.consumeCodePoint());
+      }
+      c1 = this.peekCodePoint(0);
+      var c2 = this.peekCodePoint(1);
+      if (c1 === FULL_STOP && isDigit(c2)) {
+        repr.push(this.consumeCodePoint(), this.consumeCodePoint());
+        type = FLAG_NUMBER;
+        while (isDigit(this.peekCodePoint(0))) {
+          repr.push(this.consumeCodePoint());
+        }
+      }
+      c1 = this.peekCodePoint(0);
+      c2 = this.peekCodePoint(1);
+      var c3 = this.peekCodePoint(2);
+      if ((c1 === E || c1 === e) && ((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c2))) {
+        repr.push(this.consumeCodePoint(), this.consumeCodePoint());
+        type = FLAG_NUMBER;
+        while (isDigit(this.peekCodePoint(0))) {
+          repr.push(this.consumeCodePoint());
+        }
+      }
+      return [stringToNumber(repr), type];
+    };
+    Tokenizer2.prototype.consumeNumericToken = function() {
+      var _a = this.consumeNumber(), number = _a[0], flags = _a[1];
+      var c1 = this.peekCodePoint(0);
+      var c2 = this.peekCodePoint(1);
+      var c3 = this.peekCodePoint(2);
+      if (isIdentifierStart(c1, c2, c3)) {
+        var unit = this.consumeName();
+        return { type: 15, number, flags, unit };
+      }
+      if (c1 === PERCENTAGE_SIGN) {
+        this.consumeCodePoint();
+        return { type: 16, number, flags };
+      }
+      return { type: 17, number, flags };
+    };
+    Tokenizer2.prototype.consumeEscapedCodePoint = function() {
+      var codePoint = this.consumeCodePoint();
+      if (isHex(codePoint)) {
+        var hex = fromCodePoint$1(codePoint);
+        while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
+          hex += fromCodePoint$1(this.consumeCodePoint());
+        }
+        if (isWhiteSpace(this.peekCodePoint(0))) {
+          this.consumeCodePoint();
+        }
+        var hexCodePoint = parseInt(hex, 16);
+        if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 1114111) {
+          return REPLACEMENT_CHARACTER;
+        }
+        return hexCodePoint;
+      }
+      if (codePoint === EOF) {
+        return REPLACEMENT_CHARACTER;
+      }
+      return codePoint;
+    };
+    Tokenizer2.prototype.consumeName = function() {
+      var result = "";
+      while (true) {
+        var codePoint = this.consumeCodePoint();
+        if (isNameCodePoint(codePoint)) {
+          result += fromCodePoint$1(codePoint);
+        } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+          result += fromCodePoint$1(this.consumeEscapedCodePoint());
+        } else {
+          this.reconsumeCodePoint(codePoint);
+          return result;
+        }
+      }
+    };
+    return Tokenizer2;
+  }()
+);
+var Parser = (
+  /** @class */
+  function() {
+    function Parser2(tokens) {
+      this._tokens = tokens;
+    }
+    Parser2.create = function(value) {
+      var tokenizer = new Tokenizer();
+      tokenizer.write(value);
+      return new Parser2(tokenizer.read());
+    };
+    Parser2.parseValue = function(value) {
+      return Parser2.create(value).parseComponentValue();
+    };
+    Parser2.parseValues = function(value) {
+      return Parser2.create(value).parseComponentValues();
+    };
+    Parser2.prototype.parseComponentValue = function() {
+      var token = this.consumeToken();
+      while (token.type === 31) {
+        token = this.consumeToken();
+      }
+      if (token.type === 32) {
+        throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
+      }
+      this.reconsumeToken(token);
+      var value = this.consumeComponentValue();
+      do {
+        token = this.consumeToken();
+      } while (token.type === 31);
+      if (token.type === 32) {
+        return value;
+      }
+      throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
+    };
+    Parser2.prototype.parseComponentValues = function() {
+      var values = [];
+      while (true) {
+        var value = this.consumeComponentValue();
+        if (value.type === 32) {
+          return values;
+        }
+        values.push(value);
+        values.push();
+      }
+    };
+    Parser2.prototype.consumeComponentValue = function() {
+      var token = this.consumeToken();
+      switch (token.type) {
+        case 11:
+        case 28:
+        case 2:
+          return this.consumeSimpleBlock(token.type);
+        case 19:
+          return this.consumeFunction(token);
+      }
+      return token;
+    };
+    Parser2.prototype.consumeSimpleBlock = function(type) {
+      var block = { type, values: [] };
+      var token = this.consumeToken();
+      while (true) {
+        if (token.type === 32 || isEndingTokenFor(token, type)) {
+          return block;
+        }
+        this.reconsumeToken(token);
+        block.values.push(this.consumeComponentValue());
+        token = this.consumeToken();
+      }
+    };
+    Parser2.prototype.consumeFunction = function(functionToken) {
+      var cssFunction = {
+        name: functionToken.value,
+        values: [],
+        type: 18
+        /* FUNCTION */
+      };
+      while (true) {
+        var token = this.consumeToken();
+        if (token.type === 32 || token.type === 3) {
+          return cssFunction;
+        }
+        this.reconsumeToken(token);
+        cssFunction.values.push(this.consumeComponentValue());
+      }
+    };
+    Parser2.prototype.consumeToken = function() {
+      var token = this._tokens.shift();
+      return typeof token === "undefined" ? EOF_TOKEN : token;
+    };
+    Parser2.prototype.reconsumeToken = function(token) {
+      this._tokens.unshift(token);
+    };
+    return Parser2;
+  }()
+);
+var isDimensionToken = function(token) {
+  return token.type === 15;
+};
+var isNumberToken = function(token) {
+  return token.type === 17;
+};
+var isIdentToken = function(token) {
+  return token.type === 20;
+};
+var isStringToken = function(token) {
+  return token.type === 0;
+};
+var isIdentWithValue = function(token, value) {
+  return isIdentToken(token) && token.value === value;
+};
+var nonWhiteSpace = function(token) {
+  return token.type !== 31;
+};
+var nonFunctionArgSeparator = function(token) {
+  return token.type !== 31 && token.type !== 4;
+};
+var parseFunctionArgs = function(tokens) {
+  var args = [];
+  var arg = [];
+  tokens.forEach(function(token) {
+    if (token.type === 4) {
+      if (arg.length === 0) {
+        throw new Error("Error parsing function args, zero tokens for arg");
+      }
+      args.push(arg);
+      arg = [];
+      return;
+    }
+    if (token.type !== 31) {
+      arg.push(token);
+    }
+  });
+  if (arg.length) {
+    args.push(arg);
+  }
+  return args;
+};
+var isEndingTokenFor = function(token, type) {
+  if (type === 11 && token.type === 12) {
+    return true;
+  }
+  if (type === 28 && token.type === 29) {
+    return true;
+  }
+  return type === 2 && token.type === 3;
+};
+var isLength = function(token) {
+  return token.type === 17 || token.type === 15;
+};
+var isLengthPercentage = function(token) {
+  return token.type === 16 || isLength(token);
+};
+var parseLengthPercentageTuple = function(tokens) {
+  return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];
+};
+var ZERO_LENGTH = {
+  type: 17,
+  number: 0,
+  flags: FLAG_INTEGER
+};
+var FIFTY_PERCENT = {
+  type: 16,
+  number: 50,
+  flags: FLAG_INTEGER
+};
+var HUNDRED_PERCENT = {
+  type: 16,
+  number: 100,
+  flags: FLAG_INTEGER
+};
+var getAbsoluteValueForTuple = function(tuple, width, height) {
+  var x = tuple[0], y = tuple[1];
+  return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== "undefined" ? y : x, height)];
+};
+var getAbsoluteValue = function(token, parent) {
+  if (token.type === 16) {
+    return token.number / 100 * parent;
+  }
+  if (isDimensionToken(token)) {
+    switch (token.unit) {
+      case "rem":
+      case "em":
+        return 16 * token.number;
+      case "px":
+      default:
+        return token.number;
+    }
+  }
+  return token.number;
+};
+var DEG = "deg";
+var GRAD = "grad";
+var RAD = "rad";
+var TURN = "turn";
+var angle = {
+  name: "angle",
+  parse: function(_context, value) {
+    if (value.type === 15) {
+      switch (value.unit) {
+        case DEG:
+          return Math.PI * value.number / 180;
+        case GRAD:
+          return Math.PI / 200 * value.number;
+        case RAD:
+          return value.number;
+        case TURN:
+          return Math.PI * 2 * value.number;
+      }
+    }
+    throw new Error("Unsupported angle type");
+  }
+};
+var isAngle = function(value) {
+  if (value.type === 15) {
+    if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
+      return true;
+    }
+  }
+  return false;
+};
+var parseNamedSide = function(tokens) {
+  var sideOrCorner = tokens.filter(isIdentToken).map(function(ident) {
+    return ident.value;
+  }).join(" ");
+  switch (sideOrCorner) {
+    case "to bottom right":
+    case "to right bottom":
+    case "left top":
+    case "top left":
+      return [ZERO_LENGTH, ZERO_LENGTH];
+    case "to top":
+    case "bottom":
+      return deg(0);
+    case "to bottom left":
+    case "to left bottom":
+    case "right top":
+    case "top right":
+      return [ZERO_LENGTH, HUNDRED_PERCENT];
+    case "to right":
+    case "left":
+      return deg(90);
+    case "to top left":
+    case "to left top":
+    case "right bottom":
+    case "bottom right":
+      return [HUNDRED_PERCENT, HUNDRED_PERCENT];
+    case "to bottom":
+    case "top":
+      return deg(180);
+    case "to top right":
+    case "to right top":
+    case "left bottom":
+    case "bottom left":
+      return [HUNDRED_PERCENT, ZERO_LENGTH];
+    case "to left":
+    case "right":
+      return deg(270);
+  }
+  return 0;
+};
+var deg = function(deg2) {
+  return Math.PI * deg2 / 180;
+};
+var color$1 = {
+  name: "color",
+  parse: function(context, value) {
+    if (value.type === 18) {
+      var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
+      if (typeof colorFunction === "undefined") {
+        throw new Error('Attempting to parse an unsupported color function "' + value.name + '"');
+      }
+      return colorFunction(context, value.values);
+    }
+    if (value.type === 5) {
+      if (value.value.length === 3) {
+        var r = value.value.substring(0, 1);
+        var g = value.value.substring(1, 2);
+        var b = value.value.substring(2, 3);
+        return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);
+      }
+      if (value.value.length === 4) {
+        var r = value.value.substring(0, 1);
+        var g = value.value.substring(1, 2);
+        var b = value.value.substring(2, 3);
+        var a2 = value.value.substring(3, 4);
+        return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a2 + a2, 16) / 255);
+      }
+      if (value.value.length === 6) {
+        var r = value.value.substring(0, 2);
+        var g = value.value.substring(2, 4);
+        var b = value.value.substring(4, 6);
+        return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);
+      }
+      if (value.value.length === 8) {
+        var r = value.value.substring(0, 2);
+        var g = value.value.substring(2, 4);
+        var b = value.value.substring(4, 6);
+        var a2 = value.value.substring(6, 8);
+        return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a2, 16) / 255);
+      }
+    }
+    if (value.type === 20) {
+      var namedColor = COLORS[value.value.toUpperCase()];
+      if (typeof namedColor !== "undefined") {
+        return namedColor;
+      }
+    }
+    return COLORS.TRANSPARENT;
+  }
+};
+var isTransparent = function(color2) {
+  return (255 & color2) === 0;
+};
+var asString = function(color2) {
+  var alpha = 255 & color2;
+  var blue = 255 & color2 >> 8;
+  var green = 255 & color2 >> 16;
+  var red = 255 & color2 >> 24;
+  return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")";
+};
+var pack = function(r, g, b, a2) {
+  return (r << 24 | g << 16 | b << 8 | Math.round(a2 * 255) << 0) >>> 0;
+};
+var getTokenColorValue = function(token, i) {
+  if (token.type === 17) {
+    return token.number;
+  }
+  if (token.type === 16) {
+    var max = i === 3 ? 1 : 255;
+    return i === 3 ? token.number / 100 * max : Math.round(token.number / 100 * max);
+  }
+  return 0;
+};
+var rgb = function(_context, args) {
+  var tokens = args.filter(nonFunctionArgSeparator);
+  if (tokens.length === 3) {
+    var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];
+    return pack(r, g, b, 1);
+  }
+  if (tokens.length === 4) {
+    var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a2 = _b[3];
+    return pack(r, g, b, a2);
+  }
+  return 0;
+};
+function hue2rgb(t1, t2, hue) {
+  if (hue < 0) {
+    hue += 1;
+  }
+  if (hue >= 1) {
+    hue -= 1;
+  }
+  if (hue < 1 / 6) {
+    return (t2 - t1) * hue * 6 + t1;
+  } else if (hue < 1 / 2) {
+    return t2;
+  } else if (hue < 2 / 3) {
+    return (t2 - t1) * 6 * (2 / 3 - hue) + t1;
+  } else {
+    return t1;
+  }
+}
+var hsl = function(context, args) {
+  var tokens = args.filter(nonFunctionArgSeparator);
+  var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];
+  var h = (hue.type === 17 ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);
+  var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
+  var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
+  var a2 = typeof alpha !== "undefined" && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
+  if (s === 0) {
+    return pack(l * 255, l * 255, l * 255, 1);
+  }
+  var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
+  var t1 = l * 2 - t2;
+  var r = hue2rgb(t1, t2, h + 1 / 3);
+  var g = hue2rgb(t1, t2, h);
+  var b = hue2rgb(t1, t2, h - 1 / 3);
+  return pack(r * 255, g * 255, b * 255, a2);
+};
+var SUPPORTED_COLOR_FUNCTIONS = {
+  hsl,
+  hsla: hsl,
+  rgb,
+  rgba: rgb
+};
+var parseColor = function(context, value) {
+  return color$1.parse(context, Parser.create(value).parseComponentValue());
+};
+var COLORS = {
+  ALICEBLUE: 4042850303,
+  ANTIQUEWHITE: 4209760255,
+  AQUA: 16777215,
+  AQUAMARINE: 2147472639,
+  AZURE: 4043309055,
+  BEIGE: 4126530815,
+  BISQUE: 4293182719,
+  BLACK: 255,
+  BLANCHEDALMOND: 4293643775,
+  BLUE: 65535,
+  BLUEVIOLET: 2318131967,
+  BROWN: 2771004159,
+  BURLYWOOD: 3736635391,
+  CADETBLUE: 1604231423,
+  CHARTREUSE: 2147418367,
+  CHOCOLATE: 3530104575,
+  CORAL: 4286533887,
+  CORNFLOWERBLUE: 1687547391,
+  CORNSILK: 4294499583,
+  CRIMSON: 3692313855,
+  CYAN: 16777215,
+  DARKBLUE: 35839,
+  DARKCYAN: 9145343,
+  DARKGOLDENROD: 3095837695,
+  DARKGRAY: 2846468607,
+  DARKGREEN: 6553855,
+  DARKGREY: 2846468607,
+  DARKKHAKI: 3182914559,
+  DARKMAGENTA: 2332068863,
+  DARKOLIVEGREEN: 1433087999,
+  DARKORANGE: 4287365375,
+  DARKORCHID: 2570243327,
+  DARKRED: 2332033279,
+  DARKSALMON: 3918953215,
+  DARKSEAGREEN: 2411499519,
+  DARKSLATEBLUE: 1211993087,
+  DARKSLATEGRAY: 793726975,
+  DARKSLATEGREY: 793726975,
+  DARKTURQUOISE: 13554175,
+  DARKVIOLET: 2483082239,
+  DEEPPINK: 4279538687,
+  DEEPSKYBLUE: 12582911,
+  DIMGRAY: 1768516095,
+  DIMGREY: 1768516095,
+  DODGERBLUE: 512819199,
+  FIREBRICK: 2988581631,
+  FLORALWHITE: 4294635775,
+  FORESTGREEN: 579543807,
+  FUCHSIA: 4278255615,
+  GAINSBORO: 3705462015,
+  GHOSTWHITE: 4177068031,
+  GOLD: 4292280575,
+  GOLDENROD: 3668254975,
+  GRAY: 2155905279,
+  GREEN: 8388863,
+  GREENYELLOW: 2919182335,
+  GREY: 2155905279,
+  HONEYDEW: 4043305215,
+  HOTPINK: 4285117695,
+  INDIANRED: 3445382399,
+  INDIGO: 1258324735,
+  IVORY: 4294963455,
+  KHAKI: 4041641215,
+  LAVENDER: 3873897215,
+  LAVENDERBLUSH: 4293981695,
+  LAWNGREEN: 2096890111,
+  LEMONCHIFFON: 4294626815,
+  LIGHTBLUE: 2916673279,
+  LIGHTCORAL: 4034953471,
+  LIGHTCYAN: 3774873599,
+  LIGHTGOLDENRODYELLOW: 4210742015,
+  LIGHTGRAY: 3553874943,
+  LIGHTGREEN: 2431553791,
+  LIGHTGREY: 3553874943,
+  LIGHTPINK: 4290167295,
+  LIGHTSALMON: 4288707327,
+  LIGHTSEAGREEN: 548580095,
+  LIGHTSKYBLUE: 2278488831,
+  LIGHTSLATEGRAY: 2005441023,
+  LIGHTSLATEGREY: 2005441023,
+  LIGHTSTEELBLUE: 2965692159,
+  LIGHTYELLOW: 4294959359,
+  LIME: 16711935,
+  LIMEGREEN: 852308735,
+  LINEN: 4210091775,
+  MAGENTA: 4278255615,
+  MAROON: 2147483903,
+  MEDIUMAQUAMARINE: 1724754687,
+  MEDIUMBLUE: 52735,
+  MEDIUMORCHID: 3126187007,
+  MEDIUMPURPLE: 2473647103,
+  MEDIUMSEAGREEN: 1018393087,
+  MEDIUMSLATEBLUE: 2070474495,
+  MEDIUMSPRINGGREEN: 16423679,
+  MEDIUMTURQUOISE: 1221709055,
+  MEDIUMVIOLETRED: 3340076543,
+  MIDNIGHTBLUE: 421097727,
+  MINTCREAM: 4127193855,
+  MISTYROSE: 4293190143,
+  MOCCASIN: 4293178879,
+  NAVAJOWHITE: 4292783615,
+  NAVY: 33023,
+  OLDLACE: 4260751103,
+  OLIVE: 2155872511,
+  OLIVEDRAB: 1804477439,
+  ORANGE: 4289003775,
+  ORANGERED: 4282712319,
+  ORCHID: 3664828159,
+  PALEGOLDENROD: 4008225535,
+  PALEGREEN: 2566625535,
+  PALETURQUOISE: 2951671551,
+  PALEVIOLETRED: 3681588223,
+  PAPAYAWHIP: 4293907967,
+  PEACHPUFF: 4292524543,
+  PERU: 3448061951,
+  PINK: 4290825215,
+  PLUM: 3718307327,
+  POWDERBLUE: 2967529215,
+  PURPLE: 2147516671,
+  REBECCAPURPLE: 1714657791,
+  RED: 4278190335,
+  ROSYBROWN: 3163525119,
+  ROYALBLUE: 1097458175,
+  SADDLEBROWN: 2336560127,
+  SALMON: 4202722047,
+  SANDYBROWN: 4104413439,
+  SEAGREEN: 780883967,
+  SEASHELL: 4294307583,
+  SIENNA: 2689740287,
+  SILVER: 3233857791,
+  SKYBLUE: 2278484991,
+  SLATEBLUE: 1784335871,
+  SLATEGRAY: 1887473919,
+  SLATEGREY: 1887473919,
+  SNOW: 4294638335,
+  SPRINGGREEN: 16744447,
+  STEELBLUE: 1182971135,
+  TAN: 3535047935,
+  TEAL: 8421631,
+  THISTLE: 3636451583,
+  TOMATO: 4284696575,
+  TRANSPARENT: 0,
+  TURQUOISE: 1088475391,
+  VIOLET: 4001558271,
+  WHEAT: 4125012991,
+  WHITE: 4294967295,
+  WHITESMOKE: 4126537215,
+  YELLOW: 4294902015,
+  YELLOWGREEN: 2597139199
+};
+var backgroundClip = {
+  name: "background-clip",
+  initialValue: "border-box",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    return tokens.map(function(token) {
+      if (isIdentToken(token)) {
+        switch (token.value) {
+          case "padding-box":
+            return 1;
+          case "content-box":
+            return 2;
+        }
+      }
+      return 0;
+    });
+  }
+};
+var backgroundColor = {
+  name: "background-color",
+  initialValue: "transparent",
+  prefix: false,
+  type: 3,
+  format: "color"
+};
+var parseColorStop = function(context, args) {
+  var color2 = color$1.parse(context, args[0]);
+  var stop = args[1];
+  return stop && isLengthPercentage(stop) ? { color: color2, stop } : { color: color2, stop: null };
+};
+var processColorStops = function(stops, lineLength) {
+  var first = stops[0];
+  var last = stops[stops.length - 1];
+  if (first.stop === null) {
+    first.stop = ZERO_LENGTH;
+  }
+  if (last.stop === null) {
+    last.stop = HUNDRED_PERCENT;
+  }
+  var processStops = [];
+  var previous = 0;
+  for (var i = 0; i < stops.length; i++) {
+    var stop_1 = stops[i].stop;
+    if (stop_1 !== null) {
+      var absoluteValue = getAbsoluteValue(stop_1, lineLength);
+      if (absoluteValue > previous) {
+        processStops.push(absoluteValue);
+      } else {
+        processStops.push(previous);
+      }
+      previous = absoluteValue;
+    } else {
+      processStops.push(null);
+    }
+  }
+  var gapBegin = null;
+  for (var i = 0; i < processStops.length; i++) {
+    var stop_2 = processStops[i];
+    if (stop_2 === null) {
+      if (gapBegin === null) {
+        gapBegin = i;
+      }
+    } else if (gapBegin !== null) {
+      var gapLength = i - gapBegin;
+      var beforeGap = processStops[gapBegin - 1];
+      var gapValue = (stop_2 - beforeGap) / (gapLength + 1);
+      for (var g = 1; g <= gapLength; g++) {
+        processStops[gapBegin + g - 1] = gapValue * g;
+      }
+      gapBegin = null;
+    }
+  }
+  return stops.map(function(_a, i2) {
+    var color2 = _a.color;
+    return { color: color2, stop: Math.max(Math.min(1, processStops[i2] / lineLength), 0) };
+  });
+};
+var getAngleFromCorner = function(corner, width, height) {
+  var centerX = width / 2;
+  var centerY = height / 2;
+  var x = getAbsoluteValue(corner[0], width) - centerX;
+  var y = centerY - getAbsoluteValue(corner[1], height);
+  return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);
+};
+var calculateGradientDirection = function(angle2, width, height) {
+  var radian = typeof angle2 === "number" ? angle2 : getAngleFromCorner(angle2, width, height);
+  var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
+  var halfWidth = width / 2;
+  var halfHeight = height / 2;
+  var halfLineLength = lineLength / 2;
+  var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;
+  var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;
+  return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
+};
+var distance = function(a2, b) {
+  return Math.sqrt(a2 * a2 + b * b);
+};
+var findCorner = function(width, height, x, y, closest) {
+  var corners = [
+    [0, 0],
+    [0, height],
+    [width, 0],
+    [width, height]
+  ];
+  return corners.reduce(function(stat, corner) {
+    var cx = corner[0], cy = corner[1];
+    var d = distance(x - cx, y - cy);
+    if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
+      return {
+        optimumCorner: corner,
+        optimumDistance: d
+      };
+    }
+    return stat;
+  }, {
+    optimumDistance: closest ? Infinity : -Infinity,
+    optimumCorner: null
+  }).optimumCorner;
+};
+var calculateRadius = function(gradient, x, y, width, height) {
+  var rx = 0;
+  var ry = 0;
+  switch (gradient.size) {
+    case 0:
+      if (gradient.shape === 0) {
+        rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
+      } else if (gradient.shape === 1) {
+        rx = Math.min(Math.abs(x), Math.abs(x - width));
+        ry = Math.min(Math.abs(y), Math.abs(y - height));
+      }
+      break;
+    case 2:
+      if (gradient.shape === 0) {
+        rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
+      } else if (gradient.shape === 1) {
+        var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));
+        var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];
+        rx = distance(cx - x, (cy - y) / c);
+        ry = c * rx;
+      }
+      break;
+    case 1:
+      if (gradient.shape === 0) {
+        rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
+      } else if (gradient.shape === 1) {
+        rx = Math.max(Math.abs(x), Math.abs(x - width));
+        ry = Math.max(Math.abs(y), Math.abs(y - height));
+      }
+      break;
+    case 3:
+      if (gradient.shape === 0) {
+        rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
+      } else if (gradient.shape === 1) {
+        var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));
+        var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];
+        rx = distance(cx - x, (cy - y) / c);
+        ry = c * rx;
+      }
+      break;
+  }
+  if (Array.isArray(gradient.size)) {
+    rx = getAbsoluteValue(gradient.size[0], width);
+    ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;
+  }
+  return [rx, ry];
+};
+var linearGradient = function(context, tokens) {
+  var angle$1 = deg(180);
+  var stops = [];
+  parseFunctionArgs(tokens).forEach(function(arg, i) {
+    if (i === 0) {
+      var firstToken = arg[0];
+      if (firstToken.type === 20 && firstToken.value === "to") {
+        angle$1 = parseNamedSide(arg);
+        return;
+      } else if (isAngle(firstToken)) {
+        angle$1 = angle.parse(context, firstToken);
+        return;
+      }
+    }
+    var colorStop = parseColorStop(context, arg);
+    stops.push(colorStop);
+  });
+  return {
+    angle: angle$1,
+    stops,
+    type: 1
+    /* LINEAR_GRADIENT */
+  };
+};
+var prefixLinearGradient = function(context, tokens) {
+  var angle$1 = deg(180);
+  var stops = [];
+  parseFunctionArgs(tokens).forEach(function(arg, i) {
+    if (i === 0) {
+      var firstToken = arg[0];
+      if (firstToken.type === 20 && ["top", "left", "right", "bottom"].indexOf(firstToken.value) !== -1) {
+        angle$1 = parseNamedSide(arg);
+        return;
+      } else if (isAngle(firstToken)) {
+        angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);
+        return;
+      }
+    }
+    var colorStop = parseColorStop(context, arg);
+    stops.push(colorStop);
+  });
+  return {
+    angle: angle$1,
+    stops,
+    type: 1
+    /* LINEAR_GRADIENT */
+  };
+};
+var webkitGradient = function(context, tokens) {
+  var angle2 = deg(180);
+  var stops = [];
+  var type = 1;
+  var shape = 0;
+  var size = 3;
+  var position2 = [];
+  parseFunctionArgs(tokens).forEach(function(arg, i) {
+    var firstToken = arg[0];
+    if (i === 0) {
+      if (isIdentToken(firstToken) && firstToken.value === "linear") {
+        type = 1;
+        return;
+      } else if (isIdentToken(firstToken) && firstToken.value === "radial") {
+        type = 2;
+        return;
+      }
+    }
+    if (firstToken.type === 18) {
+      if (firstToken.name === "from") {
+        var color2 = color$1.parse(context, firstToken.values[0]);
+        stops.push({ stop: ZERO_LENGTH, color: color2 });
+      } else if (firstToken.name === "to") {
+        var color2 = color$1.parse(context, firstToken.values[0]);
+        stops.push({ stop: HUNDRED_PERCENT, color: color2 });
+      } else if (firstToken.name === "color-stop") {
+        var values = firstToken.values.filter(nonFunctionArgSeparator);
+        if (values.length === 2) {
+          var color2 = color$1.parse(context, values[1]);
+          var stop_1 = values[0];
+          if (isNumberToken(stop_1)) {
+            stops.push({
+              stop: { type: 16, number: stop_1.number * 100, flags: stop_1.flags },
+              color: color2
+            });
+          }
+        }
+      }
+    }
+  });
+  return type === 1 ? {
+    angle: (angle2 + deg(180)) % deg(360),
+    stops,
+    type
+  } : { size, shape, stops, position: position2, type };
+};
+var CLOSEST_SIDE = "closest-side";
+var FARTHEST_SIDE = "farthest-side";
+var CLOSEST_CORNER = "closest-corner";
+var FARTHEST_CORNER = "farthest-corner";
+var CIRCLE = "circle";
+var ELLIPSE = "ellipse";
+var COVER = "cover";
+var CONTAIN = "contain";
+var radialGradient = function(context, tokens) {
+  var shape = 0;
+  var size = 3;
+  var stops = [];
+  var position2 = [];
+  parseFunctionArgs(tokens).forEach(function(arg, i) {
+    var isColorStop = true;
+    if (i === 0) {
+      var isAtPosition_1 = false;
+      isColorStop = arg.reduce(function(acc, token) {
+        if (isAtPosition_1) {
+          if (isIdentToken(token)) {
+            switch (token.value) {
+              case "center":
+                position2.push(FIFTY_PERCENT);
+                return acc;
+              case "top":
+              case "left":
+                position2.push(ZERO_LENGTH);
+                return acc;
+              case "right":
+              case "bottom":
+                position2.push(HUNDRED_PERCENT);
+                return acc;
+            }
+          } else if (isLengthPercentage(token) || isLength(token)) {
+            position2.push(token);
+          }
+        } else if (isIdentToken(token)) {
+          switch (token.value) {
+            case CIRCLE:
+              shape = 0;
+              return false;
+            case ELLIPSE:
+              shape = 1;
+              return false;
+            case "at":
+              isAtPosition_1 = true;
+              return false;
+            case CLOSEST_SIDE:
+              size = 0;
+              return false;
+            case COVER:
+            case FARTHEST_SIDE:
+              size = 1;
+              return false;
+            case CONTAIN:
+            case CLOSEST_CORNER:
+              size = 2;
+              return false;
+            case FARTHEST_CORNER:
+              size = 3;
+              return false;
+          }
+        } else if (isLength(token) || isLengthPercentage(token)) {
+          if (!Array.isArray(size)) {
+            size = [];
+          }
+          size.push(token);
+          return false;
+        }
+        return acc;
+      }, isColorStop);
+    }
+    if (isColorStop) {
+      var colorStop = parseColorStop(context, arg);
+      stops.push(colorStop);
+    }
+  });
+  return {
+    size,
+    shape,
+    stops,
+    position: position2,
+    type: 2
+    /* RADIAL_GRADIENT */
+  };
+};
+var prefixRadialGradient = function(context, tokens) {
+  var shape = 0;
+  var size = 3;
+  var stops = [];
+  var position2 = [];
+  parseFunctionArgs(tokens).forEach(function(arg, i) {
+    var isColorStop = true;
+    if (i === 0) {
+      isColorStop = arg.reduce(function(acc, token) {
+        if (isIdentToken(token)) {
+          switch (token.value) {
+            case "center":
+              position2.push(FIFTY_PERCENT);
+              return false;
+            case "top":
+            case "left":
+              position2.push(ZERO_LENGTH);
+              return false;
+            case "right":
+            case "bottom":
+              position2.push(HUNDRED_PERCENT);
+              return false;
+          }
+        } else if (isLengthPercentage(token) || isLength(token)) {
+          position2.push(token);
+          return false;
+        }
+        return acc;
+      }, isColorStop);
+    } else if (i === 1) {
+      isColorStop = arg.reduce(function(acc, token) {
+        if (isIdentToken(token)) {
+          switch (token.value) {
+            case CIRCLE:
+              shape = 0;
+              return false;
+            case ELLIPSE:
+              shape = 1;
+              return false;
+            case CONTAIN:
+            case CLOSEST_SIDE:
+              size = 0;
+              return false;
+            case FARTHEST_SIDE:
+              size = 1;
+              return false;
+            case CLOSEST_CORNER:
+              size = 2;
+              return false;
+            case COVER:
+            case FARTHEST_CORNER:
+              size = 3;
+              return false;
+          }
+        } else if (isLength(token) || isLengthPercentage(token)) {
+          if (!Array.isArray(size)) {
+            size = [];
+          }
+          size.push(token);
+          return false;
+        }
+        return acc;
+      }, isColorStop);
+    }
+    if (isColorStop) {
+      var colorStop = parseColorStop(context, arg);
+      stops.push(colorStop);
+    }
+  });
+  return {
+    size,
+    shape,
+    stops,
+    position: position2,
+    type: 2
+    /* RADIAL_GRADIENT */
+  };
+};
+var isLinearGradient = function(background) {
+  return background.type === 1;
+};
+var isRadialGradient = function(background) {
+  return background.type === 2;
+};
+var image = {
+  name: "image",
+  parse: function(context, value) {
+    if (value.type === 22) {
+      var image_1 = {
+        url: value.value,
+        type: 0
+        /* URL */
+      };
+      context.cache.addImage(value.value);
+      return image_1;
+    }
+    if (value.type === 18) {
+      var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
+      if (typeof imageFunction === "undefined") {
+        throw new Error('Attempting to parse an unsupported image function "' + value.name + '"');
+      }
+      return imageFunction(context, value.values);
+    }
+    throw new Error("Unsupported image type " + value.type);
+  }
+};
+function isSupportedImage(value) {
+  return !(value.type === 20 && value.value === "none") && (value.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]);
+}
+var SUPPORTED_IMAGE_FUNCTIONS = {
+  "linear-gradient": linearGradient,
+  "-moz-linear-gradient": prefixLinearGradient,
+  "-ms-linear-gradient": prefixLinearGradient,
+  "-o-linear-gradient": prefixLinearGradient,
+  "-webkit-linear-gradient": prefixLinearGradient,
+  "radial-gradient": radialGradient,
+  "-moz-radial-gradient": prefixRadialGradient,
+  "-ms-radial-gradient": prefixRadialGradient,
+  "-o-radial-gradient": prefixRadialGradient,
+  "-webkit-radial-gradient": prefixRadialGradient,
+  "-webkit-gradient": webkitGradient
+};
+var backgroundImage = {
+  name: "background-image",
+  initialValue: "none",
+  type: 1,
+  prefix: false,
+  parse: function(context, tokens) {
+    if (tokens.length === 0) {
+      return [];
+    }
+    var first = tokens[0];
+    if (first.type === 20 && first.value === "none") {
+      return [];
+    }
+    return tokens.filter(function(value) {
+      return nonFunctionArgSeparator(value) && isSupportedImage(value);
+    }).map(function(value) {
+      return image.parse(context, value);
+    });
+  }
+};
+var backgroundOrigin = {
+  name: "background-origin",
+  initialValue: "border-box",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    return tokens.map(function(token) {
+      if (isIdentToken(token)) {
+        switch (token.value) {
+          case "padding-box":
+            return 1;
+          case "content-box":
+            return 2;
+        }
+      }
+      return 0;
+    });
+  }
+};
+var backgroundPosition = {
+  name: "background-position",
+  initialValue: "0% 0%",
+  type: 1,
+  prefix: false,
+  parse: function(_context, tokens) {
+    return parseFunctionArgs(tokens).map(function(values) {
+      return values.filter(isLengthPercentage);
+    }).map(parseLengthPercentageTuple);
+  }
+};
+var backgroundRepeat = {
+  name: "background-repeat",
+  initialValue: "repeat",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    return parseFunctionArgs(tokens).map(function(values) {
+      return values.filter(isIdentToken).map(function(token) {
+        return token.value;
+      }).join(" ");
+    }).map(parseBackgroundRepeat);
+  }
+};
+var parseBackgroundRepeat = function(value) {
+  switch (value) {
+    case "no-repeat":
+      return 1;
+    case "repeat-x":
+    case "repeat no-repeat":
+      return 2;
+    case "repeat-y":
+    case "no-repeat repeat":
+      return 3;
+    case "repeat":
+    default:
+      return 0;
+  }
+};
+var BACKGROUND_SIZE;
+(function(BACKGROUND_SIZE2) {
+  BACKGROUND_SIZE2["AUTO"] = "auto";
+  BACKGROUND_SIZE2["CONTAIN"] = "contain";
+  BACKGROUND_SIZE2["COVER"] = "cover";
+})(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));
+var backgroundSize = {
+  name: "background-size",
+  initialValue: "0",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    return parseFunctionArgs(tokens).map(function(values) {
+      return values.filter(isBackgroundSizeInfoToken);
+    });
+  }
+};
+var isBackgroundSizeInfoToken = function(value) {
+  return isIdentToken(value) || isLengthPercentage(value);
+};
+var borderColorForSide = function(side) {
+  return {
+    name: "border-" + side + "-color",
+    initialValue: "transparent",
+    prefix: false,
+    type: 3,
+    format: "color"
+  };
+};
+var borderTopColor = borderColorForSide("top");
+var borderRightColor = borderColorForSide("right");
+var borderBottomColor = borderColorForSide("bottom");
+var borderLeftColor = borderColorForSide("left");
+var borderRadiusForSide = function(side) {
+  return {
+    name: "border-radius-" + side,
+    initialValue: "0 0",
+    prefix: false,
+    type: 1,
+    parse: function(_context, tokens) {
+      return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));
+    }
+  };
+};
+var borderTopLeftRadius = borderRadiusForSide("top-left");
+var borderTopRightRadius = borderRadiusForSide("top-right");
+var borderBottomRightRadius = borderRadiusForSide("bottom-right");
+var borderBottomLeftRadius = borderRadiusForSide("bottom-left");
+var borderStyleForSide = function(side) {
+  return {
+    name: "border-" + side + "-style",
+    initialValue: "solid",
+    prefix: false,
+    type: 2,
+    parse: function(_context, style) {
+      switch (style) {
+        case "none":
+          return 0;
+        case "dashed":
+          return 2;
+        case "dotted":
+          return 3;
+        case "double":
+          return 4;
+      }
+      return 1;
+    }
+  };
+};
+var borderTopStyle = borderStyleForSide("top");
+var borderRightStyle = borderStyleForSide("right");
+var borderBottomStyle = borderStyleForSide("bottom");
+var borderLeftStyle = borderStyleForSide("left");
+var borderWidthForSide = function(side) {
+  return {
+    name: "border-" + side + "-width",
+    initialValue: "0",
+    type: 0,
+    prefix: false,
+    parse: function(_context, token) {
+      if (isDimensionToken(token)) {
+        return token.number;
+      }
+      return 0;
+    }
+  };
+};
+var borderTopWidth = borderWidthForSide("top");
+var borderRightWidth = borderWidthForSide("right");
+var borderBottomWidth = borderWidthForSide("bottom");
+var borderLeftWidth = borderWidthForSide("left");
+var color = {
+  name: "color",
+  initialValue: "transparent",
+  prefix: false,
+  type: 3,
+  format: "color"
+};
+var direction = {
+  name: "direction",
+  initialValue: "ltr",
+  prefix: false,
+  type: 2,
+  parse: function(_context, direction2) {
+    switch (direction2) {
+      case "rtl":
+        return 1;
+      case "ltr":
+      default:
+        return 0;
+    }
+  }
+};
+var display = {
+  name: "display",
+  initialValue: "inline-block",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    return tokens.filter(isIdentToken).reduce(
+      function(bit, token) {
+        return bit | parseDisplayValue(token.value);
+      },
+      0
+      /* NONE */
+    );
+  }
+};
+var parseDisplayValue = function(display2) {
+  switch (display2) {
+    case "block":
+    case "-webkit-box":
+      return 2;
+    case "inline":
+      return 4;
+    case "run-in":
+      return 8;
+    case "flow":
+      return 16;
+    case "flow-root":
+      return 32;
+    case "table":
+      return 64;
+    case "flex":
+    case "-webkit-flex":
+      return 128;
+    case "grid":
+    case "-ms-grid":
+      return 256;
+    case "ruby":
+      return 512;
+    case "subgrid":
+      return 1024;
+    case "list-item":
+      return 2048;
+    case "table-row-group":
+      return 4096;
+    case "table-header-group":
+      return 8192;
+    case "table-footer-group":
+      return 16384;
+    case "table-row":
+      return 32768;
+    case "table-cell":
+      return 65536;
+    case "table-column-group":
+      return 131072;
+    case "table-column":
+      return 262144;
+    case "table-caption":
+      return 524288;
+    case "ruby-base":
+      return 1048576;
+    case "ruby-text":
+      return 2097152;
+    case "ruby-base-container":
+      return 4194304;
+    case "ruby-text-container":
+      return 8388608;
+    case "contents":
+      return 16777216;
+    case "inline-block":
+      return 33554432;
+    case "inline-list-item":
+      return 67108864;
+    case "inline-table":
+      return 134217728;
+    case "inline-flex":
+      return 268435456;
+    case "inline-grid":
+      return 536870912;
+  }
+  return 0;
+};
+var float = {
+  name: "float",
+  initialValue: "none",
+  prefix: false,
+  type: 2,
+  parse: function(_context, float2) {
+    switch (float2) {
+      case "left":
+        return 1;
+      case "right":
+        return 2;
+      case "inline-start":
+        return 3;
+      case "inline-end":
+        return 4;
+    }
+    return 0;
+  }
+};
+var letterSpacing = {
+  name: "letter-spacing",
+  initialValue: "0",
+  prefix: false,
+  type: 0,
+  parse: function(_context, token) {
+    if (token.type === 20 && token.value === "normal") {
+      return 0;
+    }
+    if (token.type === 17) {
+      return token.number;
+    }
+    if (token.type === 15) {
+      return token.number;
+    }
+    return 0;
+  }
+};
+var LINE_BREAK;
+(function(LINE_BREAK2) {
+  LINE_BREAK2["NORMAL"] = "normal";
+  LINE_BREAK2["STRICT"] = "strict";
+})(LINE_BREAK || (LINE_BREAK = {}));
+var lineBreak = {
+  name: "line-break",
+  initialValue: "normal",
+  prefix: false,
+  type: 2,
+  parse: function(_context, lineBreak2) {
+    switch (lineBreak2) {
+      case "strict":
+        return LINE_BREAK.STRICT;
+      case "normal":
+      default:
+        return LINE_BREAK.NORMAL;
+    }
+  }
+};
+var lineHeight = {
+  name: "line-height",
+  initialValue: "normal",
+  prefix: false,
+  type: 4
+  /* TOKEN_VALUE */
+};
+var computeLineHeight = function(token, fontSize2) {
+  if (isIdentToken(token) && token.value === "normal") {
+    return 1.2 * fontSize2;
+  } else if (token.type === 17) {
+    return fontSize2 * token.number;
+  } else if (isLengthPercentage(token)) {
+    return getAbsoluteValue(token, fontSize2);
+  }
+  return fontSize2;
+};
+var listStyleImage = {
+  name: "list-style-image",
+  initialValue: "none",
+  type: 0,
+  prefix: false,
+  parse: function(context, token) {
+    if (token.type === 20 && token.value === "none") {
+      return null;
+    }
+    return image.parse(context, token);
+  }
+};
+var listStylePosition = {
+  name: "list-style-position",
+  initialValue: "outside",
+  prefix: false,
+  type: 2,
+  parse: function(_context, position2) {
+    switch (position2) {
+      case "inside":
+        return 0;
+      case "outside":
+      default:
+        return 1;
+    }
+  }
+};
+var listStyleType = {
+  name: "list-style-type",
+  initialValue: "none",
+  prefix: false,
+  type: 2,
+  parse: function(_context, type) {
+    switch (type) {
+      case "disc":
+        return 0;
+      case "circle":
+        return 1;
+      case "square":
+        return 2;
+      case "decimal":
+        return 3;
+      case "cjk-decimal":
+        return 4;
+      case "decimal-leading-zero":
+        return 5;
+      case "lower-roman":
+        return 6;
+      case "upper-roman":
+        return 7;
+      case "lower-greek":
+        return 8;
+      case "lower-alpha":
+        return 9;
+      case "upper-alpha":
+        return 10;
+      case "arabic-indic":
+        return 11;
+      case "armenian":
+        return 12;
+      case "bengali":
+        return 13;
+      case "cambodian":
+        return 14;
+      case "cjk-earthly-branch":
+        return 15;
+      case "cjk-heavenly-stem":
+        return 16;
+      case "cjk-ideographic":
+        return 17;
+      case "devanagari":
+        return 18;
+      case "ethiopic-numeric":
+        return 19;
+      case "georgian":
+        return 20;
+      case "gujarati":
+        return 21;
+      case "gurmukhi":
+        return 22;
+      case "hebrew":
+        return 22;
+      case "hiragana":
+        return 23;
+      case "hiragana-iroha":
+        return 24;
+      case "japanese-formal":
+        return 25;
+      case "japanese-informal":
+        return 26;
+      case "kannada":
+        return 27;
+      case "katakana":
+        return 28;
+      case "katakana-iroha":
+        return 29;
+      case "khmer":
+        return 30;
+      case "korean-hangul-formal":
+        return 31;
+      case "korean-hanja-formal":
+        return 32;
+      case "korean-hanja-informal":
+        return 33;
+      case "lao":
+        return 34;
+      case "lower-armenian":
+        return 35;
+      case "malayalam":
+        return 36;
+      case "mongolian":
+        return 37;
+      case "myanmar":
+        return 38;
+      case "oriya":
+        return 39;
+      case "persian":
+        return 40;
+      case "simp-chinese-formal":
+        return 41;
+      case "simp-chinese-informal":
+        return 42;
+      case "tamil":
+        return 43;
+      case "telugu":
+        return 44;
+      case "thai":
+        return 45;
+      case "tibetan":
+        return 46;
+      case "trad-chinese-formal":
+        return 47;
+      case "trad-chinese-informal":
+        return 48;
+      case "upper-armenian":
+        return 49;
+      case "disclosure-open":
+        return 50;
+      case "disclosure-closed":
+        return 51;
+      case "none":
+      default:
+        return -1;
+    }
+  }
+};
+var marginForSide = function(side) {
+  return {
+    name: "margin-" + side,
+    initialValue: "0",
+    prefix: false,
+    type: 4
+    /* TOKEN_VALUE */
+  };
+};
+var marginTop = marginForSide("top");
+var marginRight = marginForSide("right");
+var marginBottom = marginForSide("bottom");
+var marginLeft = marginForSide("left");
+var overflow = {
+  name: "overflow",
+  initialValue: "visible",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    return tokens.filter(isIdentToken).map(function(overflow2) {
+      switch (overflow2.value) {
+        case "hidden":
+          return 1;
+        case "scroll":
+          return 2;
+        case "clip":
+          return 3;
+        case "auto":
+          return 4;
+        case "visible":
+        default:
+          return 0;
+      }
+    });
+  }
+};
+var overflowWrap = {
+  name: "overflow-wrap",
+  initialValue: "normal",
+  prefix: false,
+  type: 2,
+  parse: function(_context, overflow2) {
+    switch (overflow2) {
+      case "break-word":
+        return "break-word";
+      case "normal":
+      default:
+        return "normal";
+    }
+  }
+};
+var paddingForSide = function(side) {
+  return {
+    name: "padding-" + side,
+    initialValue: "0",
+    prefix: false,
+    type: 3,
+    format: "length-percentage"
+  };
+};
+var paddingTop = paddingForSide("top");
+var paddingRight = paddingForSide("right");
+var paddingBottom = paddingForSide("bottom");
+var paddingLeft = paddingForSide("left");
+var textAlign = {
+  name: "text-align",
+  initialValue: "left",
+  prefix: false,
+  type: 2,
+  parse: function(_context, textAlign2) {
+    switch (textAlign2) {
+      case "right":
+        return 2;
+      case "center":
+      case "justify":
+        return 1;
+      case "left":
+      default:
+        return 0;
+    }
+  }
+};
+var position = {
+  name: "position",
+  initialValue: "static",
+  prefix: false,
+  type: 2,
+  parse: function(_context, position2) {
+    switch (position2) {
+      case "relative":
+        return 1;
+      case "absolute":
+        return 2;
+      case "fixed":
+        return 3;
+      case "sticky":
+        return 4;
+    }
+    return 0;
+  }
+};
+var textShadow = {
+  name: "text-shadow",
+  initialValue: "none",
+  type: 1,
+  prefix: false,
+  parse: function(context, tokens) {
+    if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
+      return [];
+    }
+    return parseFunctionArgs(tokens).map(function(values) {
+      var shadow = {
+        color: COLORS.TRANSPARENT,
+        offsetX: ZERO_LENGTH,
+        offsetY: ZERO_LENGTH,
+        blur: ZERO_LENGTH
+      };
+      var c = 0;
+      for (var i = 0; i < values.length; i++) {
+        var token = values[i];
+        if (isLength(token)) {
+          if (c === 0) {
+            shadow.offsetX = token;
+          } else if (c === 1) {
+            shadow.offsetY = token;
+          } else {
+            shadow.blur = token;
+          }
+          c++;
+        } else {
+          shadow.color = color$1.parse(context, token);
+        }
+      }
+      return shadow;
+    });
+  }
+};
+var textTransform = {
+  name: "text-transform",
+  initialValue: "none",
+  prefix: false,
+  type: 2,
+  parse: function(_context, textTransform2) {
+    switch (textTransform2) {
+      case "uppercase":
+        return 2;
+      case "lowercase":
+        return 1;
+      case "capitalize":
+        return 3;
+    }
+    return 0;
+  }
+};
+var transform$1 = {
+  name: "transform",
+  initialValue: "none",
+  prefix: true,
+  type: 0,
+  parse: function(_context, token) {
+    if (token.type === 20 && token.value === "none") {
+      return null;
+    }
+    if (token.type === 18) {
+      var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
+      if (typeof transformFunction === "undefined") {
+        throw new Error('Attempting to parse an unsupported transform function "' + token.name + '"');
+      }
+      return transformFunction(token.values);
+    }
+    return null;
+  }
+};
+var matrix = function(args) {
+  var values = args.filter(function(arg) {
+    return arg.type === 17;
+  }).map(function(arg) {
+    return arg.number;
+  });
+  return values.length === 6 ? values : null;
+};
+var matrix3d = function(args) {
+  var values = args.filter(function(arg) {
+    return arg.type === 17;
+  }).map(function(arg) {
+    return arg.number;
+  });
+  var a1 = values[0], b1 = values[1];
+  values[2];
+  values[3];
+  var a2 = values[4], b2 = values[5];
+  values[6];
+  values[7];
+  values[8];
+  values[9];
+  values[10];
+  values[11];
+  var a4 = values[12], b4 = values[13];
+  values[14];
+  values[15];
+  return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;
+};
+var SUPPORTED_TRANSFORM_FUNCTIONS = {
+  matrix,
+  matrix3d
+};
+var DEFAULT_VALUE = {
+  type: 16,
+  number: 50,
+  flags: FLAG_INTEGER
+};
+var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];
+var transformOrigin = {
+  name: "transform-origin",
+  initialValue: "50% 50%",
+  prefix: true,
+  type: 1,
+  parse: function(_context, tokens) {
+    var origins = tokens.filter(isLengthPercentage);
+    if (origins.length !== 2) {
+      return DEFAULT;
+    }
+    return [origins[0], origins[1]];
+  }
+};
+var visibility = {
+  name: "visible",
+  initialValue: "none",
+  prefix: false,
+  type: 2,
+  parse: function(_context, visibility2) {
+    switch (visibility2) {
+      case "hidden":
+        return 1;
+      case "collapse":
+        return 2;
+      case "visible":
+      default:
+        return 0;
+    }
+  }
+};
+var WORD_BREAK;
+(function(WORD_BREAK2) {
+  WORD_BREAK2["NORMAL"] = "normal";
+  WORD_BREAK2["BREAK_ALL"] = "break-all";
+  WORD_BREAK2["KEEP_ALL"] = "keep-all";
+})(WORD_BREAK || (WORD_BREAK = {}));
+var wordBreak = {
+  name: "word-break",
+  initialValue: "normal",
+  prefix: false,
+  type: 2,
+  parse: function(_context, wordBreak2) {
+    switch (wordBreak2) {
+      case "break-all":
+        return WORD_BREAK.BREAK_ALL;
+      case "keep-all":
+        return WORD_BREAK.KEEP_ALL;
+      case "normal":
+      default:
+        return WORD_BREAK.NORMAL;
+    }
+  }
+};
+var zIndex = {
+  name: "z-index",
+  initialValue: "auto",
+  prefix: false,
+  type: 0,
+  parse: function(_context, token) {
+    if (token.type === 20) {
+      return { auto: true, order: 0 };
+    }
+    if (isNumberToken(token)) {
+      return { auto: false, order: token.number };
+    }
+    throw new Error("Invalid z-index number parsed");
+  }
+};
+var time = {
+  name: "time",
+  parse: function(_context, value) {
+    if (value.type === 15) {
+      switch (value.unit.toLowerCase()) {
+        case "s":
+          return 1e3 * value.number;
+        case "ms":
+          return value.number;
+      }
+    }
+    throw new Error("Unsupported time type");
+  }
+};
+var opacity = {
+  name: "opacity",
+  initialValue: "1",
+  type: 0,
+  prefix: false,
+  parse: function(_context, token) {
+    if (isNumberToken(token)) {
+      return token.number;
+    }
+    return 1;
+  }
+};
+var textDecorationColor = {
+  name: "text-decoration-color",
+  initialValue: "transparent",
+  prefix: false,
+  type: 3,
+  format: "color"
+};
+var textDecorationLine = {
+  name: "text-decoration-line",
+  initialValue: "none",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    return tokens.filter(isIdentToken).map(function(token) {
+      switch (token.value) {
+        case "underline":
+          return 1;
+        case "overline":
+          return 2;
+        case "line-through":
+          return 3;
+        case "none":
+          return 4;
+      }
+      return 0;
+    }).filter(function(line) {
+      return line !== 0;
+    });
+  }
+};
+var fontFamily = {
+  name: "font-family",
+  initialValue: "",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    var accumulator = [];
+    var results = [];
+    tokens.forEach(function(token) {
+      switch (token.type) {
+        case 20:
+        case 0:
+          accumulator.push(token.value);
+          break;
+        case 17:
+          accumulator.push(token.number.toString());
+          break;
+        case 4:
+          results.push(accumulator.join(" "));
+          accumulator.length = 0;
+          break;
+      }
+    });
+    if (accumulator.length) {
+      results.push(accumulator.join(" "));
+    }
+    return results.map(function(result) {
+      return result.indexOf(" ") === -1 ? result : "'" + result + "'";
+    });
+  }
+};
+var fontSize = {
+  name: "font-size",
+  initialValue: "0",
+  prefix: false,
+  type: 3,
+  format: "length"
+};
+var fontWeight = {
+  name: "font-weight",
+  initialValue: "normal",
+  type: 0,
+  prefix: false,
+  parse: function(_context, token) {
+    if (isNumberToken(token)) {
+      return token.number;
+    }
+    if (isIdentToken(token)) {
+      switch (token.value) {
+        case "bold":
+          return 700;
+        case "normal":
+        default:
+          return 400;
+      }
+    }
+    return 400;
+  }
+};
+var fontVariant = {
+  name: "font-variant",
+  initialValue: "none",
+  type: 1,
+  prefix: false,
+  parse: function(_context, tokens) {
+    return tokens.filter(isIdentToken).map(function(token) {
+      return token.value;
+    });
+  }
+};
+var fontStyle = {
+  name: "font-style",
+  initialValue: "normal",
+  prefix: false,
+  type: 2,
+  parse: function(_context, overflow2) {
+    switch (overflow2) {
+      case "oblique":
+        return "oblique";
+      case "italic":
+        return "italic";
+      case "normal":
+      default:
+        return "normal";
+    }
+  }
+};
+var contains = function(bit, value) {
+  return (bit & value) !== 0;
+};
+var content = {
+  name: "content",
+  initialValue: "none",
+  type: 1,
+  prefix: false,
+  parse: function(_context, tokens) {
+    if (tokens.length === 0) {
+      return [];
+    }
+    var first = tokens[0];
+    if (first.type === 20 && first.value === "none") {
+      return [];
+    }
+    return tokens;
+  }
+};
+var counterIncrement = {
+  name: "counter-increment",
+  initialValue: "none",
+  prefix: true,
+  type: 1,
+  parse: function(_context, tokens) {
+    if (tokens.length === 0) {
+      return null;
+    }
+    var first = tokens[0];
+    if (first.type === 20 && first.value === "none") {
+      return null;
+    }
+    var increments = [];
+    var filtered = tokens.filter(nonWhiteSpace);
+    for (var i = 0; i < filtered.length; i++) {
+      var counter = filtered[i];
+      var next = filtered[i + 1];
+      if (counter.type === 20) {
+        var increment = next && isNumberToken(next) ? next.number : 1;
+        increments.push({ counter: counter.value, increment });
+      }
+    }
+    return increments;
+  }
+};
+var counterReset = {
+  name: "counter-reset",
+  initialValue: "none",
+  prefix: true,
+  type: 1,
+  parse: function(_context, tokens) {
+    if (tokens.length === 0) {
+      return [];
+    }
+    var resets = [];
+    var filtered = tokens.filter(nonWhiteSpace);
+    for (var i = 0; i < filtered.length; i++) {
+      var counter = filtered[i];
+      var next = filtered[i + 1];
+      if (isIdentToken(counter) && counter.value !== "none") {
+        var reset = next && isNumberToken(next) ? next.number : 0;
+        resets.push({ counter: counter.value, reset });
+      }
+    }
+    return resets;
+  }
+};
+var duration = {
+  name: "duration",
+  initialValue: "0s",
+  prefix: false,
+  type: 1,
+  parse: function(context, tokens) {
+    return tokens.filter(isDimensionToken).map(function(token) {
+      return time.parse(context, token);
+    });
+  }
+};
+var quotes = {
+  name: "quotes",
+  initialValue: "none",
+  prefix: true,
+  type: 1,
+  parse: function(_context, tokens) {
+    if (tokens.length === 0) {
+      return null;
+    }
+    var first = tokens[0];
+    if (first.type === 20 && first.value === "none") {
+      return null;
+    }
+    var quotes2 = [];
+    var filtered = tokens.filter(isStringToken);
+    if (filtered.length % 2 !== 0) {
+      return null;
+    }
+    for (var i = 0; i < filtered.length; i += 2) {
+      var open_1 = filtered[i].value;
+      var close_1 = filtered[i + 1].value;
+      quotes2.push({ open: open_1, close: close_1 });
+    }
+    return quotes2;
+  }
+};
+var getQuote = function(quotes2, depth, open) {
+  if (!quotes2) {
+    return "";
+  }
+  var quote = quotes2[Math.min(depth, quotes2.length - 1)];
+  if (!quote) {
+    return "";
+  }
+  return open ? quote.open : quote.close;
+};
+var boxShadow = {
+  name: "box-shadow",
+  initialValue: "none",
+  type: 1,
+  prefix: false,
+  parse: function(context, tokens) {
+    if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
+      return [];
+    }
+    return parseFunctionArgs(tokens).map(function(values) {
+      var shadow = {
+        color: 255,
+        offsetX: ZERO_LENGTH,
+        offsetY: ZERO_LENGTH,
+        blur: ZERO_LENGTH,
+        spread: ZERO_LENGTH,
+        inset: false
+      };
+      var c = 0;
+      for (var i = 0; i < values.length; i++) {
+        var token = values[i];
+        if (isIdentWithValue(token, "inset")) {
+          shadow.inset = true;
+        } else if (isLength(token)) {
+          if (c === 0) {
+            shadow.offsetX = token;
+          } else if (c === 1) {
+            shadow.offsetY = token;
+          } else if (c === 2) {
+            shadow.blur = token;
+          } else {
+            shadow.spread = token;
+          }
+          c++;
+        } else {
+          shadow.color = color$1.parse(context, token);
+        }
+      }
+      return shadow;
+    });
+  }
+};
+var paintOrder = {
+  name: "paint-order",
+  initialValue: "normal",
+  prefix: false,
+  type: 1,
+  parse: function(_context, tokens) {
+    var DEFAULT_VALUE2 = [
+      0,
+      1,
+      2
+      /* MARKERS */
+    ];
+    var layers = [];
+    tokens.filter(isIdentToken).forEach(function(token) {
+      switch (token.value) {
+        case "stroke":
+          layers.push(
+            1
+            /* STROKE */
+          );
+          break;
+        case "fill":
+          layers.push(
+            0
+            /* FILL */
+          );
+          break;
+        case "markers":
+          layers.push(
+            2
+            /* MARKERS */
+          );
+          break;
+      }
+    });
+    DEFAULT_VALUE2.forEach(function(value) {
+      if (layers.indexOf(value) === -1) {
+        layers.push(value);
+      }
+    });
+    return layers;
+  }
+};
+var webkitTextStrokeColor = {
+  name: "-webkit-text-stroke-color",
+  initialValue: "currentcolor",
+  prefix: false,
+  type: 3,
+  format: "color"
+};
+var webkitTextStrokeWidth = {
+  name: "-webkit-text-stroke-width",
+  initialValue: "0",
+  type: 0,
+  prefix: false,
+  parse: function(_context, token) {
+    if (isDimensionToken(token)) {
+      return token.number;
+    }
+    return 0;
+  }
+};
+var CSSParsedDeclaration = (
+  /** @class */
+  function() {
+    function CSSParsedDeclaration2(context, declaration) {
+      var _a, _b;
+      this.animationDuration = parse(context, duration, declaration.animationDuration);
+      this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);
+      this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);
+      this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);
+      this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);
+      this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);
+      this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);
+      this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);
+      this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);
+      this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);
+      this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);
+      this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);
+      this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);
+      this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);
+      this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);
+      this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);
+      this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);
+      this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);
+      this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);
+      this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);
+      this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);
+      this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);
+      this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);
+      this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);
+      this.boxShadow = parse(context, boxShadow, declaration.boxShadow);
+      this.color = parse(context, color, declaration.color);
+      this.direction = parse(context, direction, declaration.direction);
+      this.display = parse(context, display, declaration.display);
+      this.float = parse(context, float, declaration.cssFloat);
+      this.fontFamily = parse(context, fontFamily, declaration.fontFamily);
+      this.fontSize = parse(context, fontSize, declaration.fontSize);
+      this.fontStyle = parse(context, fontStyle, declaration.fontStyle);
+      this.fontVariant = parse(context, fontVariant, declaration.fontVariant);
+      this.fontWeight = parse(context, fontWeight, declaration.fontWeight);
+      this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);
+      this.lineBreak = parse(context, lineBreak, declaration.lineBreak);
+      this.lineHeight = parse(context, lineHeight, declaration.lineHeight);
+      this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);
+      this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);
+      this.listStyleType = parse(context, listStyleType, declaration.listStyleType);
+      this.marginTop = parse(context, marginTop, declaration.marginTop);
+      this.marginRight = parse(context, marginRight, declaration.marginRight);
+      this.marginBottom = parse(context, marginBottom, declaration.marginBottom);
+      this.marginLeft = parse(context, marginLeft, declaration.marginLeft);
+      this.opacity = parse(context, opacity, declaration.opacity);
+      var overflowTuple = parse(context, overflow, declaration.overflow);
+      this.overflowX = overflowTuple[0];
+      this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
+      this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);
+      this.paddingTop = parse(context, paddingTop, declaration.paddingTop);
+      this.paddingRight = parse(context, paddingRight, declaration.paddingRight);
+      this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);
+      this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);
+      this.paintOrder = parse(context, paintOrder, declaration.paintOrder);
+      this.position = parse(context, position, declaration.position);
+      this.textAlign = parse(context, textAlign, declaration.textAlign);
+      this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);
+      this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);
+      this.textShadow = parse(context, textShadow, declaration.textShadow);
+      this.textTransform = parse(context, textTransform, declaration.textTransform);
+      this.transform = parse(context, transform$1, declaration.transform);
+      this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);
+      this.visibility = parse(context, visibility, declaration.visibility);
+      this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);
+      this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);
+      this.wordBreak = parse(context, wordBreak, declaration.wordBreak);
+      this.zIndex = parse(context, zIndex, declaration.zIndex);
+    }
+    CSSParsedDeclaration2.prototype.isVisible = function() {
+      return this.display > 0 && this.opacity > 0 && this.visibility === 0;
+    };
+    CSSParsedDeclaration2.prototype.isTransparent = function() {
+      return isTransparent(this.backgroundColor);
+    };
+    CSSParsedDeclaration2.prototype.isTransformed = function() {
+      return this.transform !== null;
+    };
+    CSSParsedDeclaration2.prototype.isPositioned = function() {
+      return this.position !== 0;
+    };
+    CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function() {
+      return this.isPositioned() && !this.zIndex.auto;
+    };
+    CSSParsedDeclaration2.prototype.isFloating = function() {
+      return this.float !== 0;
+    };
+    CSSParsedDeclaration2.prototype.isInlineLevel = function() {
+      return contains(
+        this.display,
+        4
+        /* INLINE */
+      ) || contains(
+        this.display,
+        33554432
+        /* INLINE_BLOCK */
+      ) || contains(
+        this.display,
+        268435456
+        /* INLINE_FLEX */
+      ) || contains(
+        this.display,
+        536870912
+        /* INLINE_GRID */
+      ) || contains(
+        this.display,
+        67108864
+        /* INLINE_LIST_ITEM */
+      ) || contains(
+        this.display,
+        134217728
+        /* INLINE_TABLE */
+      );
+    };
+    return CSSParsedDeclaration2;
+  }()
+);
+var CSSParsedPseudoDeclaration = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function CSSParsedPseudoDeclaration2(context, declaration) {
+      this.content = parse(context, content, declaration.content);
+      this.quotes = parse(context, quotes, declaration.quotes);
+    }
+    return CSSParsedPseudoDeclaration2;
+  }()
+);
+var CSSParsedCounterDeclaration = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function CSSParsedCounterDeclaration2(context, declaration) {
+      this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);
+      this.counterReset = parse(context, counterReset, declaration.counterReset);
+    }
+    return CSSParsedCounterDeclaration2;
+  }()
+);
+var parse = function(context, descriptor, style) {
+  var tokenizer = new Tokenizer();
+  var value = style !== null && typeof style !== "undefined" ? style.toString() : descriptor.initialValue;
+  tokenizer.write(value);
+  var parser = new Parser(tokenizer.read());
+  switch (descriptor.type) {
+    case 2:
+      var token = parser.parseComponentValue();
+      return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);
+    case 0:
+      return descriptor.parse(context, parser.parseComponentValue());
+    case 1:
+      return descriptor.parse(context, parser.parseComponentValues());
+    case 4:
+      return parser.parseComponentValue();
+    case 3:
+      switch (descriptor.format) {
+        case "angle":
+          return angle.parse(context, parser.parseComponentValue());
+        case "color":
+          return color$1.parse(context, parser.parseComponentValue());
+        case "image":
+          return image.parse(context, parser.parseComponentValue());
+        case "length":
+          var length_1 = parser.parseComponentValue();
+          return isLength(length_1) ? length_1 : ZERO_LENGTH;
+        case "length-percentage":
+          var value_1 = parser.parseComponentValue();
+          return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
+        case "time":
+          return time.parse(context, parser.parseComponentValue());
+      }
+      break;
+  }
+};
+var elementDebuggerAttribute = "data-html2canvas-debug";
+var getElementDebugType = function(element) {
+  var attribute = element.getAttribute(elementDebuggerAttribute);
+  switch (attribute) {
+    case "all":
+      return 1;
+    case "clone":
+      return 2;
+    case "parse":
+      return 3;
+    case "render":
+      return 4;
+    default:
+      return 0;
+  }
+};
+var isDebugging = function(element, type) {
+  var elementType = getElementDebugType(element);
+  return elementType === 1 || type === elementType;
+};
+var ElementContainer = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function ElementContainer2(context, element) {
+      this.context = context;
+      this.textNodes = [];
+      this.elements = [];
+      this.flags = 0;
+      if (isDebugging(
+        element,
+        3
+        /* PARSE */
+      )) {
+        debugger;
+      }
+      this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));
+      if (isHTMLElementNode(element)) {
+        if (this.styles.animationDuration.some(function(duration2) {
+          return duration2 > 0;
+        })) {
+          element.style.animationDuration = "0s";
+        }
+        if (this.styles.transform !== null) {
+          element.style.transform = "none";
+        }
+      }
+      this.bounds = parseBounds(this.context, element);
+      if (isDebugging(
+        element,
+        4
+        /* RENDER */
+      )) {
+        this.flags |= 16;
+      }
+    }
+    return ElementContainer2;
+  }()
+);
+var base64 = "AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=";
+var chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+var lookup$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+for (i$1 = 0; i$1 < chars$1.length; i$1++) {
+  lookup$1[chars$1.charCodeAt(i$1)] = i$1;
+}
+var i$1;
+var decode = function(base642) {
+  var bufferLength = base642.length * 0.75, len = base642.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
+  if (base642[base642.length - 1] === "=") {
+    bufferLength--;
+    if (base642[base642.length - 2] === "=") {
+      bufferLength--;
+    }
+  }
+  var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
+  var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
+  for (i = 0; i < len; i += 4) {
+    encoded1 = lookup$1[base642.charCodeAt(i)];
+    encoded2 = lookup$1[base642.charCodeAt(i + 1)];
+    encoded3 = lookup$1[base642.charCodeAt(i + 2)];
+    encoded4 = lookup$1[base642.charCodeAt(i + 3)];
+    bytes[p++] = encoded1 << 2 | encoded2 >> 4;
+    bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
+    bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
+  }
+  return buffer;
+};
+var polyUint16Array = function(buffer) {
+  var length = buffer.length;
+  var bytes = [];
+  for (var i = 0; i < length; i += 2) {
+    bytes.push(buffer[i + 1] << 8 | buffer[i]);
+  }
+  return bytes;
+};
+var polyUint32Array = function(buffer) {
+  var length = buffer.length;
+  var bytes = [];
+  for (var i = 0; i < length; i += 4) {
+    bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);
+  }
+  return bytes;
+};
+var UTRIE2_SHIFT_2 = 5;
+var UTRIE2_SHIFT_1 = 6 + 5;
+var UTRIE2_INDEX_SHIFT = 2;
+var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
+var UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2;
+var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
+var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
+var UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2;
+var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
+var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
+var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6;
+var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
+var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1;
+var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
+var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
+var slice16 = function(view, start, end) {
+  if (view.slice) {
+    return view.slice(start, end);
+  }
+  return new Uint16Array(Array.prototype.slice.call(view, start, end));
+};
+var slice32 = function(view, start, end) {
+  if (view.slice) {
+    return view.slice(start, end);
+  }
+  return new Uint32Array(Array.prototype.slice.call(view, start, end));
+};
+var createTrieFromBase64 = function(base642, _byteLength) {
+  var buffer = decode(base642);
+  var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
+  var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
+  var headerLength = 24;
+  var index = slice16(view16, headerLength / 2, view32[4] / 2);
+  var data = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
+  return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
+};
+var Trie = (
+  /** @class */
+  function() {
+    function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data) {
+      this.initialValue = initialValue;
+      this.errorValue = errorValue;
+      this.highStart = highStart;
+      this.highValueIndex = highValueIndex;
+      this.index = index;
+      this.data = data;
+    }
+    Trie2.prototype.get = function(codePoint) {
+      var ix;
+      if (codePoint >= 0) {
+        if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
+          ix = this.index[codePoint >> UTRIE2_SHIFT_2];
+          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
+          return this.data[ix];
+        }
+        if (codePoint <= 65535) {
+          ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> UTRIE2_SHIFT_2)];
+          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
+          return this.data[ix];
+        }
+        if (codePoint < this.highStart) {
+          ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
+          ix = this.index[ix];
+          ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;
+          ix = this.index[ix];
+          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
+          return this.data[ix];
+        }
+        if (codePoint <= 1114111) {
+          return this.data[this.highValueIndex];
+        }
+      }
+      return this.errorValue;
+    };
+    return Trie2;
+  }()
+);
+var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+for (i = 0; i < chars.length; i++) {
+  lookup[chars.charCodeAt(i)] = i;
+}
+var i;
+var Prepend = 1;
+var CR = 2;
+var LF = 3;
+var Control = 4;
+var Extend = 5;
+var SpacingMark = 7;
+var L = 8;
+var V = 9;
+var T = 10;
+var LV = 11;
+var LVT = 12;
+var ZWJ = 13;
+var Extended_Pictographic = 14;
+var RI = 15;
+var toCodePoints = function(str) {
+  var codePoints = [];
+  var i = 0;
+  var length = str.length;
+  while (i < length) {
+    var value = str.charCodeAt(i++);
+    if (value >= 55296 && value <= 56319 && i < length) {
+      var extra = str.charCodeAt(i++);
+      if ((extra & 64512) === 56320) {
+        codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
+      } else {
+        codePoints.push(value);
+        i--;
+      }
+    } else {
+      codePoints.push(value);
+    }
+  }
+  return codePoints;
+};
+var fromCodePoint = function() {
+  var codePoints = [];
+  for (var _i = 0; _i < arguments.length; _i++) {
+    codePoints[_i] = arguments[_i];
+  }
+  if (String.fromCodePoint) {
+    return String.fromCodePoint.apply(String, codePoints);
+  }
+  var length = codePoints.length;
+  if (!length) {
+    return "";
+  }
+  var codeUnits = [];
+  var index = -1;
+  var result = "";
+  while (++index < length) {
+    var codePoint = codePoints[index];
+    if (codePoint <= 65535) {
+      codeUnits.push(codePoint);
+    } else {
+      codePoint -= 65536;
+      codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
+    }
+    if (index + 1 === length || codeUnits.length > 16384) {
+      result += String.fromCharCode.apply(String, codeUnits);
+      codeUnits.length = 0;
+    }
+  }
+  return result;
+};
+var UnicodeTrie = createTrieFromBase64(base64);
+var BREAK_NOT_ALLOWED = "×";
+var BREAK_ALLOWED = "÷";
+var codePointToClass = function(codePoint) {
+  return UnicodeTrie.get(codePoint);
+};
+var _graphemeBreakAtIndex = function(_codePoints, classTypes, index) {
+  var prevIndex = index - 2;
+  var prev = classTypes[prevIndex];
+  var current = classTypes[index - 1];
+  var next = classTypes[index];
+  if (current === CR && next === LF) {
+    return BREAK_NOT_ALLOWED;
+  }
+  if (current === CR || current === LF || current === Control) {
+    return BREAK_ALLOWED;
+  }
+  if (next === CR || next === LF || next === Control) {
+    return BREAK_ALLOWED;
+  }
+  if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {
+    return BREAK_NOT_ALLOWED;
+  }
+  if ((current === LV || current === V) && (next === V || next === T)) {
+    return BREAK_NOT_ALLOWED;
+  }
+  if ((current === LVT || current === T) && next === T) {
+    return BREAK_NOT_ALLOWED;
+  }
+  if (next === ZWJ || next === Extend) {
+    return BREAK_NOT_ALLOWED;
+  }
+  if (next === SpacingMark) {
+    return BREAK_NOT_ALLOWED;
+  }
+  if (current === Prepend) {
+    return BREAK_NOT_ALLOWED;
+  }
+  if (current === ZWJ && next === Extended_Pictographic) {
+    while (prev === Extend) {
+      prev = classTypes[--prevIndex];
+    }
+    if (prev === Extended_Pictographic) {
+      return BREAK_NOT_ALLOWED;
+    }
+  }
+  if (current === RI && next === RI) {
+    var countRI = 0;
+    while (prev === RI) {
+      countRI++;
+      prev = classTypes[--prevIndex];
+    }
+    if (countRI % 2 === 0) {
+      return BREAK_NOT_ALLOWED;
+    }
+  }
+  return BREAK_ALLOWED;
+};
+var GraphemeBreaker = function(str) {
+  var codePoints = toCodePoints(str);
+  var length = codePoints.length;
+  var index = 0;
+  var lastEnd = 0;
+  var classTypes = codePoints.map(codePointToClass);
+  return {
+    next: function() {
+      if (index >= length) {
+        return { done: true, value: null };
+      }
+      var graphemeBreak = BREAK_NOT_ALLOWED;
+      while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) {
+      }
+      if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {
+        var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));
+        lastEnd = index;
+        return { value, done: false };
+      }
+      return { done: true, value: null };
+    }
+  };
+};
+var splitGraphemes = function(str) {
+  var breaker = GraphemeBreaker(str);
+  var graphemes = [];
+  var bk;
+  while (!(bk = breaker.next()).done) {
+    if (bk.value) {
+      graphemes.push(bk.value.slice());
+    }
+  }
+  return graphemes;
+};
+var testRangeBounds = function(document2) {
+  var TEST_HEIGHT = 123;
+  if (document2.createRange) {
+    var range = document2.createRange();
+    if (range.getBoundingClientRect) {
+      var testElement = document2.createElement("boundtest");
+      testElement.style.height = TEST_HEIGHT + "px";
+      testElement.style.display = "block";
+      document2.body.appendChild(testElement);
+      range.selectNode(testElement);
+      var rangeBounds = range.getBoundingClientRect();
+      var rangeHeight = Math.round(rangeBounds.height);
+      document2.body.removeChild(testElement);
+      if (rangeHeight === TEST_HEIGHT) {
+        return true;
+      }
+    }
+  }
+  return false;
+};
+var testIOSLineBreak = function(document2) {
+  var testElement = document2.createElement("boundtest");
+  testElement.style.width = "50px";
+  testElement.style.display = "block";
+  testElement.style.fontSize = "12px";
+  testElement.style.letterSpacing = "0px";
+  testElement.style.wordSpacing = "0px";
+  document2.body.appendChild(testElement);
+  var range = document2.createRange();
+  testElement.innerHTML = typeof "".repeat === "function" ? "&#128104;".repeat(10) : "";
+  var node = testElement.firstChild;
+  var textList = toCodePoints$1(node.data).map(function(i) {
+    return fromCodePoint$1(i);
+  });
+  var offset = 0;
+  var prev = {};
+  var supports = textList.every(function(text, i) {
+    range.setStart(node, offset);
+    range.setEnd(node, offset + text.length);
+    var rect = range.getBoundingClientRect();
+    offset += text.length;
+    var boundAhead = rect.x > prev.x || rect.y > prev.y;
+    prev = rect;
+    if (i === 0) {
+      return true;
+    }
+    return boundAhead;
+  });
+  document2.body.removeChild(testElement);
+  return supports;
+};
+var testCORS = function() {
+  return typeof new Image().crossOrigin !== "undefined";
+};
+var testResponseType = function() {
+  return typeof new XMLHttpRequest().responseType === "string";
+};
+var testSVG = function(document2) {
+  var img = new Image();
+  var canvas = document2.createElement("canvas");
+  var ctx = canvas.getContext("2d");
+  if (!ctx) {
+    return false;
+  }
+  img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
+  try {
+    ctx.drawImage(img, 0, 0);
+    canvas.toDataURL();
+  } catch (e2) {
+    return false;
+  }
+  return true;
+};
+var isGreenPixel = function(data) {
+  return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
+};
+var testForeignObject = function(document2) {
+  var canvas = document2.createElement("canvas");
+  var size = 100;
+  canvas.width = size;
+  canvas.height = size;
+  var ctx = canvas.getContext("2d");
+  if (!ctx) {
+    return Promise.reject(false);
+  }
+  ctx.fillStyle = "rgb(0, 255, 0)";
+  ctx.fillRect(0, 0, size, size);
+  var img = new Image();
+  var greenImageSrc = canvas.toDataURL();
+  img.src = greenImageSrc;
+  var svg = createForeignObjectSVG(size, size, 0, 0, img);
+  ctx.fillStyle = "red";
+  ctx.fillRect(0, 0, size, size);
+  return loadSerializedSVG$1(svg).then(function(img2) {
+    ctx.drawImage(img2, 0, 0);
+    var data = ctx.getImageData(0, 0, size, size).data;
+    ctx.fillStyle = "red";
+    ctx.fillRect(0, 0, size, size);
+    var node = document2.createElement("div");
+    node.style.backgroundImage = "url(" + greenImageSrc + ")";
+    node.style.height = size + "px";
+    return isGreenPixel(data) ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node)) : Promise.reject(false);
+  }).then(function(img2) {
+    ctx.drawImage(img2, 0, 0);
+    return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
+  }).catch(function() {
+    return false;
+  });
+};
+var createForeignObjectSVG = function(width, height, x, y, node) {
+  var xmlns = "http://www.w3.org/2000/svg";
+  var svg = document.createElementNS(xmlns, "svg");
+  var foreignObject = document.createElementNS(xmlns, "foreignObject");
+  svg.setAttributeNS(null, "width", width.toString());
+  svg.setAttributeNS(null, "height", height.toString());
+  foreignObject.setAttributeNS(null, "width", "100%");
+  foreignObject.setAttributeNS(null, "height", "100%");
+  foreignObject.setAttributeNS(null, "x", x.toString());
+  foreignObject.setAttributeNS(null, "y", y.toString());
+  foreignObject.setAttributeNS(null, "externalResourcesRequired", "true");
+  svg.appendChild(foreignObject);
+  foreignObject.appendChild(node);
+  return svg;
+};
+var loadSerializedSVG$1 = function(svg) {
+  return new Promise(function(resolve, reject) {
+    var img = new Image();
+    img.onload = function() {
+      return resolve(img);
+    };
+    img.onerror = reject;
+    img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
+  });
+};
+var FEATURES = {
+  get SUPPORT_RANGE_BOUNDS() {
+    var value = testRangeBounds(document);
+    Object.defineProperty(FEATURES, "SUPPORT_RANGE_BOUNDS", { value });
+    return value;
+  },
+  get SUPPORT_WORD_BREAKING() {
+    var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);
+    Object.defineProperty(FEATURES, "SUPPORT_WORD_BREAKING", { value });
+    return value;
+  },
+  get SUPPORT_SVG_DRAWING() {
+    var value = testSVG(document);
+    Object.defineProperty(FEATURES, "SUPPORT_SVG_DRAWING", { value });
+    return value;
+  },
+  get SUPPORT_FOREIGNOBJECT_DRAWING() {
+    var value = typeof Array.from === "function" && typeof window.fetch === "function" ? testForeignObject(document) : Promise.resolve(false);
+    Object.defineProperty(FEATURES, "SUPPORT_FOREIGNOBJECT_DRAWING", { value });
+    return value;
+  },
+  get SUPPORT_CORS_IMAGES() {
+    var value = testCORS();
+    Object.defineProperty(FEATURES, "SUPPORT_CORS_IMAGES", { value });
+    return value;
+  },
+  get SUPPORT_RESPONSE_TYPE() {
+    var value = testResponseType();
+    Object.defineProperty(FEATURES, "SUPPORT_RESPONSE_TYPE", { value });
+    return value;
+  },
+  get SUPPORT_CORS_XHR() {
+    var value = "withCredentials" in new XMLHttpRequest();
+    Object.defineProperty(FEATURES, "SUPPORT_CORS_XHR", { value });
+    return value;
+  },
+  get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
+    var value = !!(typeof Intl !== "undefined" && Intl.Segmenter);
+    Object.defineProperty(FEATURES, "SUPPORT_NATIVE_TEXT_SEGMENTATION", { value });
+    return value;
+  }
+};
+var TextBounds = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function TextBounds2(text, bounds) {
+      this.text = text;
+      this.bounds = bounds;
+    }
+    return TextBounds2;
+  }()
+);
+var parseTextBounds = function(context, value, styles, node) {
+  var textList = breakText(value, styles);
+  var textBounds = [];
+  var offset = 0;
+  textList.forEach(function(text) {
+    if (styles.textDecorationLine.length || text.trim().length > 0) {
+      if (FEATURES.SUPPORT_RANGE_BOUNDS) {
+        var clientRects = createRange(node, offset, text.length).getClientRects();
+        if (clientRects.length > 1) {
+          var subSegments = segmentGraphemes(text);
+          var subOffset_1 = 0;
+          subSegments.forEach(function(subSegment) {
+            textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));
+            subOffset_1 += subSegment.length;
+          });
+        } else {
+          textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));
+        }
+      } else {
+        var replacementNode = node.splitText(text.length);
+        textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));
+        node = replacementNode;
+      }
+    } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
+      node = node.splitText(text.length);
+    }
+    offset += text.length;
+  });
+  return textBounds;
+};
+var getWrapperBounds = function(context, node) {
+  var ownerDocument = node.ownerDocument;
+  if (ownerDocument) {
+    var wrapper = ownerDocument.createElement("html2canvaswrapper");
+    wrapper.appendChild(node.cloneNode(true));
+    var parentNode = node.parentNode;
+    if (parentNode) {
+      parentNode.replaceChild(wrapper, node);
+      var bounds = parseBounds(context, wrapper);
+      if (wrapper.firstChild) {
+        parentNode.replaceChild(wrapper.firstChild, wrapper);
+      }
+      return bounds;
+    }
+  }
+  return Bounds.EMPTY;
+};
+var createRange = function(node, offset, length) {
+  var ownerDocument = node.ownerDocument;
+  if (!ownerDocument) {
+    throw new Error("Node has no owner document");
+  }
+  var range = ownerDocument.createRange();
+  range.setStart(node, offset);
+  range.setEnd(node, offset + length);
+  return range;
+};
+var segmentGraphemes = function(value) {
+  if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
+    var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
+    return Array.from(segmenter.segment(value)).map(function(segment) {
+      return segment.segment;
+    });
+  }
+  return splitGraphemes(value);
+};
+var segmentWords = function(value, styles) {
+  if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
+    var segmenter = new Intl.Segmenter(void 0, {
+      granularity: "word"
+    });
+    return Array.from(segmenter.segment(value)).map(function(segment) {
+      return segment.segment;
+    });
+  }
+  return breakWords(value, styles);
+};
+var breakText = function(value, styles) {
+  return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);
+};
+var wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241];
+var breakWords = function(str, styles) {
+  var breaker = LineBreaker(str, {
+    lineBreak: styles.lineBreak,
+    wordBreak: styles.overflowWrap === "break-word" ? "break-word" : styles.wordBreak
+  });
+  var words = [];
+  var bk;
+  var _loop_1 = function() {
+    if (bk.value) {
+      var value = bk.value.slice();
+      var codePoints = toCodePoints$1(value);
+      var word_1 = "";
+      codePoints.forEach(function(codePoint) {
+        if (wordSeparators.indexOf(codePoint) === -1) {
+          word_1 += fromCodePoint$1(codePoint);
+        } else {
+          if (word_1.length) {
+            words.push(word_1);
+          }
+          words.push(fromCodePoint$1(codePoint));
+          word_1 = "";
+        }
+      });
+      if (word_1.length) {
+        words.push(word_1);
+      }
+    }
+  };
+  while (!(bk = breaker.next()).done) {
+    _loop_1();
+  }
+  return words;
+};
+var TextContainer = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function TextContainer2(context, node, styles) {
+      this.text = transform(node.data, styles.textTransform);
+      this.textBounds = parseTextBounds(context, this.text, styles, node);
+    }
+    return TextContainer2;
+  }()
+);
+var transform = function(text, transform2) {
+  switch (transform2) {
+    case 1:
+      return text.toLowerCase();
+    case 3:
+      return text.replace(CAPITALIZE, capitalize);
+    case 2:
+      return text.toUpperCase();
+    default:
+      return text;
+  }
+};
+var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
+var capitalize = function(m, p1, p2) {
+  if (m.length > 0) {
+    return p1 + p2.toUpperCase();
+  }
+  return m;
+};
+var ImageElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(ImageElementContainer2, _super);
+    function ImageElementContainer2(context, img) {
+      var _this = _super.call(this, context, img) || this;
+      _this.src = img.currentSrc || img.src;
+      _this.intrinsicWidth = img.naturalWidth;
+      _this.intrinsicHeight = img.naturalHeight;
+      _this.context.cache.addImage(_this.src);
+      return _this;
+    }
+    return ImageElementContainer2;
+  }(ElementContainer)
+);
+var CanvasElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(CanvasElementContainer2, _super);
+    function CanvasElementContainer2(context, canvas) {
+      var _this = _super.call(this, context, canvas) || this;
+      _this.canvas = canvas;
+      _this.intrinsicWidth = canvas.width;
+      _this.intrinsicHeight = canvas.height;
+      return _this;
+    }
+    return CanvasElementContainer2;
+  }(ElementContainer)
+);
+var SVGElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(SVGElementContainer2, _super);
+    function SVGElementContainer2(context, img) {
+      var _this = _super.call(this, context, img) || this;
+      var s = new XMLSerializer();
+      var bounds = parseBounds(context, img);
+      img.setAttribute("width", bounds.width + "px");
+      img.setAttribute("height", bounds.height + "px");
+      _this.svg = "data:image/svg+xml," + encodeURIComponent(s.serializeToString(img));
+      _this.intrinsicWidth = img.width.baseVal.value;
+      _this.intrinsicHeight = img.height.baseVal.value;
+      _this.context.cache.addImage(_this.svg);
+      return _this;
+    }
+    return SVGElementContainer2;
+  }(ElementContainer)
+);
+var LIElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(LIElementContainer2, _super);
+    function LIElementContainer2(context, element) {
+      var _this = _super.call(this, context, element) || this;
+      _this.value = element.value;
+      return _this;
+    }
+    return LIElementContainer2;
+  }(ElementContainer)
+);
+var OLElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(OLElementContainer2, _super);
+    function OLElementContainer2(context, element) {
+      var _this = _super.call(this, context, element) || this;
+      _this.start = element.start;
+      _this.reversed = typeof element.reversed === "boolean" && element.reversed === true;
+      return _this;
+    }
+    return OLElementContainer2;
+  }(ElementContainer)
+);
+var CHECKBOX_BORDER_RADIUS = [
+  {
+    type: 15,
+    flags: 0,
+    unit: "px",
+    number: 3
+  }
+];
+var RADIO_BORDER_RADIUS = [
+  {
+    type: 16,
+    flags: 0,
+    number: 50
+  }
+];
+var reformatInputBounds = function(bounds) {
+  if (bounds.width > bounds.height) {
+    return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);
+  } else if (bounds.width < bounds.height) {
+    return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);
+  }
+  return bounds;
+};
+var getInputValue = function(node) {
+  var value = node.type === PASSWORD ? new Array(node.value.length + 1).join("•") : node.value;
+  return value.length === 0 ? node.placeholder || "" : value;
+};
+var CHECKBOX = "checkbox";
+var RADIO = "radio";
+var PASSWORD = "password";
+var INPUT_COLOR = 707406591;
+var InputElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(InputElementContainer2, _super);
+    function InputElementContainer2(context, input) {
+      var _this = _super.call(this, context, input) || this;
+      _this.type = input.type.toLowerCase();
+      _this.checked = input.checked;
+      _this.value = getInputValue(input);
+      if (_this.type === CHECKBOX || _this.type === RADIO) {
+        _this.styles.backgroundColor = 3739148031;
+        _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 2779096575;
+        _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;
+        _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1;
+        _this.styles.backgroundClip = [
+          0
+          /* BORDER_BOX */
+        ];
+        _this.styles.backgroundOrigin = [
+          0
+          /* BORDER_BOX */
+        ];
+        _this.bounds = reformatInputBounds(_this.bounds);
+      }
+      switch (_this.type) {
+        case CHECKBOX:
+          _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;
+          break;
+        case RADIO:
+          _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;
+          break;
+      }
+      return _this;
+    }
+    return InputElementContainer2;
+  }(ElementContainer)
+);
+var SelectElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(SelectElementContainer2, _super);
+    function SelectElementContainer2(context, element) {
+      var _this = _super.call(this, context, element) || this;
+      var option = element.options[element.selectedIndex || 0];
+      _this.value = option ? option.text || "" : "";
+      return _this;
+    }
+    return SelectElementContainer2;
+  }(ElementContainer)
+);
+var TextareaElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(TextareaElementContainer2, _super);
+    function TextareaElementContainer2(context, element) {
+      var _this = _super.call(this, context, element) || this;
+      _this.value = element.value;
+      return _this;
+    }
+    return TextareaElementContainer2;
+  }(ElementContainer)
+);
+var IFrameElementContainer = (
+  /** @class */
+  function(_super) {
+    __extends(IFrameElementContainer2, _super);
+    function IFrameElementContainer2(context, iframe) {
+      var _this = _super.call(this, context, iframe) || this;
+      _this.src = iframe.src;
+      _this.width = parseInt(iframe.width, 10) || 0;
+      _this.height = parseInt(iframe.height, 10) || 0;
+      _this.backgroundColor = _this.styles.backgroundColor;
+      try {
+        if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {
+          _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);
+          var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;
+          var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;
+          _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;
+        }
+      } catch (e2) {
+      }
+      return _this;
+    }
+    return IFrameElementContainer2;
+  }(ElementContainer)
+);
+var LIST_OWNERS = ["OL", "UL", "MENU"];
+var parseNodeTree = function(context, node, parent, root) {
+  for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
+    nextNode = childNode.nextSibling;
+    if (isTextNode(childNode) && childNode.data.trim().length > 0) {
+      parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
+    } else if (isElementNode(childNode)) {
+      if (isSlotElement(childNode) && childNode.assignedNodes) {
+        childNode.assignedNodes().forEach(function(childNode2) {
+          return parseNodeTree(context, childNode2, parent, root);
+        });
+      } else {
+        var container = createContainer(context, childNode);
+        if (container.styles.isVisible()) {
+          if (createsRealStackingContext(childNode, container, root)) {
+            container.flags |= 4;
+          } else if (createsStackingContext(container.styles)) {
+            container.flags |= 2;
+          }
+          if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
+            container.flags |= 8;
+          }
+          parent.elements.push(container);
+          childNode.slot;
+          if (childNode.shadowRoot) {
+            parseNodeTree(context, childNode.shadowRoot, container, root);
+          } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {
+            parseNodeTree(context, childNode, container, root);
+          }
+        }
+      }
+    }
+  }
+};
+var createContainer = function(context, element) {
+  if (isImageElement(element)) {
+    return new ImageElementContainer(context, element);
+  }
+  if (isCanvasElement(element)) {
+    return new CanvasElementContainer(context, element);
+  }
+  if (isSVGElement(element)) {
+    return new SVGElementContainer(context, element);
+  }
+  if (isLIElement(element)) {
+    return new LIElementContainer(context, element);
+  }
+  if (isOLElement(element)) {
+    return new OLElementContainer(context, element);
+  }
+  if (isInputElement(element)) {
+    return new InputElementContainer(context, element);
+  }
+  if (isSelectElement(element)) {
+    return new SelectElementContainer(context, element);
+  }
+  if (isTextareaElement(element)) {
+    return new TextareaElementContainer(context, element);
+  }
+  if (isIFrameElement(element)) {
+    return new IFrameElementContainer(context, element);
+  }
+  return new ElementContainer(context, element);
+};
+var parseTree = function(context, element) {
+  var container = createContainer(context, element);
+  container.flags |= 4;
+  parseNodeTree(context, element, container, container);
+  return container;
+};
+var createsRealStackingContext = function(node, container, root) {
+  return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent();
+};
+var createsStackingContext = function(styles) {
+  return styles.isPositioned() || styles.isFloating();
+};
+var isTextNode = function(node) {
+  return node.nodeType === Node.TEXT_NODE;
+};
+var isElementNode = function(node) {
+  return node.nodeType === Node.ELEMENT_NODE;
+};
+var isHTMLElementNode = function(node) {
+  return isElementNode(node) && typeof node.style !== "undefined" && !isSVGElementNode(node);
+};
+var isSVGElementNode = function(element) {
+  return typeof element.className === "object";
+};
+var isLIElement = function(node) {
+  return node.tagName === "LI";
+};
+var isOLElement = function(node) {
+  return node.tagName === "OL";
+};
+var isInputElement = function(node) {
+  return node.tagName === "INPUT";
+};
+var isHTMLElement = function(node) {
+  return node.tagName === "HTML";
+};
+var isSVGElement = function(node) {
+  return node.tagName === "svg";
+};
+var isBodyElement = function(node) {
+  return node.tagName === "BODY";
+};
+var isCanvasElement = function(node) {
+  return node.tagName === "CANVAS";
+};
+var isVideoElement = function(node) {
+  return node.tagName === "VIDEO";
+};
+var isImageElement = function(node) {
+  return node.tagName === "IMG";
+};
+var isIFrameElement = function(node) {
+  return node.tagName === "IFRAME";
+};
+var isStyleElement = function(node) {
+  return node.tagName === "STYLE";
+};
+var isScriptElement = function(node) {
+  return node.tagName === "SCRIPT";
+};
+var isTextareaElement = function(node) {
+  return node.tagName === "TEXTAREA";
+};
+var isSelectElement = function(node) {
+  return node.tagName === "SELECT";
+};
+var isSlotElement = function(node) {
+  return node.tagName === "SLOT";
+};
+var isCustomElement = function(node) {
+  return node.tagName.indexOf("-") > 0;
+};
+var CounterState = (
+  /** @class */
+  function() {
+    function CounterState2() {
+      this.counters = {};
+    }
+    CounterState2.prototype.getCounterValue = function(name) {
+      var counter = this.counters[name];
+      if (counter && counter.length) {
+        return counter[counter.length - 1];
+      }
+      return 1;
+    };
+    CounterState2.prototype.getCounterValues = function(name) {
+      var counter = this.counters[name];
+      return counter ? counter : [];
+    };
+    CounterState2.prototype.pop = function(counters) {
+      var _this = this;
+      counters.forEach(function(counter) {
+        return _this.counters[counter].pop();
+      });
+    };
+    CounterState2.prototype.parse = function(style) {
+      var _this = this;
+      var counterIncrement2 = style.counterIncrement;
+      var counterReset2 = style.counterReset;
+      var canReset = true;
+      if (counterIncrement2 !== null) {
+        counterIncrement2.forEach(function(entry) {
+          var counter = _this.counters[entry.counter];
+          if (counter && entry.increment !== 0) {
+            canReset = false;
+            if (!counter.length) {
+              counter.push(1);
+            }
+            counter[Math.max(0, counter.length - 1)] += entry.increment;
+          }
+        });
+      }
+      var counterNames = [];
+      if (canReset) {
+        counterReset2.forEach(function(entry) {
+          var counter = _this.counters[entry.counter];
+          counterNames.push(entry.counter);
+          if (!counter) {
+            counter = _this.counters[entry.counter] = [];
+          }
+          counter.push(entry.reset);
+        });
+      }
+      return counterNames;
+    };
+    return CounterState2;
+  }()
+);
+var ROMAN_UPPER = {
+  integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
+  values: ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
+};
+var ARMENIAN = {
+  integers: [
+    9e3,
+    8e3,
+    7e3,
+    6e3,
+    5e3,
+    4e3,
+    3e3,
+    2e3,
+    1e3,
+    900,
+    800,
+    700,
+    600,
+    500,
+    400,
+    300,
+    200,
+    100,
+    90,
+    80,
+    70,
+    60,
+    50,
+    40,
+    30,
+    20,
+    10,
+    9,
+    8,
+    7,
+    6,
+    5,
+    4,
+    3,
+    2,
+    1
+  ],
+  values: [
+    "Ք",
+    "Փ",
+    "Ւ",
+    "Ց",
+    "Ր",
+    "Տ",
+    "Վ",
+    "Ս",
+    "Ռ",
+    "Ջ",
+    "Պ",
+    "Չ",
+    "Ո",
+    "Շ",
+    "Ն",
+    "Յ",
+    "Մ",
+    "Ճ",
+    "Ղ",
+    "Ձ",
+    "Հ",
+    "Կ",
+    "Ծ",
+    "Խ",
+    "Լ",
+    "Ի",
+    "Ժ",
+    "Թ",
+    "Ը",
+    "Է",
+    "Զ",
+    "Ե",
+    "Դ",
+    "Գ",
+    "Բ",
+    "Ա"
+  ]
+};
+var HEBREW = {
+  integers: [
+    1e4,
+    9e3,
+    8e3,
+    7e3,
+    6e3,
+    5e3,
+    4e3,
+    3e3,
+    2e3,
+    1e3,
+    400,
+    300,
+    200,
+    100,
+    90,
+    80,
+    70,
+    60,
+    50,
+    40,
+    30,
+    20,
+    19,
+    18,
+    17,
+    16,
+    15,
+    10,
+    9,
+    8,
+    7,
+    6,
+    5,
+    4,
+    3,
+    2,
+    1
+  ],
+  values: [
+    "י׳",
+    "ט׳",
+    "ח׳",
+    "ז׳",
+    "ו׳",
+    "ה׳",
+    "ד׳",
+    "ג׳",
+    "ב׳",
+    "א׳",
+    "ת",
+    "ש",
+    "ר",
+    "ק",
+    "צ",
+    "פ",
+    "ע",
+    "ס",
+    "נ",
+    "מ",
+    "ל",
+    "כ",
+    "יט",
+    "יח",
+    "יז",
+    "טז",
+    "טו",
+    "י",
+    "ט",
+    "ח",
+    "ז",
+    "ו",
+    "ה",
+    "ד",
+    "ג",
+    "ב",
+    "א"
+  ]
+};
+var GEORGIAN = {
+  integers: [
+    1e4,
+    9e3,
+    8e3,
+    7e3,
+    6e3,
+    5e3,
+    4e3,
+    3e3,
+    2e3,
+    1e3,
+    900,
+    800,
+    700,
+    600,
+    500,
+    400,
+    300,
+    200,
+    100,
+    90,
+    80,
+    70,
+    60,
+    50,
+    40,
+    30,
+    20,
+    10,
+    9,
+    8,
+    7,
+    6,
+    5,
+    4,
+    3,
+    2,
+    1
+  ],
+  values: [
+    "ჵ",
+    "ჰ",
+    "ჯ",
+    "ჴ",
+    "ხ",
+    "ჭ",
+    "წ",
+    "ძ",
+    "ც",
+    "ჩ",
+    "შ",
+    "ყ",
+    "ღ",
+    "ქ",
+    "ფ",
+    "ჳ",
+    "ტ",
+    "ს",
+    "რ",
+    "ჟ",
+    "პ",
+    "ო",
+    "ჲ",
+    "ნ",
+    "მ",
+    "ლ",
+    "კ",
+    "ი",
+    "თ",
+    "ჱ",
+    "ზ",
+    "ვ",
+    "ე",
+    "დ",
+    "გ",
+    "ბ",
+    "ა"
+  ]
+};
+var createAdditiveCounter = function(value, min, max, symbols, fallback, suffix) {
+  if (value < min || value > max) {
+    return createCounterText(value, fallback, suffix.length > 0);
+  }
+  return symbols.integers.reduce(function(string, integer, index) {
+    while (value >= integer) {
+      value -= integer;
+      string += symbols.values[index];
+    }
+    return string;
+  }, "") + suffix;
+};
+var createCounterStyleWithSymbolResolver = function(value, codePointRangeLength, isNumeric, resolver) {
+  var string = "";
+  do {
+    if (!isNumeric) {
+      value--;
+    }
+    string = resolver(value) + string;
+    value /= codePointRangeLength;
+  } while (value * codePointRangeLength >= codePointRangeLength);
+  return string;
+};
+var createCounterStyleFromRange = function(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {
+  var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
+  return (value < 0 ? "-" : "") + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function(codePoint) {
+    return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
+  }) + suffix);
+};
+var createCounterStyleFromSymbols = function(value, symbols, suffix) {
+  if (suffix === void 0) {
+    suffix = ". ";
+  }
+  var codePointRangeLength = symbols.length;
+  return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function(codePoint) {
+    return symbols[Math.floor(codePoint % codePointRangeLength)];
+  }) + suffix;
+};
+var CJK_ZEROS = 1 << 0;
+var CJK_TEN_COEFFICIENTS = 1 << 1;
+var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
+var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
+var createCJKCounter = function(value, numbers, multipliers, negativeSign, suffix, flags) {
+  if (value < -9999 || value > 9999) {
+    return createCounterText(value, 4, suffix.length > 0);
+  }
+  var tmp = Math.abs(value);
+  var string = suffix;
+  if (tmp === 0) {
+    return numbers[0] + string;
+  }
+  for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
+    var coefficient = tmp % 10;
+    if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== "") {
+      string = numbers[coefficient] + string;
+    } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS)) {
+      string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : "") + string;
+    } else if (coefficient === 1 && digit > 0) {
+      string = multipliers[digit - 1] + string;
+    }
+    tmp = Math.floor(tmp / 10);
+  }
+  return (value < 0 ? negativeSign : "") + string;
+};
+var CHINESE_INFORMAL_MULTIPLIERS = "十百千萬";
+var CHINESE_FORMAL_MULTIPLIERS = "拾佰仟萬";
+var JAPANESE_NEGATIVE = "マイナス";
+var KOREAN_NEGATIVE = "마이너스";
+var createCounterText = function(value, type, appendSuffix) {
+  var defaultSuffix = appendSuffix ? ". " : "";
+  var cjkSuffix = appendSuffix ? "、" : "";
+  var koreanSuffix = appendSuffix ? ", " : "";
+  var spaceSuffix = appendSuffix ? " " : "";
+  switch (type) {
+    case 0:
+      return "•" + spaceSuffix;
+    case 1:
+      return "◦" + spaceSuffix;
+    case 2:
+      return "◾" + spaceSuffix;
+    case 5:
+      var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
+      return string.length < 4 ? "0" + string : string;
+    case 4:
+      return createCounterStyleFromSymbols(value, "〇一二三四五六七八九", cjkSuffix);
+    case 6:
+      return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix).toLowerCase();
+    case 7:
+      return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix);
+    case 8:
+      return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
+    case 9:
+      return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
+    case 10:
+      return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
+    case 11:
+      return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
+    case 12:
+    case 49:
+      return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix);
+    case 35:
+      return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix).toLowerCase();
+    case 13:
+      return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
+    case 14:
+    case 30:
+      return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
+    case 15:
+      return createCounterStyleFromSymbols(value, "子丑寅卯辰巳午未申酉戌亥", cjkSuffix);
+    case 16:
+      return createCounterStyleFromSymbols(value, "甲乙丙丁戊己庚辛壬癸", cjkSuffix);
+    case 17:
+    case 48:
+      return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+    case 47:
+      return createCJKCounter(value, "零壹貳參肆伍陸柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+    case 42:
+      return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+    case 41:
+      return createCJKCounter(value, "零壹贰叁肆伍陆柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+    case 26:
+      return createCJKCounter(value, "〇一二三四五六七八九", "十百千万", JAPANESE_NEGATIVE, cjkSuffix, 0);
+    case 25:
+      return createCJKCounter(value, "零壱弐参四伍六七八九", "拾百千万", JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
+    case 31:
+      return createCJKCounter(value, "영일이삼사오육칠팔구", "십백천만", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
+    case 33:
+      return createCJKCounter(value, "零一二三四五六七八九", "十百千萬", KOREAN_NEGATIVE, koreanSuffix, 0);
+    case 32:
+      return createCJKCounter(value, "零壹貳參四五六七八九", "拾百千", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
+    case 18:
+      return createCounterStyleFromRange(value, 2406, 2415, true, defaultSuffix);
+    case 20:
+      return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3, defaultSuffix);
+    case 21:
+      return createCounterStyleFromRange(value, 2790, 2799, true, defaultSuffix);
+    case 22:
+      return createCounterStyleFromRange(value, 2662, 2671, true, defaultSuffix);
+    case 22:
+      return createAdditiveCounter(value, 1, 10999, HEBREW, 3, defaultSuffix);
+    case 23:
+      return createCounterStyleFromSymbols(value, "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");
+    case 24:
+      return createCounterStyleFromSymbols(value, "いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");
+    case 27:
+      return createCounterStyleFromRange(value, 3302, 3311, true, defaultSuffix);
+    case 28:
+      return createCounterStyleFromSymbols(value, "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン", cjkSuffix);
+    case 29:
+      return createCounterStyleFromSymbols(value, "イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス", cjkSuffix);
+    case 34:
+      return createCounterStyleFromRange(value, 3792, 3801, true, defaultSuffix);
+    case 37:
+      return createCounterStyleFromRange(value, 6160, 6169, true, defaultSuffix);
+    case 38:
+      return createCounterStyleFromRange(value, 4160, 4169, true, defaultSuffix);
+    case 39:
+      return createCounterStyleFromRange(value, 2918, 2927, true, defaultSuffix);
+    case 40:
+      return createCounterStyleFromRange(value, 1776, 1785, true, defaultSuffix);
+    case 43:
+      return createCounterStyleFromRange(value, 3046, 3055, true, defaultSuffix);
+    case 44:
+      return createCounterStyleFromRange(value, 3174, 3183, true, defaultSuffix);
+    case 45:
+      return createCounterStyleFromRange(value, 3664, 3673, true, defaultSuffix);
+    case 46:
+      return createCounterStyleFromRange(value, 3872, 3881, true, defaultSuffix);
+    case 3:
+    default:
+      return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
+  }
+};
+var IGNORE_ATTRIBUTE = "data-html2canvas-ignore";
+var DocumentCloner = (
+  /** @class */
+  function() {
+    function DocumentCloner2(context, element, options) {
+      this.context = context;
+      this.options = options;
+      this.scrolledElements = [];
+      this.referenceElement = element;
+      this.counters = new CounterState();
+      this.quoteDepth = 0;
+      if (!element.ownerDocument) {
+        throw new Error("Cloned element does not have an owner document");
+      }
+      this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);
+    }
+    DocumentCloner2.prototype.toIFrame = function(ownerDocument, windowSize) {
+      var _this = this;
+      var iframe = createIFrameContainer(ownerDocument, windowSize);
+      if (!iframe.contentWindow) {
+        return Promise.reject("Unable to find iframe window");
+      }
+      var scrollX = ownerDocument.defaultView.pageXOffset;
+      var scrollY = ownerDocument.defaultView.pageYOffset;
+      var cloneWindow = iframe.contentWindow;
+      var documentClone = cloneWindow.document;
+      var iframeLoad = iframeLoader(iframe).then(function() {
+        return __awaiter(_this, void 0, void 0, function() {
+          var onclone, referenceElement;
+          return __generator(this, function(_a) {
+            switch (_a.label) {
+              case 0:
+                this.scrolledElements.forEach(restoreNodeScroll);
+                if (cloneWindow) {
+                  cloneWindow.scrollTo(windowSize.left, windowSize.top);
+                  if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
+                    this.context.logger.warn("Unable to restore scroll position for cloned document");
+                    this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
+                  }
+                }
+                onclone = this.options.onclone;
+                referenceElement = this.clonedReferenceElement;
+                if (typeof referenceElement === "undefined") {
+                  return [2, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
+                }
+                if (!(documentClone.fonts && documentClone.fonts.ready)) return [3, 2];
+                return [4, documentClone.fonts.ready];
+              case 1:
+                _a.sent();
+                _a.label = 2;
+              case 2:
+                if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3, 4];
+                return [4, imagesReady(documentClone)];
+              case 3:
+                _a.sent();
+                _a.label = 4;
+              case 4:
+                if (typeof onclone === "function") {
+                  return [2, Promise.resolve().then(function() {
+                    return onclone(documentClone, referenceElement);
+                  }).then(function() {
+                    return iframe;
+                  })];
+                }
+                return [2, iframe];
+            }
+          });
+        });
+      });
+      documentClone.open();
+      documentClone.write(serializeDoctype(document.doctype) + "<html></html>");
+      restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);
+      documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);
+      documentClone.close();
+      return iframeLoad;
+    };
+    DocumentCloner2.prototype.createElementClone = function(node) {
+      if (isDebugging(
+        node,
+        2
+        /* CLONE */
+      )) {
+        debugger;
+      }
+      if (isCanvasElement(node)) {
+        return this.createCanvasClone(node);
+      }
+      if (isVideoElement(node)) {
+        return this.createVideoClone(node);
+      }
+      if (isStyleElement(node)) {
+        return this.createStyleClone(node);
+      }
+      var clone = node.cloneNode(false);
+      if (isImageElement(clone)) {
+        if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {
+          clone.src = node.currentSrc;
+          clone.srcset = "";
+        }
+        if (clone.loading === "lazy") {
+          clone.loading = "eager";
+        }
+      }
+      if (isCustomElement(clone)) {
+        return this.createCustomElementClone(clone);
+      }
+      return clone;
+    };
+    DocumentCloner2.prototype.createCustomElementClone = function(node) {
+      var clone = document.createElement("html2canvascustomelement");
+      copyCSSStyles(node.style, clone);
+      return clone;
+    };
+    DocumentCloner2.prototype.createStyleClone = function(node) {
+      try {
+        var sheet = node.sheet;
+        if (sheet && sheet.cssRules) {
+          var css = [].slice.call(sheet.cssRules, 0).reduce(function(css2, rule) {
+            if (rule && typeof rule.cssText === "string") {
+              return css2 + rule.cssText;
+            }
+            return css2;
+          }, "");
+          var style = node.cloneNode(false);
+          style.textContent = css;
+          return style;
+        }
+      } catch (e2) {
+        this.context.logger.error("Unable to access cssRules property", e2);
+        if (e2.name !== "SecurityError") {
+          throw e2;
+        }
+      }
+      return node.cloneNode(false);
+    };
+    DocumentCloner2.prototype.createCanvasClone = function(canvas) {
+      var _a;
+      if (this.options.inlineImages && canvas.ownerDocument) {
+        var img = canvas.ownerDocument.createElement("img");
+        try {
+          img.src = canvas.toDataURL();
+          return img;
+        } catch (e2) {
+          this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas);
+        }
+      }
+      var clonedCanvas = canvas.cloneNode(false);
+      try {
+        clonedCanvas.width = canvas.width;
+        clonedCanvas.height = canvas.height;
+        var ctx = canvas.getContext("2d");
+        var clonedCtx = clonedCanvas.getContext("2d");
+        if (clonedCtx) {
+          if (!this.options.allowTaint && ctx) {
+            clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
+          } else {
+            var gl = (_a = canvas.getContext("webgl2")) !== null && _a !== void 0 ? _a : canvas.getContext("webgl");
+            if (gl) {
+              var attribs = gl.getContextAttributes();
+              if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {
+                this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false", canvas);
+              }
+            }
+            clonedCtx.drawImage(canvas, 0, 0);
+          }
+        }
+        return clonedCanvas;
+      } catch (e2) {
+        this.context.logger.info("Unable to clone canvas as it is tainted", canvas);
+      }
+      return clonedCanvas;
+    };
+    DocumentCloner2.prototype.createVideoClone = function(video) {
+      var canvas = video.ownerDocument.createElement("canvas");
+      canvas.width = video.offsetWidth;
+      canvas.height = video.offsetHeight;
+      var ctx = canvas.getContext("2d");
+      try {
+        if (ctx) {
+          ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
+          if (!this.options.allowTaint) {
+            ctx.getImageData(0, 0, canvas.width, canvas.height);
+          }
+        }
+        return canvas;
+      } catch (e2) {
+        this.context.logger.info("Unable to clone video as it is tainted", video);
+      }
+      var blankCanvas = video.ownerDocument.createElement("canvas");
+      blankCanvas.width = video.offsetWidth;
+      blankCanvas.height = video.offsetHeight;
+      return blankCanvas;
+    };
+    DocumentCloner2.prototype.appendChildNode = function(clone, child, copyStyles) {
+      if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) {
+        if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
+          clone.appendChild(this.cloneNode(child, copyStyles));
+        }
+      }
+    };
+    DocumentCloner2.prototype.cloneChildNodes = function(node, clone, copyStyles) {
+      var _this = this;
+      for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {
+        if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") {
+          var assignedNodes = child.assignedNodes();
+          if (assignedNodes.length) {
+            assignedNodes.forEach(function(assignedNode) {
+              return _this.appendChildNode(clone, assignedNode, copyStyles);
+            });
+          }
+        } else {
+          this.appendChildNode(clone, child, copyStyles);
+        }
+      }
+    };
+    DocumentCloner2.prototype.cloneNode = function(node, copyStyles) {
+      if (isTextNode(node)) {
+        return document.createTextNode(node.data);
+      }
+      if (!node.ownerDocument) {
+        return node.cloneNode(false);
+      }
+      var window2 = node.ownerDocument.defaultView;
+      if (window2 && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {
+        var clone = this.createElementClone(node);
+        clone.style.transitionProperty = "none";
+        var style = window2.getComputedStyle(node);
+        var styleBefore = window2.getComputedStyle(node, ":before");
+        var styleAfter = window2.getComputedStyle(node, ":after");
+        if (this.referenceElement === node && isHTMLElementNode(clone)) {
+          this.clonedReferenceElement = clone;
+        }
+        if (isBodyElement(clone)) {
+          createPseudoHideStyles(clone);
+        }
+        var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
+        var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
+        if (isCustomElement(node)) {
+          copyStyles = true;
+        }
+        if (!isVideoElement(node)) {
+          this.cloneChildNodes(node, clone, copyStyles);
+        }
+        if (before) {
+          clone.insertBefore(before, clone.firstChild);
+        }
+        var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
+        if (after) {
+          clone.appendChild(after);
+        }
+        this.counters.pop(counters);
+        if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) {
+          copyCSSStyles(style, clone);
+        }
+        if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
+          this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
+        }
+        if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone) || isSelectElement(clone))) {
+          clone.value = node.value;
+        }
+        return clone;
+      }
+      return node.cloneNode(false);
+    };
+    DocumentCloner2.prototype.resolvePseudoContent = function(node, clone, style, pseudoElt) {
+      var _this = this;
+      if (!style) {
+        return;
+      }
+      var value = style.content;
+      var document2 = clone.ownerDocument;
+      if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") {
+        return;
+      }
+      this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
+      var declaration = new CSSParsedPseudoDeclaration(this.context, style);
+      var anonymousReplacedElement = document2.createElement("html2canvaspseudoelement");
+      copyCSSStyles(style, anonymousReplacedElement);
+      declaration.content.forEach(function(token) {
+        if (token.type === 0) {
+          anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
+        } else if (token.type === 22) {
+          var img = document2.createElement("img");
+          img.src = token.value;
+          img.style.opacity = "1";
+          anonymousReplacedElement.appendChild(img);
+        } else if (token.type === 18) {
+          if (token.name === "attr") {
+            var attr = token.values.filter(isIdentToken);
+            if (attr.length) {
+              anonymousReplacedElement.appendChild(document2.createTextNode(node.getAttribute(attr[0].value) || ""));
+            }
+          } else if (token.name === "counter") {
+            var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];
+            if (counter && isIdentToken(counter)) {
+              var counterState = _this.counters.getCounterValue(counter.value);
+              var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
+              anonymousReplacedElement.appendChild(document2.createTextNode(createCounterText(counterState, counterType, false)));
+            }
+          } else if (token.name === "counters") {
+            var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];
+            if (counter && isIdentToken(counter)) {
+              var counterStates = _this.counters.getCounterValues(counter.value);
+              var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
+              var separator = delim && delim.type === 0 ? delim.value : "";
+              var text = counterStates.map(function(value2) {
+                return createCounterText(value2, counterType_1, false);
+              }).join(separator);
+              anonymousReplacedElement.appendChild(document2.createTextNode(text));
+            }
+          } else ;
+        } else if (token.type === 20) {
+          switch (token.value) {
+            case "open-quote":
+              anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
+              break;
+            case "close-quote":
+              anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));
+              break;
+            default:
+              anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
+          }
+        }
+      });
+      anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
+      var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
+      if (isSVGElementNode(clone)) {
+        clone.className.baseValue += newClassName;
+      } else {
+        clone.className += newClassName;
+      }
+      return anonymousReplacedElement;
+    };
+    DocumentCloner2.destroy = function(container) {
+      if (container.parentNode) {
+        container.parentNode.removeChild(container);
+        return true;
+      }
+      return false;
+    };
+    return DocumentCloner2;
+  }()
+);
+var PseudoElementType;
+(function(PseudoElementType2) {
+  PseudoElementType2[PseudoElementType2["BEFORE"] = 0] = "BEFORE";
+  PseudoElementType2[PseudoElementType2["AFTER"] = 1] = "AFTER";
+})(PseudoElementType || (PseudoElementType = {}));
+var createIFrameContainer = function(ownerDocument, bounds) {
+  var cloneIframeContainer = ownerDocument.createElement("iframe");
+  cloneIframeContainer.className = "html2canvas-container";
+  cloneIframeContainer.style.visibility = "hidden";
+  cloneIframeContainer.style.position = "fixed";
+  cloneIframeContainer.style.left = "-10000px";
+  cloneIframeContainer.style.top = "0px";
+  cloneIframeContainer.style.border = "0";
+  cloneIframeContainer.width = bounds.width.toString();
+  cloneIframeContainer.height = bounds.height.toString();
+  cloneIframeContainer.scrolling = "no";
+  cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, "true");
+  ownerDocument.body.appendChild(cloneIframeContainer);
+  return cloneIframeContainer;
+};
+var imageReady = function(img) {
+  return new Promise(function(resolve) {
+    if (img.complete) {
+      resolve();
+      return;
+    }
+    if (!img.src) {
+      resolve();
+      return;
+    }
+    img.onload = resolve;
+    img.onerror = resolve;
+  });
+};
+var imagesReady = function(document2) {
+  return Promise.all([].slice.call(document2.images, 0).map(imageReady));
+};
+var iframeLoader = function(iframe) {
+  return new Promise(function(resolve, reject) {
+    var cloneWindow = iframe.contentWindow;
+    if (!cloneWindow) {
+      return reject("No window assigned for iframe");
+    }
+    var documentClone = cloneWindow.document;
+    cloneWindow.onload = iframe.onload = function() {
+      cloneWindow.onload = iframe.onload = null;
+      var interval = setInterval(function() {
+        if (documentClone.body.childNodes.length > 0 && documentClone.readyState === "complete") {
+          clearInterval(interval);
+          resolve(iframe);
+        }
+      }, 50);
+    };
+  });
+};
+var ignoredStyleProperties = [
+  "all",
+  "d",
+  "content"
+  // Safari shows pseudoelements if content is set
+];
+var copyCSSStyles = function(style, target) {
+  for (var i = style.length - 1; i >= 0; i--) {
+    var property = style.item(i);
+    if (ignoredStyleProperties.indexOf(property) === -1) {
+      target.style.setProperty(property, style.getPropertyValue(property));
+    }
+  }
+  return target;
+};
+var serializeDoctype = function(doctype) {
+  var str = "";
+  if (doctype) {
+    str += "<!DOCTYPE ";
+    if (doctype.name) {
+      str += doctype.name;
+    }
+    if (doctype.internalSubset) {
+      str += doctype.internalSubset;
+    }
+    if (doctype.publicId) {
+      str += '"' + doctype.publicId + '"';
+    }
+    if (doctype.systemId) {
+      str += '"' + doctype.systemId + '"';
+    }
+    str += ">";
+  }
+  return str;
+};
+var restoreOwnerScroll = function(ownerDocument, x, y) {
+  if (ownerDocument && ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {
+    ownerDocument.defaultView.scrollTo(x, y);
+  }
+};
+var restoreNodeScroll = function(_a) {
+  var element = _a[0], x = _a[1], y = _a[2];
+  element.scrollLeft = x;
+  element.scrollTop = y;
+};
+var PSEUDO_BEFORE = ":before";
+var PSEUDO_AFTER = ":after";
+var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before";
+var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after";
+var PSEUDO_HIDE_ELEMENT_STYLE = '{\n    content: "" !important;\n    display: none !important;\n}';
+var createPseudoHideStyles = function(body) {
+  createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n         ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
+};
+var createStyles = function(body, styles) {
+  var document2 = body.ownerDocument;
+  if (document2) {
+    var style = document2.createElement("style");
+    style.textContent = styles;
+    body.appendChild(style);
+  }
+};
+var CacheStorage = (
+  /** @class */
+  function() {
+    function CacheStorage2() {
+    }
+    CacheStorage2.getOrigin = function(url) {
+      var link = CacheStorage2._link;
+      if (!link) {
+        return "about:blank";
+      }
+      link.href = url;
+      link.href = link.href;
+      return link.protocol + link.hostname + link.port;
+    };
+    CacheStorage2.isSameOrigin = function(src) {
+      return CacheStorage2.getOrigin(src) === CacheStorage2._origin;
+    };
+    CacheStorage2.setContext = function(window2) {
+      CacheStorage2._link = window2.document.createElement("a");
+      CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href);
+    };
+    CacheStorage2._origin = "about:blank";
+    return CacheStorage2;
+  }()
+);
+var Cache = (
+  /** @class */
+  function() {
+    function Cache2(context, _options) {
+      this.context = context;
+      this._options = _options;
+      this._cache = {};
+    }
+    Cache2.prototype.addImage = function(src) {
+      var result = Promise.resolve();
+      if (this.has(src)) {
+        return result;
+      }
+      if (isBlobImage(src) || isRenderable(src)) {
+        (this._cache[src] = this.loadImage(src)).catch(function() {
+        });
+        return result;
+      }
+      return result;
+    };
+    Cache2.prototype.match = function(src) {
+      return this._cache[src];
+    };
+    Cache2.prototype.loadImage = function(key) {
+      return __awaiter(this, void 0, void 0, function() {
+        var isSameOrigin, useCORS, useProxy, src;
+        var _this = this;
+        return __generator(this, function(_a) {
+          switch (_a.label) {
+            case 0:
+              isSameOrigin = CacheStorage.isSameOrigin(key);
+              useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
+              useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === "string" && FEATURES.SUPPORT_CORS_XHR && !useCORS;
+              if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) {
+                return [
+                  2
+                  /*return*/
+                ];
+              }
+              src = key;
+              if (!useProxy) return [3, 2];
+              return [4, this.proxy(src)];
+            case 1:
+              src = _a.sent();
+              _a.label = 2;
+            case 2:
+              this.context.logger.debug("Added image " + key.substring(0, 256));
+              return [4, new Promise(function(resolve, reject) {
+                var img = new Image();
+                img.onload = function() {
+                  return resolve(img);
+                };
+                img.onerror = reject;
+                if (isInlineBase64Image(src) || useCORS) {
+                  img.crossOrigin = "anonymous";
+                }
+                img.src = src;
+                if (img.complete === true) {
+                  setTimeout(function() {
+                    return resolve(img);
+                  }, 500);
+                }
+                if (_this._options.imageTimeout > 0) {
+                  setTimeout(function() {
+                    return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image");
+                  }, _this._options.imageTimeout);
+                }
+              })];
+            case 3:
+              return [2, _a.sent()];
+          }
+        });
+      });
+    };
+    Cache2.prototype.has = function(key) {
+      return typeof this._cache[key] !== "undefined";
+    };
+    Cache2.prototype.keys = function() {
+      return Promise.resolve(Object.keys(this._cache));
+    };
+    Cache2.prototype.proxy = function(src) {
+      var _this = this;
+      var proxy = this._options.proxy;
+      if (!proxy) {
+        throw new Error("No proxy defined");
+      }
+      var key = src.substring(0, 256);
+      return new Promise(function(resolve, reject) {
+        var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? "blob" : "text";
+        var xhr = new XMLHttpRequest();
+        xhr.onload = function() {
+          if (xhr.status === 200) {
+            if (responseType === "text") {
+              resolve(xhr.response);
+            } else {
+              var reader_1 = new FileReader();
+              reader_1.addEventListener("load", function() {
+                return resolve(reader_1.result);
+              }, false);
+              reader_1.addEventListener("error", function(e2) {
+                return reject(e2);
+              }, false);
+              reader_1.readAsDataURL(xhr.response);
+            }
+          } else {
+            reject("Failed to proxy resource " + key + " with status code " + xhr.status);
+          }
+        };
+        xhr.onerror = reject;
+        var queryString = proxy.indexOf("?") > -1 ? "&" : "?";
+        xhr.open("GET", "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType);
+        if (responseType !== "text" && xhr instanceof XMLHttpRequest) {
+          xhr.responseType = responseType;
+        }
+        if (_this._options.imageTimeout) {
+          var timeout_1 = _this._options.imageTimeout;
+          xhr.timeout = timeout_1;
+          xhr.ontimeout = function() {
+            return reject("Timed out (" + timeout_1 + "ms) proxying " + key);
+          };
+        }
+        xhr.send();
+      });
+    };
+    return Cache2;
+  }()
+);
+var INLINE_SVG = /^data:image\/svg\+xml/i;
+var INLINE_BASE64 = /^data:image\/.*;base64,/i;
+var INLINE_IMG = /^data:image\/.*/i;
+var isRenderable = function(src) {
+  return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);
+};
+var isInlineImage = function(src) {
+  return INLINE_IMG.test(src);
+};
+var isInlineBase64Image = function(src) {
+  return INLINE_BASE64.test(src);
+};
+var isBlobImage = function(src) {
+  return src.substr(0, 4) === "blob";
+};
+var isSVG = function(src) {
+  return src.substr(-3).toLowerCase() === "svg" || INLINE_SVG.test(src);
+};
+var Vector = (
+  /** @class */
+  function() {
+    function Vector2(x, y) {
+      this.type = 0;
+      this.x = x;
+      this.y = y;
+    }
+    Vector2.prototype.add = function(deltaX, deltaY) {
+      return new Vector2(this.x + deltaX, this.y + deltaY);
+    };
+    return Vector2;
+  }()
+);
+var lerp = function(a2, b, t) {
+  return new Vector(a2.x + (b.x - a2.x) * t, a2.y + (b.y - a2.y) * t);
+};
+var BezierCurve = (
+  /** @class */
+  function() {
+    function BezierCurve2(start, startControl, endControl, end) {
+      this.type = 1;
+      this.start = start;
+      this.startControl = startControl;
+      this.endControl = endControl;
+      this.end = end;
+    }
+    BezierCurve2.prototype.subdivide = function(t, firstHalf) {
+      var ab = lerp(this.start, this.startControl, t);
+      var bc = lerp(this.startControl, this.endControl, t);
+      var cd = lerp(this.endControl, this.end, t);
+      var abbc = lerp(ab, bc, t);
+      var bccd = lerp(bc, cd, t);
+      var dest = lerp(abbc, bccd, t);
+      return firstHalf ? new BezierCurve2(this.start, ab, abbc, dest) : new BezierCurve2(dest, bccd, cd, this.end);
+    };
+    BezierCurve2.prototype.add = function(deltaX, deltaY) {
+      return new BezierCurve2(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
+    };
+    BezierCurve2.prototype.reverse = function() {
+      return new BezierCurve2(this.end, this.endControl, this.startControl, this.start);
+    };
+    return BezierCurve2;
+  }()
+);
+var isBezierCurve = function(path) {
+  return path.type === 1;
+};
+var BoundCurves = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function BoundCurves2(element) {
+      var styles = element.styles;
+      var bounds = element.bounds;
+      var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];
+      var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];
+      var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];
+      var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];
+      var factors = [];
+      factors.push((tlh + trh) / bounds.width);
+      factors.push((blh + brh) / bounds.width);
+      factors.push((tlv + blv) / bounds.height);
+      factors.push((trv + brv) / bounds.height);
+      var maxFactor = Math.max.apply(Math, factors);
+      if (maxFactor > 1) {
+        tlh /= maxFactor;
+        tlv /= maxFactor;
+        trh /= maxFactor;
+        trv /= maxFactor;
+        brh /= maxFactor;
+        brv /= maxFactor;
+        blh /= maxFactor;
+        blv /= maxFactor;
+      }
+      var topWidth = bounds.width - trh;
+      var rightHeight = bounds.height - brv;
+      var bottomWidth = bounds.width - brh;
+      var leftHeight = bounds.height - blv;
+      var borderTopWidth2 = styles.borderTopWidth;
+      var borderRightWidth2 = styles.borderRightWidth;
+      var borderBottomWidth2 = styles.borderBottomWidth;
+      var borderLeftWidth2 = styles.borderLeftWidth;
+      var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width);
+      var paddingRight2 = getAbsoluteValue(styles.paddingRight, element.bounds.width);
+      var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
+      var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
+      this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3, tlh - borderLeftWidth2 / 3, tlv - borderTopWidth2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3);
+      this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 3, trh - borderRightWidth2 / 3, trv - borderTopWidth2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + borderTopWidth2 / 3);
+      this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 3, brv - borderBottomWidth2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
+      this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 / 3, blv - borderBottomWidth2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
+      this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3, tlh - borderLeftWidth2 * 2 / 3, tlv - borderTopWidth2 * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
+      this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 * 2 / 3, trh - borderRightWidth2 * 2 / 3, trv - borderTopWidth2 * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
+      this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 * 2 / 3, brv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
+      this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 * 2 / 3, blv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
+      this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2, tlh - borderLeftWidth2 / 2, tlv - borderTopWidth2 / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2);
+      this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 2, trh - borderRightWidth2 / 2, trv - borderTopWidth2 / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + borderTopWidth2 / 2);
+      this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 2, brv - borderBottomWidth2 / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
+      this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + leftHeight, blh - borderLeftWidth2 / 2, blv - borderBottomWidth2 / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
+      this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top);
+      this.topRightBorderBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top);
+      this.bottomRightBorderBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
+      this.bottomLeftBorderBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new Vector(bounds.left, bounds.top + bounds.height);
+      this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2, Math.max(0, tlh - borderLeftWidth2), Math.max(0, tlv - borderTopWidth2), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2);
+      this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2), bounds.top + borderTopWidth2, topWidth > bounds.width + borderRightWidth2 ? 0 : Math.max(0, trh - borderRightWidth2), Math.max(0, trv - borderTopWidth2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + borderTopWidth2);
+      this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth2), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth2), Math.max(0, brh - borderRightWidth2), Math.max(0, brv - borderBottomWidth2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + bounds.height - borderBottomWidth2);
+      this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth2), Math.max(0, blh - borderLeftWidth2), Math.max(0, blv - borderBottomWidth2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + bounds.height - borderBottomWidth2);
+      this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2, Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)), Math.max(0, tlv - (borderTopWidth2 + paddingTop2)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2);
+      this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth2 + paddingLeft2), bounds.top + borderTopWidth2 + paddingTop2, topWidth > bounds.width + borderLeftWidth2 + paddingLeft2 ? 0 : trh - borderLeftWidth2 + paddingLeft2, trv - (borderTopWidth2 + paddingTop2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + borderTopWidth2 + paddingTop2);
+      this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth2 + paddingLeft2)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth2 + paddingTop2), Math.max(0, brh - (borderRightWidth2 + paddingRight2)), brv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
+      this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)), blv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
+    }
+    return BoundCurves2;
+  }()
+);
+var CORNER;
+(function(CORNER2) {
+  CORNER2[CORNER2["TOP_LEFT"] = 0] = "TOP_LEFT";
+  CORNER2[CORNER2["TOP_RIGHT"] = 1] = "TOP_RIGHT";
+  CORNER2[CORNER2["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT";
+  CORNER2[CORNER2["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT";
+})(CORNER || (CORNER = {}));
+var getCurvePoints = function(x, y, r1, r2, position2) {
+  var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
+  var ox = r1 * kappa;
+  var oy = r2 * kappa;
+  var xm = x + r1;
+  var ym = y + r2;
+  switch (position2) {
+    case CORNER.TOP_LEFT:
+      return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));
+    case CORNER.TOP_RIGHT:
+      return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));
+    case CORNER.BOTTOM_RIGHT:
+      return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));
+    case CORNER.BOTTOM_LEFT:
+    default:
+      return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));
+  }
+};
+var calculateBorderBoxPath = function(curves) {
+  return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
+};
+var calculateContentBoxPath = function(curves) {
+  return [
+    curves.topLeftContentBox,
+    curves.topRightContentBox,
+    curves.bottomRightContentBox,
+    curves.bottomLeftContentBox
+  ];
+};
+var calculatePaddingBoxPath = function(curves) {
+  return [
+    curves.topLeftPaddingBox,
+    curves.topRightPaddingBox,
+    curves.bottomRightPaddingBox,
+    curves.bottomLeftPaddingBox
+  ];
+};
+var TransformEffect = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function TransformEffect2(offsetX, offsetY, matrix2) {
+      this.offsetX = offsetX;
+      this.offsetY = offsetY;
+      this.matrix = matrix2;
+      this.type = 0;
+      this.target = 2 | 4;
+    }
+    return TransformEffect2;
+  }()
+);
+var ClipEffect = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function ClipEffect2(path, target) {
+      this.path = path;
+      this.target = target;
+      this.type = 1;
+    }
+    return ClipEffect2;
+  }()
+);
+var OpacityEffect = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function OpacityEffect2(opacity2) {
+      this.opacity = opacity2;
+      this.type = 2;
+      this.target = 2 | 4;
+    }
+    return OpacityEffect2;
+  }()
+);
+var isTransformEffect = function(effect) {
+  return effect.type === 0;
+};
+var isClipEffect = function(effect) {
+  return effect.type === 1;
+};
+var isOpacityEffect = function(effect) {
+  return effect.type === 2;
+};
+var equalPath = function(a2, b) {
+  if (a2.length === b.length) {
+    return a2.some(function(v, i) {
+      return v === b[i];
+    });
+  }
+  return false;
+};
+var transformPath = function(path, deltaX, deltaY, deltaW, deltaH) {
+  return path.map(function(point, index) {
+    switch (index) {
+      case 0:
+        return point.add(deltaX, deltaY);
+      case 1:
+        return point.add(deltaX + deltaW, deltaY);
+      case 2:
+        return point.add(deltaX + deltaW, deltaY + deltaH);
+      case 3:
+        return point.add(deltaX, deltaY + deltaH);
+    }
+    return point;
+  });
+};
+var StackingContext = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function StackingContext2(container) {
+      this.element = container;
+      this.inlineLevel = [];
+      this.nonInlineLevel = [];
+      this.negativeZIndex = [];
+      this.zeroOrAutoZIndexOrTransformedOrOpacity = [];
+      this.positiveZIndex = [];
+      this.nonPositionedFloats = [];
+      this.nonPositionedInlineLevel = [];
+    }
+    return StackingContext2;
+  }()
+);
+var ElementPaint = (
+  /** @class */
+  function() {
+    function ElementPaint2(container, parent) {
+      this.container = container;
+      this.parent = parent;
+      this.effects = [];
+      this.curves = new BoundCurves(this.container);
+      if (this.container.styles.opacity < 1) {
+        this.effects.push(new OpacityEffect(this.container.styles.opacity));
+      }
+      if (this.container.styles.transform !== null) {
+        var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;
+        var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;
+        var matrix2 = this.container.styles.transform;
+        this.effects.push(new TransformEffect(offsetX, offsetY, matrix2));
+      }
+      if (this.container.styles.overflowX !== 0) {
+        var borderBox = calculateBorderBoxPath(this.curves);
+        var paddingBox2 = calculatePaddingBoxPath(this.curves);
+        if (equalPath(borderBox, paddingBox2)) {
+          this.effects.push(new ClipEffect(
+            borderBox,
+            2 | 4
+            /* CONTENT */
+          ));
+        } else {
+          this.effects.push(new ClipEffect(
+            borderBox,
+            2
+            /* BACKGROUND_BORDERS */
+          ));
+          this.effects.push(new ClipEffect(
+            paddingBox2,
+            4
+            /* CONTENT */
+          ));
+        }
+      }
+    }
+    ElementPaint2.prototype.getEffects = function(target) {
+      var inFlow = [
+        2,
+        3
+        /* FIXED */
+      ].indexOf(this.container.styles.position) === -1;
+      var parent = this.parent;
+      var effects = this.effects.slice(0);
+      while (parent) {
+        var croplessEffects = parent.effects.filter(function(effect) {
+          return !isClipEffect(effect);
+        });
+        if (inFlow || parent.container.styles.position !== 0 || !parent.parent) {
+          effects.unshift.apply(effects, croplessEffects);
+          inFlow = [
+            2,
+            3
+            /* FIXED */
+          ].indexOf(parent.container.styles.position) === -1;
+          if (parent.container.styles.overflowX !== 0) {
+            var borderBox = calculateBorderBoxPath(parent.curves);
+            var paddingBox2 = calculatePaddingBoxPath(parent.curves);
+            if (!equalPath(borderBox, paddingBox2)) {
+              effects.unshift(new ClipEffect(
+                paddingBox2,
+                2 | 4
+                /* CONTENT */
+              ));
+            }
+          }
+        } else {
+          effects.unshift.apply(effects, croplessEffects);
+        }
+        parent = parent.parent;
+      }
+      return effects.filter(function(effect) {
+        return contains(effect.target, target);
+      });
+    };
+    return ElementPaint2;
+  }()
+);
+var parseStackTree = function(parent, stackingContext, realStackingContext, listItems) {
+  parent.container.elements.forEach(function(child) {
+    var treatAsRealStackingContext = contains(
+      child.flags,
+      4
+      /* CREATES_REAL_STACKING_CONTEXT */
+    );
+    var createsStackingContext2 = contains(
+      child.flags,
+      2
+      /* CREATES_STACKING_CONTEXT */
+    );
+    var paintContainer = new ElementPaint(child, parent);
+    if (contains(
+      child.styles.display,
+      2048
+      /* LIST_ITEM */
+    )) {
+      listItems.push(paintContainer);
+    }
+    var listOwnerItems = contains(
+      child.flags,
+      8
+      /* IS_LIST_OWNER */
+    ) ? [] : listItems;
+    if (treatAsRealStackingContext || createsStackingContext2) {
+      var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;
+      var stack = new StackingContext(paintContainer);
+      if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {
+        var order_1 = child.styles.zIndex.order;
+        if (order_1 < 0) {
+          var index_1 = 0;
+          parentStack.negativeZIndex.some(function(current, i) {
+            if (order_1 > current.element.container.styles.zIndex.order) {
+              index_1 = i;
+              return false;
+            } else if (index_1 > 0) {
+              return true;
+            }
+            return false;
+          });
+          parentStack.negativeZIndex.splice(index_1, 0, stack);
+        } else if (order_1 > 0) {
+          var index_2 = 0;
+          parentStack.positiveZIndex.some(function(current, i) {
+            if (order_1 >= current.element.container.styles.zIndex.order) {
+              index_2 = i + 1;
+              return false;
+            } else if (index_2 > 0) {
+              return true;
+            }
+            return false;
+          });
+          parentStack.positiveZIndex.splice(index_2, 0, stack);
+        } else {
+          parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);
+        }
+      } else {
+        if (child.styles.isFloating()) {
+          parentStack.nonPositionedFloats.push(stack);
+        } else {
+          parentStack.nonPositionedInlineLevel.push(stack);
+        }
+      }
+      parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);
+    } else {
+      if (child.styles.isInlineLevel()) {
+        stackingContext.inlineLevel.push(paintContainer);
+      } else {
+        stackingContext.nonInlineLevel.push(paintContainer);
+      }
+      parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);
+    }
+    if (contains(
+      child.flags,
+      8
+      /* IS_LIST_OWNER */
+    )) {
+      processListItems(child, listOwnerItems);
+    }
+  });
+};
+var processListItems = function(owner, elements) {
+  var numbering = owner instanceof OLElementContainer ? owner.start : 1;
+  var reversed = owner instanceof OLElementContainer ? owner.reversed : false;
+  for (var i = 0; i < elements.length; i++) {
+    var item = elements[i];
+    if (item.container instanceof LIElementContainer && typeof item.container.value === "number" && item.container.value !== 0) {
+      numbering = item.container.value;
+    }
+    item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);
+    numbering += reversed ? -1 : 1;
+  }
+};
+var parseStackingContexts = function(container) {
+  var paintContainer = new ElementPaint(container, null);
+  var root = new StackingContext(paintContainer);
+  var listItems = [];
+  parseStackTree(paintContainer, root, root, listItems);
+  processListItems(paintContainer.container, listItems);
+  return root;
+};
+var parsePathForBorder = function(curves, borderSide) {
+  switch (borderSide) {
+    case 0:
+      return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);
+    case 1:
+      return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);
+    case 2:
+      return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);
+    case 3:
+    default:
+      return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
+  }
+};
+var parsePathForBorderDoubleOuter = function(curves, borderSide) {
+  switch (borderSide) {
+    case 0:
+      return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);
+    case 1:
+      return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);
+    case 2:
+      return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);
+    case 3:
+    default:
+      return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);
+  }
+};
+var parsePathForBorderDoubleInner = function(curves, borderSide) {
+  switch (borderSide) {
+    case 0:
+      return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);
+    case 1:
+      return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);
+    case 2:
+      return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);
+    case 3:
+    default:
+      return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);
+  }
+};
+var parsePathForBorderStroke = function(curves, borderSide) {
+  switch (borderSide) {
+    case 0:
+      return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);
+    case 1:
+      return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);
+    case 2:
+      return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);
+    case 3:
+    default:
+      return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);
+  }
+};
+var createStrokePathFromCurves = function(outer1, outer2) {
+  var path = [];
+  if (isBezierCurve(outer1)) {
+    path.push(outer1.subdivide(0.5, false));
+  } else {
+    path.push(outer1);
+  }
+  if (isBezierCurve(outer2)) {
+    path.push(outer2.subdivide(0.5, true));
+  } else {
+    path.push(outer2);
+  }
+  return path;
+};
+var createPathFromCurves = function(outer1, inner1, outer2, inner2) {
+  var path = [];
+  if (isBezierCurve(outer1)) {
+    path.push(outer1.subdivide(0.5, false));
+  } else {
+    path.push(outer1);
+  }
+  if (isBezierCurve(outer2)) {
+    path.push(outer2.subdivide(0.5, true));
+  } else {
+    path.push(outer2);
+  }
+  if (isBezierCurve(inner2)) {
+    path.push(inner2.subdivide(0.5, true).reverse());
+  } else {
+    path.push(inner2);
+  }
+  if (isBezierCurve(inner1)) {
+    path.push(inner1.subdivide(0.5, false).reverse());
+  } else {
+    path.push(inner1);
+  }
+  return path;
+};
+var paddingBox = function(element) {
+  var bounds = element.bounds;
+  var styles = element.styles;
+  return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));
+};
+var contentBox = function(element) {
+  var styles = element.styles;
+  var bounds = element.bounds;
+  var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width);
+  var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width);
+  var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width);
+  var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width);
+  return bounds.add(paddingLeft2 + styles.borderLeftWidth, paddingTop2 + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft2 + paddingRight2), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop2 + paddingBottom2));
+};
+var calculateBackgroundPositioningArea = function(backgroundOrigin2, element) {
+  if (backgroundOrigin2 === 0) {
+    return element.bounds;
+  }
+  if (backgroundOrigin2 === 2) {
+    return contentBox(element);
+  }
+  return paddingBox(element);
+};
+var calculateBackgroundPaintingArea = function(backgroundClip2, element) {
+  if (backgroundClip2 === 0) {
+    return element.bounds;
+  }
+  if (backgroundClip2 === 2) {
+    return contentBox(element);
+  }
+  return paddingBox(element);
+};
+var calculateBackgroundRendering = function(container, index, intrinsicSize) {
+  var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);
+  var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);
+  var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
+  var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
+  var position2 = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
+  var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position2, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
+  var offsetX = Math.round(backgroundPositioningArea.left + position2[0]);
+  var offsetY = Math.round(backgroundPositioningArea.top + position2[1]);
+  return [path, offsetX, offsetY, sizeWidth, sizeHeight];
+};
+var isAuto = function(token) {
+  return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;
+};
+var hasIntrinsicValue = function(value) {
+  return typeof value === "number";
+};
+var calculateBackgroundSize = function(size, _a, bounds) {
+  var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
+  var first = size[0], second = size[1];
+  if (!first) {
+    return [0, 0];
+  }
+  if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
+    return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
+  }
+  var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
+  if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {
+    if (hasIntrinsicValue(intrinsicProportion)) {
+      var targetRatio = bounds.width / bounds.height;
+      return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height];
+    }
+    return [bounds.width, bounds.height];
+  }
+  var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
+  var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
+  var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
+  if (isAuto(first) && (!second || isAuto(second))) {
+    if (hasIntrinsicWidth && hasIntrinsicHeight) {
+      return [intrinsicWidth, intrinsicHeight];
+    }
+    if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
+      return [bounds.width, bounds.height];
+    }
+    if (hasIntrinsicDimensions && hasIntrinsicProportion) {
+      var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion;
+      var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion;
+      return [width_1, height_1];
+    }
+    var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
+    var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
+    return [width_2, height_2];
+  }
+  if (hasIntrinsicProportion) {
+    var width_3 = 0;
+    var height_3 = 0;
+    if (isLengthPercentage(first)) {
+      width_3 = getAbsoluteValue(first, bounds.width);
+    } else if (isLengthPercentage(second)) {
+      height_3 = getAbsoluteValue(second, bounds.height);
+    }
+    if (isAuto(first)) {
+      width_3 = height_3 * intrinsicProportion;
+    } else if (!second || isAuto(second)) {
+      height_3 = width_3 / intrinsicProportion;
+    }
+    return [width_3, height_3];
+  }
+  var width = null;
+  var height = null;
+  if (isLengthPercentage(first)) {
+    width = getAbsoluteValue(first, bounds.width);
+  } else if (second && isLengthPercentage(second)) {
+    height = getAbsoluteValue(second, bounds.height);
+  }
+  if (width !== null && (!second || isAuto(second))) {
+    height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height;
+  }
+  if (height !== null && isAuto(first)) {
+    width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width;
+  }
+  if (width !== null && height !== null) {
+    return [width, height];
+  }
+  throw new Error("Unable to calculate background-size for element");
+};
+var getBackgroundValueForIndex = function(values, index) {
+  var value = values[index];
+  if (typeof value === "undefined") {
+    return values[0];
+  }
+  return value;
+};
+var calculateBackgroundRepeatPath = function(repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
+  var x = _a[0], y = _a[1];
+  var width = _b[0], height = _b[1];
+  switch (repeat) {
+    case 2:
+      return [
+        new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),
+        new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
+        new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
+        new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))
+      ];
+    case 3:
+      return [
+        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),
+        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
+        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
+        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
+      ];
+    case 1:
+      return [
+        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),
+        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),
+        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),
+        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))
+      ];
+    default:
+      return [
+        new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
+        new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
+        new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
+        new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
+      ];
+  }
+};
+var SMALL_IMAGE = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
+var SAMPLE_TEXT = "Hidden Text";
+var FontMetrics = (
+  /** @class */
+  function() {
+    function FontMetrics2(document2) {
+      this._data = {};
+      this._document = document2;
+    }
+    FontMetrics2.prototype.parseMetrics = function(fontFamily2, fontSize2) {
+      var container = this._document.createElement("div");
+      var img = this._document.createElement("img");
+      var span = this._document.createElement("span");
+      var body = this._document.body;
+      container.style.visibility = "hidden";
+      container.style.fontFamily = fontFamily2;
+      container.style.fontSize = fontSize2;
+      container.style.margin = "0";
+      container.style.padding = "0";
+      container.style.whiteSpace = "nowrap";
+      body.appendChild(container);
+      img.src = SMALL_IMAGE;
+      img.width = 1;
+      img.height = 1;
+      img.style.margin = "0";
+      img.style.padding = "0";
+      img.style.verticalAlign = "baseline";
+      span.style.fontFamily = fontFamily2;
+      span.style.fontSize = fontSize2;
+      span.style.margin = "0";
+      span.style.padding = "0";
+      span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
+      container.appendChild(span);
+      container.appendChild(img);
+      var baseline = img.offsetTop - span.offsetTop + 2;
+      container.removeChild(span);
+      container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
+      container.style.lineHeight = "normal";
+      img.style.verticalAlign = "super";
+      var middle = img.offsetTop - container.offsetTop + 2;
+      body.removeChild(container);
+      return { baseline, middle };
+    };
+    FontMetrics2.prototype.getMetrics = function(fontFamily2, fontSize2) {
+      var key = fontFamily2 + " " + fontSize2;
+      if (typeof this._data[key] === "undefined") {
+        this._data[key] = this.parseMetrics(fontFamily2, fontSize2);
+      }
+      return this._data[key];
+    };
+    return FontMetrics2;
+  }()
+);
+var Renderer = (
+  /** @class */
+  /* @__PURE__ */ function() {
+    function Renderer2(context, options) {
+      this.context = context;
+      this.options = options;
+    }
+    return Renderer2;
+  }()
+);
+var MASK_OFFSET = 1e4;
+var CanvasRenderer = (
+  /** @class */
+  function(_super) {
+    __extends(CanvasRenderer2, _super);
+    function CanvasRenderer2(context, options) {
+      var _this = _super.call(this, context, options) || this;
+      _this._activeEffects = [];
+      _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
+      _this.ctx = _this.canvas.getContext("2d");
+      if (!options.canvas) {
+        _this.canvas.width = Math.floor(options.width * options.scale);
+        _this.canvas.height = Math.floor(options.height * options.scale);
+        _this.canvas.style.width = options.width + "px";
+        _this.canvas.style.height = options.height + "px";
+      }
+      _this.fontMetrics = new FontMetrics(document);
+      _this.ctx.scale(_this.options.scale, _this.options.scale);
+      _this.ctx.translate(-options.x, -options.y);
+      _this.ctx.textBaseline = "bottom";
+      _this._activeEffects = [];
+      _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale);
+      return _this;
+    }
+    CanvasRenderer2.prototype.applyEffects = function(effects) {
+      var _this = this;
+      while (this._activeEffects.length) {
+        this.popEffect();
+      }
+      effects.forEach(function(effect) {
+        return _this.applyEffect(effect);
+      });
+    };
+    CanvasRenderer2.prototype.applyEffect = function(effect) {
+      this.ctx.save();
+      if (isOpacityEffect(effect)) {
+        this.ctx.globalAlpha = effect.opacity;
+      }
+      if (isTransformEffect(effect)) {
+        this.ctx.translate(effect.offsetX, effect.offsetY);
+        this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);
+        this.ctx.translate(-effect.offsetX, -effect.offsetY);
+      }
+      if (isClipEffect(effect)) {
+        this.path(effect.path);
+        this.ctx.clip();
+      }
+      this._activeEffects.push(effect);
+    };
+    CanvasRenderer2.prototype.popEffect = function() {
+      this._activeEffects.pop();
+      this.ctx.restore();
+    };
+    CanvasRenderer2.prototype.renderStack = function(stack) {
+      return __awaiter(this, void 0, void 0, function() {
+        var styles;
+        return __generator(this, function(_a) {
+          switch (_a.label) {
+            case 0:
+              styles = stack.element.container.styles;
+              if (!styles.isVisible()) return [3, 2];
+              return [4, this.renderStackContent(stack)];
+            case 1:
+              _a.sent();
+              _a.label = 2;
+            case 2:
+              return [
+                2
+                /*return*/
+              ];
+          }
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderNode = function(paint) {
+      return __awaiter(this, void 0, void 0, function() {
+        return __generator(this, function(_a) {
+          switch (_a.label) {
+            case 0:
+              if (contains(
+                paint.container.flags,
+                16
+                /* DEBUG_RENDER */
+              )) {
+                debugger;
+              }
+              if (!paint.container.styles.isVisible()) return [3, 3];
+              return [4, this.renderNodeBackgroundAndBorders(paint)];
+            case 1:
+              _a.sent();
+              return [4, this.renderNodeContent(paint)];
+            case 2:
+              _a.sent();
+              _a.label = 3;
+            case 3:
+              return [
+                2
+                /*return*/
+              ];
+          }
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderTextWithLetterSpacing = function(text, letterSpacing2, baseline) {
+      var _this = this;
+      if (letterSpacing2 === 0) {
+        this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);
+      } else {
+        var letters = segmentGraphemes(text.text);
+        letters.reduce(function(left, letter) {
+          _this.ctx.fillText(letter, left, text.bounds.top + baseline);
+          return left + _this.ctx.measureText(letter).width;
+        }, text.bounds.left);
+      }
+    };
+    CanvasRenderer2.prototype.createFontStyle = function(styles) {
+      var fontVariant2 = styles.fontVariant.filter(function(variant) {
+        return variant === "normal" || variant === "small-caps";
+      }).join("");
+      var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(", ");
+      var fontSize2 = isDimensionToken(styles.fontSize) ? "" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + "px";
+      return [
+        [styles.fontStyle, fontVariant2, styles.fontWeight, fontSize2, fontFamily2].join(" "),
+        fontFamily2,
+        fontSize2
+      ];
+    };
+    CanvasRenderer2.prototype.renderTextNode = function(text, styles) {
+      return __awaiter(this, void 0, void 0, function() {
+        var _a, font, fontFamily2, fontSize2, _b, baseline, middle, paintOrder2;
+        var _this = this;
+        return __generator(this, function(_c) {
+          _a = this.createFontStyle(styles), font = _a[0], fontFamily2 = _a[1], fontSize2 = _a[2];
+          this.ctx.font = font;
+          this.ctx.direction = styles.direction === 1 ? "rtl" : "ltr";
+          this.ctx.textAlign = "left";
+          this.ctx.textBaseline = "alphabetic";
+          _b = this.fontMetrics.getMetrics(fontFamily2, fontSize2), baseline = _b.baseline, middle = _b.middle;
+          paintOrder2 = styles.paintOrder;
+          text.textBounds.forEach(function(text2) {
+            paintOrder2.forEach(function(paintOrderLayer) {
+              switch (paintOrderLayer) {
+                case 0:
+                  _this.ctx.fillStyle = asString(styles.color);
+                  _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
+                  var textShadows = styles.textShadow;
+                  if (textShadows.length && text2.text.trim().length) {
+                    textShadows.slice(0).reverse().forEach(function(textShadow2) {
+                      _this.ctx.shadowColor = asString(textShadow2.color);
+                      _this.ctx.shadowOffsetX = textShadow2.offsetX.number * _this.options.scale;
+                      _this.ctx.shadowOffsetY = textShadow2.offsetY.number * _this.options.scale;
+                      _this.ctx.shadowBlur = textShadow2.blur.number;
+                      _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
+                    });
+                    _this.ctx.shadowColor = "";
+                    _this.ctx.shadowOffsetX = 0;
+                    _this.ctx.shadowOffsetY = 0;
+                    _this.ctx.shadowBlur = 0;
+                  }
+                  if (styles.textDecorationLine.length) {
+                    _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
+                    styles.textDecorationLine.forEach(function(textDecorationLine2) {
+                      switch (textDecorationLine2) {
+                        case 1:
+                          _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top + baseline), text2.bounds.width, 1);
+                          break;
+                        case 2:
+                          _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top), text2.bounds.width, 1);
+                          break;
+                        case 3:
+                          _this.ctx.fillRect(text2.bounds.left, Math.ceil(text2.bounds.top + middle), text2.bounds.width, 1);
+                          break;
+                      }
+                    });
+                  }
+                  break;
+                case 1:
+                  if (styles.webkitTextStrokeWidth && text2.text.trim().length) {
+                    _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);
+                    _this.ctx.lineWidth = styles.webkitTextStrokeWidth;
+                    _this.ctx.lineJoin = !!window.chrome ? "miter" : "round";
+                    _this.ctx.strokeText(text2.text, text2.bounds.left, text2.bounds.top + baseline);
+                  }
+                  _this.ctx.strokeStyle = "";
+                  _this.ctx.lineWidth = 0;
+                  _this.ctx.lineJoin = "miter";
+                  break;
+              }
+            });
+          });
+          return [
+            2
+            /*return*/
+          ];
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderReplacedElement = function(container, curves, image2) {
+      if (image2 && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
+        var box = contentBox(container);
+        var path = calculatePaddingBoxPath(curves);
+        this.path(path);
+        this.ctx.save();
+        this.ctx.clip();
+        this.ctx.drawImage(image2, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
+        this.ctx.restore();
+      }
+    };
+    CanvasRenderer2.prototype.renderNodeContent = function(paint) {
+      return __awaiter(this, void 0, void 0, function() {
+        var container, curves, styles, _i, _a, child, image2, image2, iframeRenderer, canvas, size, _b, fontFamily2, fontSize2, baseline, bounds, x, textBounds, img, image2, url, fontFamily2, bounds;
+        return __generator(this, function(_c) {
+          switch (_c.label) {
+            case 0:
+              this.applyEffects(paint.getEffects(
+                4
+                /* CONTENT */
+              ));
+              container = paint.container;
+              curves = paint.curves;
+              styles = container.styles;
+              _i = 0, _a = container.textNodes;
+              _c.label = 1;
+            case 1:
+              if (!(_i < _a.length)) return [3, 4];
+              child = _a[_i];
+              return [4, this.renderTextNode(child, styles)];
+            case 2:
+              _c.sent();
+              _c.label = 3;
+            case 3:
+              _i++;
+              return [3, 1];
+            case 4:
+              if (!(container instanceof ImageElementContainer)) return [3, 8];
+              _c.label = 5;
+            case 5:
+              _c.trys.push([5, 7, , 8]);
+              return [4, this.context.cache.match(container.src)];
+            case 6:
+              image2 = _c.sent();
+              this.renderReplacedElement(container, curves, image2);
+              return [3, 8];
+            case 7:
+              _c.sent();
+              this.context.logger.error("Error loading image " + container.src);
+              return [3, 8];
+            case 8:
+              if (container instanceof CanvasElementContainer) {
+                this.renderReplacedElement(container, curves, container.canvas);
+              }
+              if (!(container instanceof SVGElementContainer)) return [3, 12];
+              _c.label = 9;
+            case 9:
+              _c.trys.push([9, 11, , 12]);
+              return [4, this.context.cache.match(container.svg)];
+            case 10:
+              image2 = _c.sent();
+              this.renderReplacedElement(container, curves, image2);
+              return [3, 12];
+            case 11:
+              _c.sent();
+              this.context.logger.error("Error loading svg " + container.svg.substring(0, 255));
+              return [3, 12];
+            case 12:
+              if (!(container instanceof IFrameElementContainer && container.tree)) return [3, 14];
+              iframeRenderer = new CanvasRenderer2(this.context, {
+                scale: this.options.scale,
+                backgroundColor: container.backgroundColor,
+                x: 0,
+                y: 0,
+                width: container.width,
+                height: container.height
+              });
+              return [4, iframeRenderer.render(container.tree)];
+            case 13:
+              canvas = _c.sent();
+              if (container.width && container.height) {
+                this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
+              }
+              _c.label = 14;
+            case 14:
+              if (container instanceof InputElementContainer) {
+                size = Math.min(container.bounds.width, container.bounds.height);
+                if (container.type === CHECKBOX) {
+                  if (container.checked) {
+                    this.ctx.save();
+                    this.path([
+                      new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),
+                      new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),
+                      new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),
+                      new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),
+                      new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),
+                      new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),
+                      new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)
+                    ]);
+                    this.ctx.fillStyle = asString(INPUT_COLOR);
+                    this.ctx.fill();
+                    this.ctx.restore();
+                  }
+                } else if (container.type === RADIO) {
+                  if (container.checked) {
+                    this.ctx.save();
+                    this.ctx.beginPath();
+                    this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);
+                    this.ctx.fillStyle = asString(INPUT_COLOR);
+                    this.ctx.fill();
+                    this.ctx.restore();
+                  }
+                }
+              }
+              if (isTextInputElement(container) && container.value.length) {
+                _b = this.createFontStyle(styles), fontFamily2 = _b[0], fontSize2 = _b[1];
+                baseline = this.fontMetrics.getMetrics(fontFamily2, fontSize2).baseline;
+                this.ctx.font = fontFamily2;
+                this.ctx.fillStyle = asString(styles.color);
+                this.ctx.textBaseline = "alphabetic";
+                this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
+                bounds = contentBox(container);
+                x = 0;
+                switch (container.styles.textAlign) {
+                  case 1:
+                    x += bounds.width / 2;
+                    break;
+                  case 2:
+                    x += bounds.width;
+                    break;
+                }
+                textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);
+                this.ctx.save();
+                this.path([
+                  new Vector(bounds.left, bounds.top),
+                  new Vector(bounds.left + bounds.width, bounds.top),
+                  new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
+                  new Vector(bounds.left, bounds.top + bounds.height)
+                ]);
+                this.ctx.clip();
+                this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);
+                this.ctx.restore();
+                this.ctx.textBaseline = "alphabetic";
+                this.ctx.textAlign = "left";
+              }
+              if (!contains(
+                container.styles.display,
+                2048
+                /* LIST_ITEM */
+              )) return [3, 20];
+              if (!(container.styles.listStyleImage !== null)) return [3, 19];
+              img = container.styles.listStyleImage;
+              if (!(img.type === 0)) return [3, 18];
+              image2 = void 0;
+              url = img.url;
+              _c.label = 15;
+            case 15:
+              _c.trys.push([15, 17, , 18]);
+              return [4, this.context.cache.match(url)];
+            case 16:
+              image2 = _c.sent();
+              this.ctx.drawImage(image2, container.bounds.left - (image2.width + 10), container.bounds.top);
+              return [3, 18];
+            case 17:
+              _c.sent();
+              this.context.logger.error("Error loading list-style-image " + url);
+              return [3, 18];
+            case 18:
+              return [3, 20];
+            case 19:
+              if (paint.listValue && container.styles.listStyleType !== -1) {
+                fontFamily2 = this.createFontStyle(styles)[0];
+                this.ctx.font = fontFamily2;
+                this.ctx.fillStyle = asString(styles.color);
+                this.ctx.textBaseline = "middle";
+                this.ctx.textAlign = "right";
+                bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
+                this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);
+                this.ctx.textBaseline = "bottom";
+                this.ctx.textAlign = "left";
+              }
+              _c.label = 20;
+            case 20:
+              return [
+                2
+                /*return*/
+              ];
+          }
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderStackContent = function(stack) {
+      return __awaiter(this, void 0, void 0, function() {
+        var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
+        return __generator(this, function(_p) {
+          switch (_p.label) {
+            case 0:
+              if (contains(
+                stack.element.container.flags,
+                16
+                /* DEBUG_RENDER */
+              )) {
+                debugger;
+              }
+              return [4, this.renderNodeBackgroundAndBorders(stack.element)];
+            case 1:
+              _p.sent();
+              _i = 0, _a = stack.negativeZIndex;
+              _p.label = 2;
+            case 2:
+              if (!(_i < _a.length)) return [3, 5];
+              child = _a[_i];
+              return [4, this.renderStack(child)];
+            case 3:
+              _p.sent();
+              _p.label = 4;
+            case 4:
+              _i++;
+              return [3, 2];
+            case 5:
+              return [4, this.renderNodeContent(stack.element)];
+            case 6:
+              _p.sent();
+              _b = 0, _c = stack.nonInlineLevel;
+              _p.label = 7;
+            case 7:
+              if (!(_b < _c.length)) return [3, 10];
+              child = _c[_b];
+              return [4, this.renderNode(child)];
+            case 8:
+              _p.sent();
+              _p.label = 9;
+            case 9:
+              _b++;
+              return [3, 7];
+            case 10:
+              _d = 0, _e = stack.nonPositionedFloats;
+              _p.label = 11;
+            case 11:
+              if (!(_d < _e.length)) return [3, 14];
+              child = _e[_d];
+              return [4, this.renderStack(child)];
+            case 12:
+              _p.sent();
+              _p.label = 13;
+            case 13:
+              _d++;
+              return [3, 11];
+            case 14:
+              _f = 0, _g = stack.nonPositionedInlineLevel;
+              _p.label = 15;
+            case 15:
+              if (!(_f < _g.length)) return [3, 18];
+              child = _g[_f];
+              return [4, this.renderStack(child)];
+            case 16:
+              _p.sent();
+              _p.label = 17;
+            case 17:
+              _f++;
+              return [3, 15];
+            case 18:
+              _h = 0, _j = stack.inlineLevel;
+              _p.label = 19;
+            case 19:
+              if (!(_h < _j.length)) return [3, 22];
+              child = _j[_h];
+              return [4, this.renderNode(child)];
+            case 20:
+              _p.sent();
+              _p.label = 21;
+            case 21:
+              _h++;
+              return [3, 19];
+            case 22:
+              _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;
+              _p.label = 23;
+            case 23:
+              if (!(_k < _l.length)) return [3, 26];
+              child = _l[_k];
+              return [4, this.renderStack(child)];
+            case 24:
+              _p.sent();
+              _p.label = 25;
+            case 25:
+              _k++;
+              return [3, 23];
+            case 26:
+              _m = 0, _o = stack.positiveZIndex;
+              _p.label = 27;
+            case 27:
+              if (!(_m < _o.length)) return [3, 30];
+              child = _o[_m];
+              return [4, this.renderStack(child)];
+            case 28:
+              _p.sent();
+              _p.label = 29;
+            case 29:
+              _m++;
+              return [3, 27];
+            case 30:
+              return [
+                2
+                /*return*/
+              ];
+          }
+        });
+      });
+    };
+    CanvasRenderer2.prototype.mask = function(paths) {
+      this.ctx.beginPath();
+      this.ctx.moveTo(0, 0);
+      this.ctx.lineTo(this.canvas.width, 0);
+      this.ctx.lineTo(this.canvas.width, this.canvas.height);
+      this.ctx.lineTo(0, this.canvas.height);
+      this.ctx.lineTo(0, 0);
+      this.formatPath(paths.slice(0).reverse());
+      this.ctx.closePath();
+    };
+    CanvasRenderer2.prototype.path = function(paths) {
+      this.ctx.beginPath();
+      this.formatPath(paths);
+      this.ctx.closePath();
+    };
+    CanvasRenderer2.prototype.formatPath = function(paths) {
+      var _this = this;
+      paths.forEach(function(point, index) {
+        var start = isBezierCurve(point) ? point.start : point;
+        if (index === 0) {
+          _this.ctx.moveTo(start.x, start.y);
+        } else {
+          _this.ctx.lineTo(start.x, start.y);
+        }
+        if (isBezierCurve(point)) {
+          _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
+        }
+      });
+    };
+    CanvasRenderer2.prototype.renderRepeat = function(path, pattern, offsetX, offsetY) {
+      this.path(path);
+      this.ctx.fillStyle = pattern;
+      this.ctx.translate(offsetX, offsetY);
+      this.ctx.fill();
+      this.ctx.translate(-offsetX, -offsetY);
+    };
+    CanvasRenderer2.prototype.resizeImage = function(image2, width, height) {
+      var _a;
+      if (image2.width === width && image2.height === height) {
+        return image2;
+      }
+      var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;
+      var canvas = ownerDocument.createElement("canvas");
+      canvas.width = Math.max(1, width);
+      canvas.height = Math.max(1, height);
+      var ctx = canvas.getContext("2d");
+      ctx.drawImage(image2, 0, 0, image2.width, image2.height, 0, 0, width, height);
+      return canvas;
+    };
+    CanvasRenderer2.prototype.renderBackgroundImage = function(container) {
+      return __awaiter(this, void 0, void 0, function() {
+        var index, _loop_1, this_1, _i, _a, backgroundImage2;
+        return __generator(this, function(_b) {
+          switch (_b.label) {
+            case 0:
+              index = container.styles.backgroundImage.length - 1;
+              _loop_1 = function(backgroundImage3) {
+                var image2, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position2, x, y, _g, rx, ry, radialGradient_1, midX, midY, f2, invF;
+                return __generator(this, function(_h) {
+                  switch (_h.label) {
+                    case 0:
+                      if (!(backgroundImage3.type === 0)) return [3, 5];
+                      image2 = void 0;
+                      url = backgroundImage3.url;
+                      _h.label = 1;
+                    case 1:
+                      _h.trys.push([1, 3, , 4]);
+                      return [4, this_1.context.cache.match(url)];
+                    case 2:
+                      image2 = _h.sent();
+                      return [3, 4];
+                    case 3:
+                      _h.sent();
+                      this_1.context.logger.error("Error loading background-image " + url);
+                      return [3, 4];
+                    case 4:
+                      if (image2) {
+                        _c = calculateBackgroundRendering(container, index, [
+                          image2.width,
+                          image2.height,
+                          image2.width / image2.height
+                        ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];
+                        pattern = this_1.ctx.createPattern(this_1.resizeImage(image2, width, height), "repeat");
+                        this_1.renderRepeat(path, pattern, x, y);
+                      }
+                      return [3, 6];
+                    case 5:
+                      if (isLinearGradient(backgroundImage3)) {
+                        _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];
+                        _e = calculateGradientDirection(backgroundImage3.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];
+                        canvas = document.createElement("canvas");
+                        canvas.width = width;
+                        canvas.height = height;
+                        ctx = canvas.getContext("2d");
+                        gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);
+                        processColorStops(backgroundImage3.stops, lineLength).forEach(function(colorStop) {
+                          return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
+                        });
+                        ctx.fillStyle = gradient_1;
+                        ctx.fillRect(0, 0, width, height);
+                        if (width > 0 && height > 0) {
+                          pattern = this_1.ctx.createPattern(canvas, "repeat");
+                          this_1.renderRepeat(path, pattern, x, y);
+                        }
+                      } else if (isRadialGradient(backgroundImage3)) {
+                        _f = calculateBackgroundRendering(container, index, [
+                          null,
+                          null,
+                          null
+                        ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];
+                        position2 = backgroundImage3.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage3.position;
+                        x = getAbsoluteValue(position2[0], width);
+                        y = getAbsoluteValue(position2[position2.length - 1], height);
+                        _g = calculateRadius(backgroundImage3, x, y, width, height), rx = _g[0], ry = _g[1];
+                        if (rx > 0 && ry > 0) {
+                          radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);
+                          processColorStops(backgroundImage3.stops, rx * 2).forEach(function(colorStop) {
+                            return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
+                          });
+                          this_1.path(path);
+                          this_1.ctx.fillStyle = radialGradient_1;
+                          if (rx !== ry) {
+                            midX = container.bounds.left + 0.5 * container.bounds.width;
+                            midY = container.bounds.top + 0.5 * container.bounds.height;
+                            f2 = ry / rx;
+                            invF = 1 / f2;
+                            this_1.ctx.save();
+                            this_1.ctx.translate(midX, midY);
+                            this_1.ctx.transform(1, 0, 0, f2, 0, 0);
+                            this_1.ctx.translate(-midX, -midY);
+                            this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);
+                            this_1.ctx.restore();
+                          } else {
+                            this_1.ctx.fill();
+                          }
+                        }
+                      }
+                      _h.label = 6;
+                    case 6:
+                      index--;
+                      return [
+                        2
+                        /*return*/
+                      ];
+                  }
+                });
+              };
+              this_1 = this;
+              _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();
+              _b.label = 1;
+            case 1:
+              if (!(_i < _a.length)) return [3, 4];
+              backgroundImage2 = _a[_i];
+              return [5, _loop_1(backgroundImage2)];
+            case 2:
+              _b.sent();
+              _b.label = 3;
+            case 3:
+              _i++;
+              return [3, 1];
+            case 4:
+              return [
+                2
+                /*return*/
+              ];
+          }
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderSolidBorder = function(color2, side, curvePoints) {
+      return __awaiter(this, void 0, void 0, function() {
+        return __generator(this, function(_a) {
+          this.path(parsePathForBorder(curvePoints, side));
+          this.ctx.fillStyle = asString(color2);
+          this.ctx.fill();
+          return [
+            2
+            /*return*/
+          ];
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderDoubleBorder = function(color2, width, side, curvePoints) {
+      return __awaiter(this, void 0, void 0, function() {
+        var outerPaths, innerPaths;
+        return __generator(this, function(_a) {
+          switch (_a.label) {
+            case 0:
+              if (!(width < 3)) return [3, 2];
+              return [4, this.renderSolidBorder(color2, side, curvePoints)];
+            case 1:
+              _a.sent();
+              return [
+                2
+                /*return*/
+              ];
+            case 2:
+              outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);
+              this.path(outerPaths);
+              this.ctx.fillStyle = asString(color2);
+              this.ctx.fill();
+              innerPaths = parsePathForBorderDoubleInner(curvePoints, side);
+              this.path(innerPaths);
+              this.ctx.fill();
+              return [
+                2
+                /*return*/
+              ];
+          }
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function(paint) {
+      return __awaiter(this, void 0, void 0, function() {
+        var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
+        var _this = this;
+        return __generator(this, function(_a) {
+          switch (_a.label) {
+            case 0:
+              this.applyEffects(paint.getEffects(
+                2
+                /* BACKGROUND_BORDERS */
+              ));
+              styles = paint.container.styles;
+              hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
+              borders = [
+                { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },
+                { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },
+                { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },
+                { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }
+              ];
+              backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
+              if (!(hasBackground || styles.boxShadow.length)) return [3, 2];
+              this.ctx.save();
+              this.path(backgroundPaintingArea);
+              this.ctx.clip();
+              if (!isTransparent(styles.backgroundColor)) {
+                this.ctx.fillStyle = asString(styles.backgroundColor);
+                this.ctx.fill();
+              }
+              return [4, this.renderBackgroundImage(paint.container)];
+            case 1:
+              _a.sent();
+              this.ctx.restore();
+              styles.boxShadow.slice(0).reverse().forEach(function(shadow) {
+                _this.ctx.save();
+                var borderBoxArea = calculateBorderBoxPath(paint.curves);
+                var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
+                var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
+                if (shadow.inset) {
+                  _this.path(borderBoxArea);
+                  _this.ctx.clip();
+                  _this.mask(shadowPaintingArea);
+                } else {
+                  _this.mask(borderBoxArea);
+                  _this.ctx.clip();
+                  _this.path(shadowPaintingArea);
+                }
+                _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
+                _this.ctx.shadowOffsetY = shadow.offsetY.number;
+                _this.ctx.shadowColor = asString(shadow.color);
+                _this.ctx.shadowBlur = shadow.blur.number;
+                _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : "rgba(0,0,0,1)";
+                _this.ctx.fill();
+                _this.ctx.restore();
+              });
+              _a.label = 2;
+            case 2:
+              side = 0;
+              _i = 0, borders_1 = borders;
+              _a.label = 3;
+            case 3:
+              if (!(_i < borders_1.length)) return [3, 13];
+              border = borders_1[_i];
+              if (!(border.style !== 0 && !isTransparent(border.color) && border.width > 0)) return [3, 11];
+              if (!(border.style === 2)) return [3, 5];
+              return [4, this.renderDashedDottedBorder(
+                border.color,
+                border.width,
+                side,
+                paint.curves,
+                2
+                /* DASHED */
+              )];
+            case 4:
+              _a.sent();
+              return [3, 11];
+            case 5:
+              if (!(border.style === 3)) return [3, 7];
+              return [4, this.renderDashedDottedBorder(
+                border.color,
+                border.width,
+                side,
+                paint.curves,
+                3
+                /* DOTTED */
+              )];
+            case 6:
+              _a.sent();
+              return [3, 11];
+            case 7:
+              if (!(border.style === 4)) return [3, 9];
+              return [4, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];
+            case 8:
+              _a.sent();
+              return [3, 11];
+            case 9:
+              return [4, this.renderSolidBorder(border.color, side, paint.curves)];
+            case 10:
+              _a.sent();
+              _a.label = 11;
+            case 11:
+              side++;
+              _a.label = 12;
+            case 12:
+              _i++;
+              return [3, 3];
+            case 13:
+              return [
+                2
+                /*return*/
+              ];
+          }
+        });
+      });
+    };
+    CanvasRenderer2.prototype.renderDashedDottedBorder = function(color2, width, side, curvePoints, style) {
+      return __awaiter(this, void 0, void 0, function() {
+        var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;
+        return __generator(this, function(_a) {
+          this.ctx.save();
+          strokePaths = parsePathForBorderStroke(curvePoints, side);
+          boxPaths = parsePathForBorder(curvePoints, side);
+          if (style === 2) {
+            this.path(boxPaths);
+            this.ctx.clip();
+          }
+          if (isBezierCurve(boxPaths[0])) {
+            startX = boxPaths[0].start.x;
+            startY = boxPaths[0].start.y;
+          } else {
+            startX = boxPaths[0].x;
+            startY = boxPaths[0].y;
+          }
+          if (isBezierCurve(boxPaths[1])) {
+            endX = boxPaths[1].end.x;
+            endY = boxPaths[1].end.y;
+          } else {
+            endX = boxPaths[1].x;
+            endY = boxPaths[1].y;
+          }
+          if (side === 0 || side === 2) {
+            length = Math.abs(startX - endX);
+          } else {
+            length = Math.abs(startY - endY);
+          }
+          this.ctx.beginPath();
+          if (style === 3) {
+            this.formatPath(strokePaths);
+          } else {
+            this.formatPath(boxPaths.slice(0, 2));
+          }
+          dashLength = width < 3 ? width * 3 : width * 2;
+          spaceLength = width < 3 ? width * 2 : width;
+          if (style === 3) {
+            dashLength = width;
+            spaceLength = width;
+          }
+          useLineDash = true;
+          if (length <= dashLength * 2) {
+            useLineDash = false;
+          } else if (length <= dashLength * 2 + spaceLength) {
+            multiplier = length / (2 * dashLength + spaceLength);
+            dashLength *= multiplier;
+            spaceLength *= multiplier;
+          } else {
+            numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));
+            minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);
+            maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;
+            spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace;
+          }
+          if (useLineDash) {
+            if (style === 3) {
+              this.ctx.setLineDash([0, dashLength + spaceLength]);
+            } else {
+              this.ctx.setLineDash([dashLength, spaceLength]);
+            }
+          }
+          if (style === 3) {
+            this.ctx.lineCap = "round";
+            this.ctx.lineWidth = width;
+          } else {
+            this.ctx.lineWidth = width * 2 + 1.1;
+          }
+          this.ctx.strokeStyle = asString(color2);
+          this.ctx.stroke();
+          this.ctx.setLineDash([]);
+          if (style === 2) {
+            if (isBezierCurve(boxPaths[0])) {
+              path1 = boxPaths[3];
+              path2 = boxPaths[0];
+              this.ctx.beginPath();
+              this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
+              this.ctx.stroke();
+            }
+            if (isBezierCurve(boxPaths[1])) {
+              path1 = boxPaths[1];
+              path2 = boxPaths[2];
+              this.ctx.beginPath();
+              this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
+              this.ctx.stroke();
+            }
+          }
+          this.ctx.restore();
+          return [
+            2
+            /*return*/
+          ];
+        });
+      });
+    };
+    CanvasRenderer2.prototype.render = function(element) {
+      return __awaiter(this, void 0, void 0, function() {
+        var stack;
+        return __generator(this, function(_a) {
+          switch (_a.label) {
+            case 0:
+              if (this.options.backgroundColor) {
+                this.ctx.fillStyle = asString(this.options.backgroundColor);
+                this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);
+              }
+              stack = parseStackingContexts(element);
+              return [4, this.renderStack(stack)];
+            case 1:
+              _a.sent();
+              this.applyEffects([]);
+              return [2, this.canvas];
+          }
+        });
+      });
+    };
+    return CanvasRenderer2;
+  }(Renderer)
+);
+var isTextInputElement = function(container) {
+  if (container instanceof TextareaElementContainer) {
+    return true;
+  } else if (container instanceof SelectElementContainer) {
+    return true;
+  } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {
+    return true;
+  }
+  return false;
+};
+var calculateBackgroundCurvedPaintingArea = function(clip, curves) {
+  switch (clip) {
+    case 0:
+      return calculateBorderBoxPath(curves);
+    case 2:
+      return calculateContentBoxPath(curves);
+    case 1:
+    default:
+      return calculatePaddingBoxPath(curves);
+  }
+};
+var canvasTextAlign = function(textAlign2) {
+  switch (textAlign2) {
+    case 1:
+      return "center";
+    case 2:
+      return "right";
+    case 0:
+    default:
+      return "left";
+  }
+};
+var iOSBrokenFonts = ["-apple-system", "system-ui"];
+var fixIOSSystemFonts = function(fontFamilies) {
+  return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function(fontFamily2) {
+    return iOSBrokenFonts.indexOf(fontFamily2) === -1;
+  }) : fontFamilies;
+};
+var ForeignObjectRenderer = (
+  /** @class */
+  function(_super) {
+    __extends(ForeignObjectRenderer2, _super);
+    function ForeignObjectRenderer2(context, options) {
+      var _this = _super.call(this, context, options) || this;
+      _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
+      _this.ctx = _this.canvas.getContext("2d");
+      _this.options = options;
+      _this.canvas.width = Math.floor(options.width * options.scale);
+      _this.canvas.height = Math.floor(options.height * options.scale);
+      _this.canvas.style.width = options.width + "px";
+      _this.canvas.style.height = options.height + "px";
+      _this.ctx.scale(_this.options.scale, _this.options.scale);
+      _this.ctx.translate(-options.x, -options.y);
+      _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
+      return _this;
+    }
+    ForeignObjectRenderer2.prototype.render = function(element) {
+      return __awaiter(this, void 0, void 0, function() {
+        var svg, img;
+        return __generator(this, function(_a) {
+          switch (_a.label) {
+            case 0:
+              svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);
+              return [4, loadSerializedSVG(svg)];
+            case 1:
+              img = _a.sent();
+              if (this.options.backgroundColor) {
+                this.ctx.fillStyle = asString(this.options.backgroundColor);
+                this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);
+              }
+              this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);
+              return [2, this.canvas];
+          }
+        });
+      });
+    };
+    return ForeignObjectRenderer2;
+  }(Renderer)
+);
+var loadSerializedSVG = function(svg) {
+  return new Promise(function(resolve, reject) {
+    var img = new Image();
+    img.onload = function() {
+      resolve(img);
+    };
+    img.onerror = reject;
+    img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
+  });
+};
+var Logger = (
+  /** @class */
+  function() {
+    function Logger2(_a) {
+      var id = _a.id, enabled = _a.enabled;
+      this.id = id;
+      this.enabled = enabled;
+      this.start = Date.now();
+    }
+    Logger2.prototype.debug = function() {
+      var args = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        args[_i] = arguments[_i];
+      }
+      if (this.enabled) {
+        if (typeof window !== "undefined" && window.console && typeof console.debug === "function") {
+          console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+        } else {
+          this.info.apply(this, args);
+        }
+      }
+    };
+    Logger2.prototype.getTime = function() {
+      return Date.now() - this.start;
+    };
+    Logger2.prototype.info = function() {
+      var args = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        args[_i] = arguments[_i];
+      }
+      if (this.enabled) {
+        if (typeof window !== "undefined" && window.console && typeof console.info === "function") {
+          console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+        }
+      }
+    };
+    Logger2.prototype.warn = function() {
+      var args = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        args[_i] = arguments[_i];
+      }
+      if (this.enabled) {
+        if (typeof window !== "undefined" && window.console && typeof console.warn === "function") {
+          console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+        } else {
+          this.info.apply(this, args);
+        }
+      }
+    };
+    Logger2.prototype.error = function() {
+      var args = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        args[_i] = arguments[_i];
+      }
+      if (this.enabled) {
+        if (typeof window !== "undefined" && window.console && typeof console.error === "function") {
+          console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+        } else {
+          this.info.apply(this, args);
+        }
+      }
+    };
+    Logger2.instances = {};
+    return Logger2;
+  }()
+);
+var Context = (
+  /** @class */
+  function() {
+    function Context2(options, windowBounds) {
+      var _a;
+      this.windowBounds = windowBounds;
+      this.instanceName = "#" + Context2.instanceCount++;
+      this.logger = new Logger({ id: this.instanceName, enabled: options.logging });
+      this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);
+    }
+    Context2.instanceCount = 1;
+    return Context2;
+  }()
+);
+var html2canvas = function(element, options) {
+  if (options === void 0) {
+    options = {};
+  }
+  return renderElement(element, options);
+};
+if (typeof window !== "undefined") {
+  CacheStorage.setContext(window);
+}
+var renderElement = function(element, opts) {
+  return __awaiter(void 0, void 0, void 0, function() {
+    var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor2, renderOptions, canvas, renderer, root, renderer;
+    var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
+    return __generator(this, function(_u) {
+      switch (_u.label) {
+        case 0:
+          if (!element || typeof element !== "object") {
+            return [2, Promise.reject("Invalid element provided as first argument")];
+          }
+          ownerDocument = element.ownerDocument;
+          if (!ownerDocument) {
+            throw new Error("Element is not attached to a Document");
+          }
+          defaultView = ownerDocument.defaultView;
+          if (!defaultView) {
+            throw new Error("Document is not attached to a Window");
+          }
+          resourceOptions = {
+            allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,
+            imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15e3,
+            proxy: opts.proxy,
+            useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false
+          };
+          contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);
+          windowOptions = {
+            windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,
+            windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,
+            scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,
+            scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset
+          };
+          windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
+          context = new Context(contextOptions, windowBounds);
+          foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;
+          cloneOptions = {
+            allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
+            onclone: opts.onclone,
+            ignoreElements: opts.ignoreElements,
+            inlineImages: foreignObjectRendering,
+            copyStyles: foreignObjectRendering
+          };
+          context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top);
+          documentCloner = new DocumentCloner(context, element, cloneOptions);
+          clonedElement = documentCloner.clonedReferenceElement;
+          if (!clonedElement) {
+            return [2, Promise.reject("Unable to find element in cloned iframe")];
+          }
+          return [4, documentCloner.toIFrame(ownerDocument, windowBounds)];
+        case 1:
+          container = _u.sent();
+          _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;
+          backgroundColor2 = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
+          renderOptions = {
+            canvas: opts.canvas,
+            backgroundColor: backgroundColor2,
+            scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,
+            x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,
+            y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
+            width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
+            height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)
+          };
+          if (!foreignObjectRendering) return [3, 3];
+          context.logger.debug("Document cloned, using foreign object rendering");
+          renderer = new ForeignObjectRenderer(context, renderOptions);
+          return [4, renderer.render(clonedElement)];
+        case 2:
+          canvas = _u.sent();
+          return [3, 5];
+        case 3:
+          context.logger.debug("Document cloned, element located at " + left + "," + top + " with size " + width + "x" + height + " using computed rendering");
+          context.logger.debug("Starting DOM parsing");
+          root = parseTree(context, clonedElement);
+          if (backgroundColor2 === root.styles.backgroundColor) {
+            root.styles.backgroundColor = COLORS.TRANSPARENT;
+          }
+          context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height);
+          renderer = new CanvasRenderer(context, renderOptions);
+          return [4, renderer.render(root)];
+        case 4:
+          canvas = _u.sent();
+          _u.label = 5;
+        case 5:
+          if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {
+            if (!DocumentCloner.destroy(container)) {
+              context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
+            }
+          }
+          context.logger.debug("Finished rendering");
+          return [2, canvas];
+      }
+    });
+  });
+};
+var parseBackgroundColor = function(context, element, backgroundColorOverride) {
+  var ownerDocument = element.ownerDocument;
+  var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT;
+  var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT;
+  var defaultBackgroundColor = typeof backgroundColorOverride === "string" ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 4294967295;
+  return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor;
+};
+var html2canvas_esm_default = html2canvas;
+export {
+  html2canvas_esm_default as default
+};
+/*! Bundled license information:
+
+html2canvas/dist/html2canvas.esm.js:
+  (*!
+   * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
+   * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
+   * Released under MIT License
+   *)
+  (*! *****************************************************************************
+  Copyright (c) Microsoft Corporation.
+  
+  Permission to use, copy, modify, and/or distribute this software for any
+  purpose with or without fee is hereby granted.
+  
+  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+  PERFORMANCE OF THIS SOFTWARE.
+  ***************************************************************************** *)
+*/
+//# sourceMappingURL=html2canvas.esm-WKGZI7AQ.js.map
Index: imaps-frontend/node_modules/.vite/deps/html2canvas.esm-WKGZI7AQ.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/html2canvas.esm-WKGZI7AQ.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/html2canvas.esm-WKGZI7AQ.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": ["../../html2canvas/node_modules/tslib/tslib.es6.js", "../../src/css/layout/bounds.ts", "../../html2canvas/node_modules/src/Util.ts", "../../html2canvas/node_modules/css-line-break/node_modules/src/Util.ts", "../../html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts", "../../html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts", "../../html2canvas/node_modules/src/linebreak-trie.ts", "../../html2canvas/node_modules/src/LineBreak.ts", "../../src/css/syntax/tokenizer.ts", "../../src/css/syntax/parser.ts", "../../src/css/types/length.ts", "../../src/css/types/length-percentage.ts", "../../src/css/types/angle.ts", "../../src/css/types/color.ts", "../../src/css/property-descriptors/background-clip.ts", "../../src/css/property-descriptors/background-color.ts", "../../src/css/types/functions/gradient.ts", "../../src/css/types/functions/linear-gradient.ts", "../../src/css/types/functions/-prefix-linear-gradient.ts", "../../src/css/types/functions/-webkit-gradient.ts", "../../src/css/types/functions/radial-gradient.ts", "../../src/css/types/functions/-prefix-radial-gradient.ts", "../../src/css/types/image.ts", "../../src/css/property-descriptors/background-image.ts", "../../src/css/property-descriptors/background-origin.ts", "../../src/css/property-descriptors/background-position.ts", "../../src/css/property-descriptors/background-repeat.ts", "../../src/css/property-descriptors/background-size.ts", "../../src/css/property-descriptors/border-color.ts", "../../src/css/property-descriptors/border-radius.ts", "../../src/css/property-descriptors/border-style.ts", "../../src/css/property-descriptors/border-width.ts", "../../src/css/property-descriptors/color.ts", "../../src/css/property-descriptors/direction.ts", "../../src/css/property-descriptors/display.ts", "../../src/css/property-descriptors/float.ts", "../../src/css/property-descriptors/letter-spacing.ts", "../../src/css/property-descriptors/line-break.ts", "../../src/css/property-descriptors/line-height.ts", "../../src/css/property-descriptors/list-style-image.ts", "../../src/css/property-descriptors/list-style-position.ts", "../../src/css/property-descriptors/list-style-type.ts", "../../src/css/property-descriptors/margin.ts", "../../src/css/property-descriptors/overflow.ts", "../../src/css/property-descriptors/overflow-wrap.ts", "../../src/css/property-descriptors/padding.ts", "../../src/css/property-descriptors/text-align.ts", "../../src/css/property-descriptors/position.ts", "../../src/css/property-descriptors/text-shadow.ts", "../../src/css/property-descriptors/text-transform.ts", "../../src/css/property-descriptors/transform.ts", "../../src/css/property-descriptors/transform-origin.ts", "../../src/css/property-descriptors/visibility.ts", "../../src/css/property-descriptors/word-break.ts", "../../src/css/property-descriptors/z-index.ts", "../../src/css/types/time.ts", "../../src/css/property-descriptors/opacity.ts", "../../src/css/property-descriptors/text-decoration-color.ts", "../../src/css/property-descriptors/text-decoration-line.ts", "../../src/css/property-descriptors/font-family.ts", "../../src/css/property-descriptors/font-size.ts", "../../src/css/property-descriptors/font-weight.ts", "../../src/css/property-descriptors/font-variant.ts", "../../src/css/property-descriptors/font-style.ts", "../../src/core/bitwise.ts", "../../src/css/property-descriptors/content.ts", "../../src/css/property-descriptors/counter-increment.ts", "../../src/css/property-descriptors/counter-reset.ts", "../../src/css/property-descriptors/duration.ts", "../../src/css/property-descriptors/quotes.ts", "../../src/css/property-descriptors/box-shadow.ts", "../../src/css/property-descriptors/paint-order.ts", "../../src/css/property-descriptors/webkit-text-stroke-color.ts", "../../src/css/property-descriptors/webkit-text-stroke-width.ts", "../../src/css/index.ts", "../../src/core/debugger.ts", "../../src/dom/element-container.ts", "../../html2canvas/node_modules/src/grapheme-break-trie.ts", "../../html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts", "../../html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts", "../../html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts", "../../html2canvas/node_modules/src/GraphemeBreak.ts", "../../src/core/features.ts", "../../src/css/layout/text.ts", "../../src/dom/text-container.ts", "../../src/dom/replaced-elements/image-element-container.ts", "../../src/dom/replaced-elements/canvas-element-container.ts", "../../src/dom/replaced-elements/svg-element-container.ts", "../../src/dom/elements/li-element-container.ts", "../../src/dom/elements/ol-element-container.ts", "../../src/dom/replaced-elements/input-element-container.ts", "../../src/dom/elements/select-element-container.ts", "../../src/dom/elements/textarea-element-container.ts", "../../src/dom/replaced-elements/iframe-element-container.ts", "../../src/dom/node-parser.ts", "../../src/css/types/functions/counter.ts", "../../src/dom/document-cloner.ts", "../../src/core/cache-storage.ts", "../../src/render/vector.ts", "../../src/render/bezier-curve.ts", "../../src/render/bound-curves.ts", "../../src/render/effects.ts", "../../src/render/path.ts", "../../src/render/stacking-context.ts", "../../src/render/border.ts", "../../src/render/box-sizing.ts", "../../src/render/background.ts", "../../src/core/util.ts", "../../src/render/font-metrics.ts", "../../src/render/renderer.ts", "../../src/render/canvas/canvas-renderer.ts", "../../src/render/canvas/foreignobject-renderer.ts", "../../src/core/logger.ts", "../../src/core/context.ts", "../../src/index.ts"],
+  "sourcesContent": ["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "import {Context} from '../../core/context';\n\nexport class Bounds {\n    constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n    add(x: number, y: number, w: number, h: number): Bounds {\n        return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n    }\n\n    static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n        return new Bounds(\n            clientRect.left + context.windowBounds.left,\n            clientRect.top + context.windowBounds.top,\n            clientRect.width,\n            clientRect.height\n        );\n    }\n\n    static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n        const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n        return domRect\n            ? new Bounds(\n                  domRect.left + context.windowBounds.left,\n                  domRect.top + context.windowBounds.top,\n                  domRect.width,\n                  domRect.height\n              )\n            : Bounds.EMPTY;\n    }\n\n    static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n    return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n    const body = document.body;\n    const documentElement = document.documentElement;\n\n    if (!body || !documentElement) {\n        throw new Error(`Unable to get document size`);\n    }\n    const width = Math.max(\n        Math.max(body.scrollWidth, documentElement.scrollWidth),\n        Math.max(body.offsetWidth, documentElement.offsetWidth),\n        Math.max(body.clientWidth, documentElement.clientWidth)\n    );\n\n    const height = Math.max(\n        Math.max(body.scrollHeight, documentElement.scrollHeight),\n        Math.max(body.offsetHeight, documentElement.offsetHeight),\n        Math.max(body.clientHeight, documentElement.clientHeight)\n    );\n\n    return new Bounds(0, 0, width, height);\n};\n", "export const toCodePoints = (str: string): number[] => {\n    const codePoints = [];\n    let i = 0;\n    const length = str.length;\n    while (i < length) {\n        const value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            const extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            } else {\n                codePoints.push(value);\n                i--;\n            }\n        } else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n    if (String.fromCodePoint) {\n        return String.fromCodePoint(...codePoints);\n    }\n\n    const length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n\n    const codeUnits = [];\n\n    let index = -1;\n    let result = '';\n    while (++index < length) {\n        let codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        } else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode(...codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n", "import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n    const buffer = decode(base64);\n    const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    const headerLength = 24;\n\n    const index = slice16(view16, headerLength / 2, view32[4] / 2);\n    const data =\n        view32[5] === 2\n            ? slice16(view16, (headerLength + view32[4]) / 2)\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n    initialValue: int;\n    errorValue: int;\n    highStart: int;\n    highValueIndex: int;\n    index: Uint16Array | number[];\n    data: Uint32Array | Uint16Array | number[];\n\n    constructor(\n        initialValue: int,\n        errorValue: int,\n        highStart: int,\n        highValueIndex: int,\n        index: Uint16Array | number[],\n        data: Uint32Array | Uint16Array | number[]\n    ) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    get(codePoint: number): number {\n        let ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    }\n}\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n    let bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = '';\n\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    } else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n\n    return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n};\n", "export const base64 =\n    'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n", "'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; //  Cause a line break (after)\nconst CR = 2; //  Cause a line break (after), except between CR and LF\nconst LF = 3; //  Cause a line break (after)\nconst CM = 4; //  Prohibit a line break between the character and the preceding character\nconst NL = 5; //  Cause a line break (after)\nconst SG = 6; //  Do not occur in well-formed text\nconst WJ = 7; //  Prohibit line breaks before and after\nconst ZW = 8; //  Provide a break opportunity\nconst GL = 9; //  Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; //  Provide a line break opportunity before and after the character\nconst BA = 13; //  Generally provide a line break opportunity after the character\nconst BB = 14; //  Generally provide a line break opportunity before the character\nconst HY = 15; //  Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; //   Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; //  Prohibit line breaks before\nconst CP = 18; //  Prohibit line breaks before\nconst EX = 19; //  Prohibit line breaks before\nconst IN = 20; //  Allow only indirect line breaks between pairs\nconst NS = 21; //  Allow only indirect line breaks before\nconst OP = 22; //  Prohibit line breaks after\nconst QU = 23; //  Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; //  Prevent breaks after any and before numeric\nconst NU = 25; //  Form numeric expressions for line breaking purposes\nconst PO = 26; //  Do not break following a numeric expression\nconst PR = 27; //  Do not break in front of a numeric expression\nconst SY = 28; //  Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; //  Treat as NS or ID for strict or normal breaking.\nconst EB = 32; //  Do not break from following Emoji Modifier\nconst EM = 33; //  Do not break from preceding Emoji Base\nconst H2 = 34; //  Form Korean syllable blocks\nconst H3 = 35; //  Form Korean syllable blocks\nconst HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; //  Break before or after; except in some numeric context\nconst JL = 38; //  Form Korean syllable blocks\nconst JV = 39; //  Form Korean syllable blocks\nconst JT = 40; //  Form Korean syllable blocks\nconst RI = 41; //  Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n    BK,\n    CR,\n    LF,\n    CM,\n    NL,\n    SG,\n    WJ,\n    ZW,\n    GL,\n    SP,\n    ZWJ,\n    B2,\n    BA,\n    BB,\n    HY,\n    CB,\n    CL,\n    CP,\n    EX,\n    IN,\n    NS,\n    OP,\n    QU,\n    IS,\n    NU,\n    PO,\n    PR,\n    SY,\n    AI,\n    AL,\n    CJ,\n    EB,\n    EM,\n    H2,\n    H3,\n    HL,\n    ID,\n    JL,\n    JV,\n    JT,\n    RI,\n    SA,\n    XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n    codePoints: number[],\n    lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n    const types: number[] = [];\n    const indices: number[] = [];\n    const categories: boolean[] = [];\n    codePoints.forEach((codePoint, index) => {\n        let classType = UnicodeTrie.get(codePoint);\n        if (classType > LETTER_NUMBER_MODIFIER) {\n            categories.push(true);\n            classType -= LETTER_NUMBER_MODIFIER;\n        } else {\n            categories.push(false);\n        }\n\n        if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n            // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n            if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n                indices.push(index);\n                return types.push(CB);\n            }\n        }\n\n        if (classType === CM || classType === ZWJ) {\n            // LB10 Treat any remaining combining mark or ZWJ as AL.\n            if (index === 0) {\n                indices.push(index);\n                return types.push(AL);\n            }\n\n            // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n            // the base character in all of the following rules. Treat ZWJ as if it were CM.\n            const prev = types[index - 1];\n            if (LINE_BREAKS.indexOf(prev) === -1) {\n                indices.push(indices[index - 1]);\n                return types.push(prev);\n            }\n            indices.push(index);\n            return types.push(AL);\n        }\n\n        indices.push(index);\n\n        if (classType === CJ) {\n            return types.push(lineBreak === 'strict' ? NS : ID);\n        }\n\n        if (classType === SA) {\n            return types.push(AL);\n        }\n\n        if (classType === AI) {\n            return types.push(AL);\n        }\n\n        // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n        // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n        // to take into account the actual line breaking properties for these characters.\n        if (classType === XX) {\n            if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n                return types.push(ID);\n            } else {\n                return types.push(AL);\n            }\n        }\n\n        types.push(classType);\n    });\n\n    return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n    a: number[] | number,\n    b: number,\n    currentIndex: number,\n    classTypes: number[]\n): boolean => {\n    const current = classTypes[currentIndex];\n    if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n        let i = currentIndex;\n        while (i <= classTypes.length) {\n            i++;\n            let next = classTypes[i];\n\n            if (next === b) {\n                return true;\n            }\n\n            if (next !== SP) {\n                break;\n            }\n        }\n    }\n\n    if (current === SP) {\n        let i = currentIndex;\n\n        while (i > 0) {\n            i--;\n            const prev = classTypes[i];\n\n            if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n                let n = currentIndex;\n                while (n <= classTypes.length) {\n                    n++;\n                    let next = classTypes[n];\n\n                    if (next === b) {\n                        return true;\n                    }\n\n                    if (next !== SP) {\n                        break;\n                    }\n                }\n            }\n\n            if (prev !== SP) {\n                break;\n            }\n        }\n    }\n    return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n    let i = currentIndex;\n    while (i >= 0) {\n        let type = classTypes[i];\n        if (type === SP) {\n            i--;\n        } else {\n            return type;\n        }\n    }\n    return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n    codePoints: number[],\n    classTypes: number[],\n    indicies: number[],\n    index: number,\n    forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n    if (indicies[index] === 0) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    let currentIndex = index - 1;\n    if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    let beforeIndex = currentIndex - 1;\n    let afterIndex = currentIndex + 1;\n    let current = classTypes[currentIndex];\n\n    // LB4 Always break after hard line breaks.\n    // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n    let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n    let next = classTypes[afterIndex];\n\n    if (current === CR && next === LF) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n        return BREAK_MANDATORY;\n    }\n\n    // LB6 Do not break before hard line breaks.\n    if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB7 Do not break before spaces or zero width space.\n    if (SPACE.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB8a Do not break after a zero width joiner.\n    if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // zwj emojis\n    if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB11 Do not break before or after Word joiner and related characters.\n    if (current === WJ || next === WJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB12 Do not break after NBSP and related characters.\n    if (current === GL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n    if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n    if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB14 Do not break after ‘[’, even after spaces.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB15 Do not break within ‘”[’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB17 Do not break within ‘——’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB18 Break after spaces.\n    if (current === SP) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n    if (current === QU || next === QU) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB20 Break before and after unresolved CB.\n    if (next === CB || current === CB) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n    if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB21a Don't break after Hebrew + Hyphen.\n    if (before === HL && HYPHEN.indexOf(current) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB21b Don’t break between Solidus and Hebrew letters.\n    if (current === SY && next === HL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB22 Do not break before ellipsis.\n    if (next === IN) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB23 Do not break between digits and letters.\n    if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n    if (\n        (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n        ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n    if (\n        (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n        (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB25 Do not break between the following pairs of classes relevant to numbers:\n    if (\n        // (PR | PO) × ( OP | HY )? NU\n        ([PR, PO].indexOf(current) !== -1 &&\n            (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n        // ( OP | HY ) × NU\n        ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n        // NU ×\t(NU | SY | IS)\n        (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n    if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n        let prevIndex = currentIndex;\n        while (prevIndex >= 0) {\n            let type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED;\n            } else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            } else {\n                break;\n            }\n        }\n    }\n\n    // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n    if ([PR, PO].indexOf(next) !== -1) {\n        let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n        while (prevIndex >= 0) {\n            let type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED;\n            } else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            } else {\n                break;\n            }\n        }\n    }\n\n    // LB26 Do not break a Korean syllable.\n    if (\n        (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n        ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n        ([JT, H3].indexOf(current) !== -1 && next === JT)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB27 Treat a Korean Syllable Block the same as ID.\n    if (\n        (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n        (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB28 Do not break between alphabetics (“at”).\n    if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n    if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n    if (\n        (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n            next === OP &&\n            ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n        (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n    // indicators preceding the position of the break.\n    if (current === RI && next === RI) {\n        let i = indicies[currentIndex];\n        let count = 1;\n        while (i > 0) {\n            i--;\n            if (classTypes[i] === RI) {\n                count++;\n            } else {\n                break;\n            }\n        }\n        if (count % 2 !== 0) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    // LB30b Do not break between an emoji base and an emoji modifier.\n    if (current === EB && next === EM) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n    // LB2 Never break at the start of text.\n    if (index === 0) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB3 Always break at the end of text.\n    if (index >= codePoints.length) {\n        return BREAK_MANDATORY;\n    }\n\n    const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n    return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n    lineBreak?: LINE_BREAK;\n    wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n    if (!options) {\n        options = {lineBreak: 'normal', wordBreak: 'normal'};\n    }\n    let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n    if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n        classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n    }\n\n    const forbiddenBreakpoints =\n        options.wordBreak === 'keep-all'\n            ? isLetterNumber.map((letterNumber, i) => {\n                  return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n              })\n            : undefined;\n\n    return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n    const codePoints = toCodePoints(str);\n    let output = BREAK_NOT_ALLOWED;\n    const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n    codePoints.forEach((codePoint, i) => {\n        output +=\n            fromCodePoint(codePoint) +\n            (i >= codePoints.length - 1\n                ? BREAK_MANDATORY\n                : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n    });\n\n    return output;\n};\n\nclass Break {\n    private readonly codePoints: number[];\n    readonly required: boolean;\n    readonly start: number;\n    readonly end: number;\n\n    constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n        this.codePoints = codePoints;\n        this.required = lineBreak === BREAK_MANDATORY;\n        this.start = start;\n        this.end = end;\n    }\n\n    slice(): string {\n        return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n    }\n}\n\nexport type LineBreak =\n    | {\n          done: true;\n          value: null;\n      }\n    | {\n          done: false;\n          value: Break;\n      };\n\ninterface ILineBreakIterator {\n    next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n    const codePoints = toCodePoints(str);\n    const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n    const length = codePoints.length;\n    let lastEnd = 0;\n    let nextIndex = 0;\n\n    return {\n        next: () => {\n            if (nextIndex >= length) {\n                return {done: true, value: null};\n            }\n            let lineBreak = BREAK_NOT_ALLOWED;\n            while (\n                nextIndex < length &&\n                (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n                    BREAK_NOT_ALLOWED\n            ) {}\n\n            if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n                const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n                lastEnd = nextIndex;\n                return {value, done: false};\n            }\n\n            return {done: true, value: null};\n        },\n    };\n};\n", "// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n    STRING_TOKEN,\n    BAD_STRING_TOKEN,\n    LEFT_PARENTHESIS_TOKEN,\n    RIGHT_PARENTHESIS_TOKEN,\n    COMMA_TOKEN,\n    HASH_TOKEN,\n    DELIM_TOKEN,\n    AT_KEYWORD_TOKEN,\n    PREFIX_MATCH_TOKEN,\n    DASH_MATCH_TOKEN,\n    INCLUDE_MATCH_TOKEN,\n    LEFT_CURLY_BRACKET_TOKEN,\n    RIGHT_CURLY_BRACKET_TOKEN,\n    SUFFIX_MATCH_TOKEN,\n    SUBSTRING_MATCH_TOKEN,\n    DIMENSION_TOKEN,\n    PERCENTAGE_TOKEN,\n    NUMBER_TOKEN,\n    FUNCTION,\n    FUNCTION_TOKEN,\n    IDENT_TOKEN,\n    COLUMN_TOKEN,\n    URL_TOKEN,\n    BAD_URL_TOKEN,\n    CDC_TOKEN,\n    CDO_TOKEN,\n    COLON_TOKEN,\n    SEMICOLON_TOKEN,\n    LEFT_SQUARE_BRACKET_TOKEN,\n    RIGHT_SQUARE_BRACKET_TOKEN,\n    UNICODE_RANGE_TOKEN,\n    WHITESPACE_TOKEN,\n    EOF_TOKEN\n}\n\ninterface IToken {\n    type: TokenType;\n}\n\nexport interface Token extends IToken {\n    type:\n        | TokenType.BAD_URL_TOKEN\n        | TokenType.BAD_STRING_TOKEN\n        | TokenType.LEFT_PARENTHESIS_TOKEN\n        | TokenType.RIGHT_PARENTHESIS_TOKEN\n        | TokenType.COMMA_TOKEN\n        | TokenType.SUBSTRING_MATCH_TOKEN\n        | TokenType.PREFIX_MATCH_TOKEN\n        | TokenType.SUFFIX_MATCH_TOKEN\n        | TokenType.COLON_TOKEN\n        | TokenType.SEMICOLON_TOKEN\n        | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n        | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n        | TokenType.LEFT_CURLY_BRACKET_TOKEN\n        | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n        | TokenType.DASH_MATCH_TOKEN\n        | TokenType.INCLUDE_MATCH_TOKEN\n        | TokenType.COLUMN_TOKEN\n        | TokenType.WHITESPACE_TOKEN\n        | TokenType.CDC_TOKEN\n        | TokenType.CDO_TOKEN\n        | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n    type:\n        | TokenType.STRING_TOKEN\n        | TokenType.DELIM_TOKEN\n        | TokenType.FUNCTION_TOKEN\n        | TokenType.IDENT_TOKEN\n        | TokenType.URL_TOKEN\n        | TokenType.AT_KEYWORD_TOKEN;\n    value: string;\n}\n\nexport interface HashToken extends IToken {\n    type: TokenType.HASH_TOKEN;\n    flags: number;\n    value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n    type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n    flags: number;\n    number: number;\n}\n\nexport interface DimensionToken extends IToken {\n    type: TokenType.DIMENSION_TOKEN;\n    flags: number;\n    unit: string;\n    number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n    type: TokenType.UNICODE_RANGE_TOKEN;\n    start: number;\n    end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n    isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n    codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n    isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n    isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n    return (\n        (codePoint >= NULL && codePoint <= BACKSPACE) ||\n        codePoint === LINE_TABULATION ||\n        (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n        codePoint === DELETE\n    );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n    if (c1 !== REVERSE_SOLIDUS) {\n        return false;\n    }\n\n    return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n    if (c1 === HYPHEN_MINUS) {\n        return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n    } else if (isNameStartCodePoint(c1)) {\n        return true;\n    } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n        return true;\n    }\n    return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n    if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n        if (isDigit(c2)) {\n            return true;\n        }\n\n        return c2 === FULL_STOP && isDigit(c3);\n    }\n\n    if (c1 === FULL_STOP) {\n        return isDigit(c2);\n    }\n\n    return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n    let c = 0;\n    let sign = 1;\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            sign = -1;\n        }\n        c++;\n    }\n\n    const integers = [];\n\n    while (isDigit(codePoints[c])) {\n        integers.push(codePoints[c++]);\n    }\n\n    const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n    if (codePoints[c] === FULL_STOP) {\n        c++;\n    }\n\n    const fraction = [];\n    while (isDigit(codePoints[c])) {\n        fraction.push(codePoints[c++]);\n    }\n\n    const fracd = fraction.length;\n    const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n    if (codePoints[c] === E || codePoints[c] === e) {\n        c++;\n    }\n\n    let expsign = 1;\n\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            expsign = -1;\n        }\n        c++;\n    }\n\n    const exponent = [];\n\n    while (isDigit(codePoints[c])) {\n        exponent.push(codePoints[c++]);\n    }\n\n    const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n    return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n    type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n    type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n    type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n    type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n    type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n    type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n    private _value: number[];\n\n    constructor() {\n        this._value = [];\n    }\n\n    write(chunk: string): void {\n        this._value = this._value.concat(toCodePoints(chunk));\n    }\n\n    read(): CSSToken[] {\n        const tokens = [];\n        let token = this.consumeToken();\n        while (token !== EOF_TOKEN) {\n            tokens.push(token);\n            token = this.consumeToken();\n        }\n        return tokens;\n    }\n\n    private consumeToken(): CSSToken {\n        const codePoint = this.consumeCodePoint();\n\n        switch (codePoint) {\n            case QUOTATION_MARK:\n                return this.consumeStringToken(QUOTATION_MARK);\n            case NUMBER_SIGN:\n                const c1 = this.peekCodePoint(0);\n                const c2 = this.peekCodePoint(1);\n                const c3 = this.peekCodePoint(2);\n                if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n                    const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n                    const value = this.consumeName();\n\n                    return {type: TokenType.HASH_TOKEN, value, flags};\n                }\n                break;\n            case DOLLAR_SIGN:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUFFIX_MATCH_TOKEN;\n                }\n                break;\n            case APOSTROPHE:\n                return this.consumeStringToken(APOSTROPHE);\n            case LEFT_PARENTHESIS:\n                return LEFT_PARENTHESIS_TOKEN;\n            case RIGHT_PARENTHESIS:\n                return RIGHT_PARENTHESIS_TOKEN;\n            case ASTERISK:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUBSTRING_MATCH_TOKEN;\n                }\n                break;\n            case PLUS_SIGN:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case COMMA:\n                return COMMA_TOKEN;\n            case HYPHEN_MINUS:\n                const e1 = codePoint;\n                const e2 = this.peekCodePoint(0);\n                const e3 = this.peekCodePoint(1);\n\n                if (isNumberStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n\n                if (isIdentifierStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n\n                if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDC_TOKEN;\n                }\n                break;\n\n            case FULL_STOP:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case SOLIDUS:\n                if (this.peekCodePoint(0) === ASTERISK) {\n                    this.consumeCodePoint();\n                    while (true) {\n                        let c = this.consumeCodePoint();\n                        if (c === ASTERISK) {\n                            c = this.consumeCodePoint();\n                            if (c === SOLIDUS) {\n                                return this.consumeToken();\n                            }\n                        }\n                        if (c === EOF) {\n                            return this.consumeToken();\n                        }\n                    }\n                }\n                break;\n            case COLON:\n                return COLON_TOKEN;\n            case SEMICOLON:\n                return SEMICOLON_TOKEN;\n            case LESS_THAN_SIGN:\n                if (\n                    this.peekCodePoint(0) === EXCLAMATION_MARK &&\n                    this.peekCodePoint(1) === HYPHEN_MINUS &&\n                    this.peekCodePoint(2) === HYPHEN_MINUS\n                ) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDO_TOKEN;\n                }\n                break;\n            case COMMERCIAL_AT:\n                const a1 = this.peekCodePoint(0);\n                const a2 = this.peekCodePoint(1);\n                const a3 = this.peekCodePoint(2);\n                if (isIdentifierStart(a1, a2, a3)) {\n                    const value = this.consumeName();\n                    return {type: TokenType.AT_KEYWORD_TOKEN, value};\n                }\n                break;\n            case LEFT_SQUARE_BRACKET:\n                return LEFT_SQUARE_BRACKET_TOKEN;\n            case REVERSE_SOLIDUS:\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n                break;\n            case RIGHT_SQUARE_BRACKET:\n                return RIGHT_SQUARE_BRACKET_TOKEN;\n            case CIRCUMFLEX_ACCENT:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return PREFIX_MATCH_TOKEN;\n                }\n                break;\n            case LEFT_CURLY_BRACKET:\n                return LEFT_CURLY_BRACKET_TOKEN;\n            case RIGHT_CURLY_BRACKET:\n                return RIGHT_CURLY_BRACKET_TOKEN;\n            case u:\n            case U:\n                const u1 = this.peekCodePoint(0);\n                const u2 = this.peekCodePoint(1);\n                if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n                    this.consumeCodePoint();\n                    this.consumeUnicodeRangeToken();\n                }\n                this.reconsumeCodePoint(codePoint);\n                return this.consumeIdentLikeToken();\n            case VERTICAL_LINE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return DASH_MATCH_TOKEN;\n                }\n                if (this.peekCodePoint(0) === VERTICAL_LINE) {\n                    this.consumeCodePoint();\n                    return COLUMN_TOKEN;\n                }\n                break;\n            case TILDE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return INCLUDE_MATCH_TOKEN;\n                }\n                break;\n            case EOF:\n                return EOF_TOKEN;\n        }\n\n        if (isWhiteSpace(codePoint)) {\n            this.consumeWhiteSpace();\n            return WHITESPACE_TOKEN;\n        }\n\n        if (isDigit(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeNumericToken();\n        }\n\n        if (isNameStartCodePoint(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeIdentLikeToken();\n        }\n\n        return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n    }\n\n    private consumeCodePoint(): number {\n        const value = this._value.shift();\n\n        return typeof value === 'undefined' ? -1 : value;\n    }\n\n    private reconsumeCodePoint(codePoint: number) {\n        this._value.unshift(codePoint);\n    }\n\n    private peekCodePoint(delta: number): number {\n        if (delta >= this._value.length) {\n            return -1;\n        }\n\n        return this._value[delta];\n    }\n\n    private consumeUnicodeRangeToken(): UnicodeRangeToken {\n        const digits = [];\n        let codePoint = this.consumeCodePoint();\n        while (isHex(codePoint) && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n        }\n        let questionMarks = false;\n        while (codePoint === QUESTION_MARK && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n            questionMarks = true;\n        }\n\n        if (questionMarks) {\n            const start = parseInt(\n                fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n                16\n            );\n            const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n        }\n\n        const start = parseInt(fromCodePoint(...digits), 16);\n        if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n            this.consumeCodePoint();\n            codePoint = this.consumeCodePoint();\n            const endDigits = [];\n            while (isHex(codePoint) && endDigits.length < 6) {\n                endDigits.push(codePoint);\n                codePoint = this.consumeCodePoint();\n            }\n            const end = parseInt(fromCodePoint(...endDigits), 16);\n\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n        } else {\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n        }\n    }\n\n    private consumeIdentLikeToken(): StringValueToken | Token {\n        const value = this.consumeName();\n        if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return this.consumeUrlToken();\n        } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return {type: TokenType.FUNCTION_TOKEN, value};\n        }\n\n        return {type: TokenType.IDENT_TOKEN, value};\n    }\n\n    private consumeUrlToken(): StringValueToken | Token {\n        const value = [];\n        this.consumeWhiteSpace();\n\n        if (this.peekCodePoint(0) === EOF) {\n            return {type: TokenType.URL_TOKEN, value: ''};\n        }\n\n        const next = this.peekCodePoint(0);\n        if (next === APOSTROPHE || next === QUOTATION_MARK) {\n            const stringToken = this.consumeStringToken(this.consumeCodePoint());\n            if (stringToken.type === TokenType.STRING_TOKEN) {\n                this.consumeWhiteSpace();\n\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return {type: TokenType.URL_TOKEN, value: stringToken.value};\n                }\n            }\n\n            this.consumeBadUrlRemnants();\n            return BAD_URL_TOKEN;\n        }\n\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n                return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n            } else if (isWhiteSpace(codePoint)) {\n                this.consumeWhiteSpace();\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n                }\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            } else if (\n                codePoint === QUOTATION_MARK ||\n                codePoint === APOSTROPHE ||\n                codePoint === LEFT_PARENTHESIS ||\n                isNonPrintableCodePoint(codePoint)\n            ) {\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            } else if (codePoint === REVERSE_SOLIDUS) {\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    value.push(this.consumeEscapedCodePoint());\n                } else {\n                    this.consumeBadUrlRemnants();\n                    return BAD_URL_TOKEN;\n                }\n            } else {\n                value.push(codePoint);\n            }\n        }\n    }\n\n    private consumeWhiteSpace(): void {\n        while (isWhiteSpace(this.peekCodePoint(0))) {\n            this.consumeCodePoint();\n        }\n    }\n\n    private consumeBadUrlRemnants(): void {\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n                return;\n            }\n\n            if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                this.consumeEscapedCodePoint();\n            }\n        }\n    }\n\n    private consumeStringSlice(count: number): string {\n        const SLICE_STACK_SIZE = 50000;\n        let value = '';\n        while (count > 0) {\n            const amount = Math.min(SLICE_STACK_SIZE, count);\n            value += fromCodePoint(...this._value.splice(0, amount));\n            count -= amount;\n        }\n        this._value.shift();\n\n        return value;\n    }\n\n    private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n        let value = '';\n        let i = 0;\n\n        do {\n            const codePoint = this._value[i];\n            if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n                value += this.consumeStringSlice(i);\n                return {type: TokenType.STRING_TOKEN, value};\n            }\n\n            if (codePoint === LINE_FEED) {\n                this._value.splice(0, i);\n                return BAD_STRING_TOKEN;\n            }\n\n            if (codePoint === REVERSE_SOLIDUS) {\n                const next = this._value[i + 1];\n                if (next !== EOF && next !== undefined) {\n                    if (next === LINE_FEED) {\n                        value += this.consumeStringSlice(i);\n                        i = -1;\n                        this._value.shift();\n                    } else if (isValidEscape(codePoint, next)) {\n                        value += this.consumeStringSlice(i);\n                        value += fromCodePoint(this.consumeEscapedCodePoint());\n                        i = -1;\n                    }\n                }\n            }\n\n            i++;\n        } while (true);\n    }\n\n    private consumeNumber() {\n        const repr = [];\n        let type = FLAG_INTEGER;\n        let c1 = this.peekCodePoint(0);\n        if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n            repr.push(this.consumeCodePoint());\n        }\n\n        while (isDigit(this.peekCodePoint(0))) {\n            repr.push(this.consumeCodePoint());\n        }\n        c1 = this.peekCodePoint(0);\n        let c2 = this.peekCodePoint(1);\n        if (c1 === FULL_STOP && isDigit(c2)) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n\n        c1 = this.peekCodePoint(0);\n        c2 = this.peekCodePoint(1);\n        const c3 = this.peekCodePoint(2);\n        if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n\n        return [stringToNumber(repr), type];\n    }\n\n    private consumeNumericToken(): NumberValueToken | DimensionToken {\n        const [number, flags] = this.consumeNumber();\n        const c1 = this.peekCodePoint(0);\n        const c2 = this.peekCodePoint(1);\n        const c3 = this.peekCodePoint(2);\n\n        if (isIdentifierStart(c1, c2, c3)) {\n            const unit = this.consumeName();\n            return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n        }\n\n        if (c1 === PERCENTAGE_SIGN) {\n            this.consumeCodePoint();\n            return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n        }\n\n        return {type: TokenType.NUMBER_TOKEN, number, flags};\n    }\n\n    private consumeEscapedCodePoint(): number {\n        const codePoint = this.consumeCodePoint();\n\n        if (isHex(codePoint)) {\n            let hex = fromCodePoint(codePoint);\n            while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n                hex += fromCodePoint(this.consumeCodePoint());\n            }\n\n            if (isWhiteSpace(this.peekCodePoint(0))) {\n                this.consumeCodePoint();\n            }\n\n            const hexCodePoint = parseInt(hex, 16);\n\n            if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n                return REPLACEMENT_CHARACTER;\n            }\n\n            return hexCodePoint;\n        }\n\n        if (codePoint === EOF) {\n            return REPLACEMENT_CHARACTER;\n        }\n\n        return codePoint;\n    }\n\n    private consumeName(): string {\n        let result = '';\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (isNameCodePoint(codePoint)) {\n                result += fromCodePoint(codePoint);\n            } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                result += fromCodePoint(this.consumeEscapedCodePoint());\n            } else {\n                this.reconsumeCodePoint(codePoint);\n                return result;\n            }\n        }\n    }\n}\n", "import {\n    CSSToken,\n    DimensionToken,\n    EOF_TOKEN,\n    NumberValueToken,\n    StringValueToken,\n    Tokenizer,\n    TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n    | TokenType.LEFT_PARENTHESIS_TOKEN\n    | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n    | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n    type: CSSBlockType;\n    values: CSSValue[];\n}\n\nexport interface CSSFunction {\n    type: TokenType.FUNCTION;\n    name: string;\n    values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n    private _tokens: CSSToken[];\n\n    constructor(tokens: CSSToken[]) {\n        this._tokens = tokens;\n    }\n\n    static create(value: string): Parser {\n        const tokenizer = new Tokenizer();\n        tokenizer.write(value);\n        return new Parser(tokenizer.read());\n    }\n\n    static parseValue(value: string): CSSValue {\n        return Parser.create(value).parseComponentValue();\n    }\n\n    static parseValues(value: string): CSSValue[] {\n        return Parser.create(value).parseComponentValues();\n    }\n\n    parseComponentValue(): CSSValue {\n        let token = this.consumeToken();\n        while (token.type === TokenType.WHITESPACE_TOKEN) {\n            token = this.consumeToken();\n        }\n\n        if (token.type === TokenType.EOF_TOKEN) {\n            throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n        }\n\n        this.reconsumeToken(token);\n        const value = this.consumeComponentValue();\n\n        do {\n            token = this.consumeToken();\n        } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n        if (token.type === TokenType.EOF_TOKEN) {\n            return value;\n        }\n\n        throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n    }\n\n    parseComponentValues(): CSSValue[] {\n        const values = [];\n        while (true) {\n            const value = this.consumeComponentValue();\n            if (value.type === TokenType.EOF_TOKEN) {\n                return values;\n            }\n            values.push(value);\n            values.push();\n        }\n    }\n\n    private consumeComponentValue(): CSSValue {\n        const token = this.consumeToken();\n\n        switch (token.type) {\n            case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n            case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n            case TokenType.LEFT_PARENTHESIS_TOKEN:\n                return this.consumeSimpleBlock(token.type);\n            case TokenType.FUNCTION_TOKEN:\n                return this.consumeFunction(token);\n        }\n\n        return token;\n    }\n\n    private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n        const block: CSSBlock = {type, values: []};\n\n        let token = this.consumeToken();\n        while (true) {\n            if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n                return block;\n            }\n\n            this.reconsumeToken(token);\n            block.values.push(this.consumeComponentValue());\n            token = this.consumeToken();\n        }\n    }\n\n    private consumeFunction(functionToken: StringValueToken): CSSFunction {\n        const cssFunction: CSSFunction = {\n            name: functionToken.value,\n            values: [],\n            type: TokenType.FUNCTION\n        };\n\n        while (true) {\n            const token = this.consumeToken();\n            if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n                return cssFunction;\n            }\n\n            this.reconsumeToken(token);\n            cssFunction.values.push(this.consumeComponentValue());\n        }\n    }\n\n    private consumeToken(): CSSToken {\n        const token = this._tokens.shift();\n        return typeof token === 'undefined' ? EOF_TOKEN : token;\n    }\n\n    private reconsumeToken(token: CSSToken): void {\n        this._tokens.unshift(token);\n    }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n    isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n    token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n    const args: CSSValue[][] = [];\n    let arg: CSSValue[] = [];\n    tokens.forEach((token) => {\n        if (token.type === TokenType.COMMA_TOKEN) {\n            if (arg.length === 0) {\n                throw new Error(`Error parsing function args, zero tokens for arg`);\n            }\n            args.push(arg);\n            arg = [];\n            return;\n        }\n\n        if (token.type !== TokenType.WHITESPACE_TOKEN) {\n            arg.push(token);\n        }\n    });\n    if (arg.length) {\n        args.push(arg);\n    }\n\n    return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n    if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n        return true;\n    }\n    if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n        return true;\n    }\n\n    return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n    token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n", "import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n    token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n    tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n    type: TokenType.NUMBER_TOKEN,\n    number: 0,\n    flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 50,\n    flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 100,\n    flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n    tuple: LengthPercentageTuple,\n    width: number,\n    height: number\n): [number, number] => {\n    const [x, y] = tuple;\n    return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n    if (token.type === TokenType.PERCENTAGE_TOKEN) {\n        return (token.number / 100) * parent;\n    }\n\n    if (isDimensionToken(token)) {\n        switch (token.unit) {\n            case 'rem':\n            case 'em':\n                return 16 * token.number; // TODO use correct font-size\n            case 'px':\n            default:\n                return token.number;\n        }\n    }\n\n    return token.number;\n};\n", "import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor<number> = {\n    name: 'angle',\n    parse: (_context: Context, value: CSSValue): number => {\n        if (value.type === TokenType.DIMENSION_TOKEN) {\n            switch (value.unit) {\n                case DEG:\n                    return (Math.PI * value.number) / 180;\n                case GRAD:\n                    return (Math.PI / 200) * value.number;\n                case RAD:\n                    return value.number;\n                case TURN:\n                    return Math.PI * 2 * value.number;\n            }\n        }\n\n        throw new Error(`Unsupported angle type`);\n    }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n    if (value.type === TokenType.DIMENSION_TOKEN) {\n        if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n            return true;\n        }\n    }\n    return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n    const sideOrCorner = tokens\n        .filter(isIdentToken)\n        .map((ident) => ident.value)\n        .join(' ');\n\n    switch (sideOrCorner) {\n        case 'to bottom right':\n        case 'to right bottom':\n        case 'left top':\n        case 'top left':\n            return [ZERO_LENGTH, ZERO_LENGTH];\n        case 'to top':\n        case 'bottom':\n            return deg(0);\n        case 'to bottom left':\n        case 'to left bottom':\n        case 'right top':\n        case 'top right':\n            return [ZERO_LENGTH, HUNDRED_PERCENT];\n        case 'to right':\n        case 'left':\n            return deg(90);\n        case 'to top left':\n        case 'to left top':\n        case 'right bottom':\n        case 'bottom right':\n            return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n        case 'to bottom':\n        case 'top':\n            return deg(180);\n        case 'to top right':\n        case 'to right top':\n        case 'left bottom':\n        case 'bottom left':\n            return [HUNDRED_PERCENT, ZERO_LENGTH];\n        case 'to left':\n        case 'right':\n            return deg(270);\n    }\n\n    return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n", "import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\n    name: 'color',\n    parse: (context: Context, value: CSSValue): Color => {\n        if (value.type === TokenType.FUNCTION) {\n            const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n            if (typeof colorFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n            }\n            return colorFunction(context, value.values);\n        }\n\n        if (value.type === TokenType.HASH_TOKEN) {\n            if (value.value.length === 3) {\n                const r = value.value.substring(0, 1);\n                const g = value.value.substring(1, 2);\n                const b = value.value.substring(2, 3);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n            }\n\n            if (value.value.length === 4) {\n                const r = value.value.substring(0, 1);\n                const g = value.value.substring(1, 2);\n                const b = value.value.substring(2, 3);\n                const a = value.value.substring(3, 4);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n            }\n\n            if (value.value.length === 6) {\n                const r = value.value.substring(0, 2);\n                const g = value.value.substring(2, 4);\n                const b = value.value.substring(4, 6);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n            }\n\n            if (value.value.length === 8) {\n                const r = value.value.substring(0, 2);\n                const g = value.value.substring(2, 4);\n                const b = value.value.substring(4, 6);\n                const a = value.value.substring(6, 8);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n            }\n        }\n\n        if (value.type === TokenType.IDENT_TOKEN) {\n            const namedColor = COLORS[value.value.toUpperCase()];\n            if (typeof namedColor !== 'undefined') {\n                return namedColor;\n            }\n        }\n\n        return COLORS.TRANSPARENT;\n    }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n    const alpha = 0xff & color;\n    const blue = 0xff & (color >> 8);\n    const green = 0xff & (color >> 16);\n    const red = 0xff & (color >> 24);\n    return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n    ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n    if (token.type === TokenType.NUMBER_TOKEN) {\n        return token.number;\n    }\n\n    if (token.type === TokenType.PERCENTAGE_TOKEN) {\n        const max = i === 3 ? 1 : 255;\n        return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n    }\n\n    return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n    const tokens = args.filter(nonFunctionArgSeparator);\n\n    if (tokens.length === 3) {\n        const [r, g, b] = tokens.map(getTokenColorValue);\n        return pack(r, g, b, 1);\n    }\n\n    if (tokens.length === 4) {\n        const [r, g, b, a] = tokens.map(getTokenColorValue);\n        return pack(r, g, b, a);\n    }\n\n    return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n    if (hue < 0) {\n        hue += 1;\n    }\n    if (hue >= 1) {\n        hue -= 1;\n    }\n\n    if (hue < 1 / 6) {\n        return (t2 - t1) * hue * 6 + t1;\n    } else if (hue < 1 / 2) {\n        return t2;\n    } else if (hue < 2 / 3) {\n        return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n    } else {\n        return t1;\n    }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n    const tokens = args.filter(nonFunctionArgSeparator);\n    const [hue, saturation, lightness, alpha] = tokens;\n\n    const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n    const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n    const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n    const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n    if (s === 0) {\n        return pack(l * 255, l * 255, l * 255, 1);\n    }\n\n    const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n    const t1 = l * 2 - t2;\n    const r = hue2rgb(t1, t2, h + 1 / 3);\n    const g = hue2rgb(t1, t2, h);\n    const b = hue2rgb(t1, t2, h - 1 / 3);\n    return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n    [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n    hsl: hsl,\n    hsla: hsl,\n    rgb: rgb,\n    rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n    color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n    ALICEBLUE: 0xf0f8ffff,\n    ANTIQUEWHITE: 0xfaebd7ff,\n    AQUA: 0x00ffffff,\n    AQUAMARINE: 0x7fffd4ff,\n    AZURE: 0xf0ffffff,\n    BEIGE: 0xf5f5dcff,\n    BISQUE: 0xffe4c4ff,\n    BLACK: 0x000000ff,\n    BLANCHEDALMOND: 0xffebcdff,\n    BLUE: 0x0000ffff,\n    BLUEVIOLET: 0x8a2be2ff,\n    BROWN: 0xa52a2aff,\n    BURLYWOOD: 0xdeb887ff,\n    CADETBLUE: 0x5f9ea0ff,\n    CHARTREUSE: 0x7fff00ff,\n    CHOCOLATE: 0xd2691eff,\n    CORAL: 0xff7f50ff,\n    CORNFLOWERBLUE: 0x6495edff,\n    CORNSILK: 0xfff8dcff,\n    CRIMSON: 0xdc143cff,\n    CYAN: 0x00ffffff,\n    DARKBLUE: 0x00008bff,\n    DARKCYAN: 0x008b8bff,\n    DARKGOLDENROD: 0xb886bbff,\n    DARKGRAY: 0xa9a9a9ff,\n    DARKGREEN: 0x006400ff,\n    DARKGREY: 0xa9a9a9ff,\n    DARKKHAKI: 0xbdb76bff,\n    DARKMAGENTA: 0x8b008bff,\n    DARKOLIVEGREEN: 0x556b2fff,\n    DARKORANGE: 0xff8c00ff,\n    DARKORCHID: 0x9932ccff,\n    DARKRED: 0x8b0000ff,\n    DARKSALMON: 0xe9967aff,\n    DARKSEAGREEN: 0x8fbc8fff,\n    DARKSLATEBLUE: 0x483d8bff,\n    DARKSLATEGRAY: 0x2f4f4fff,\n    DARKSLATEGREY: 0x2f4f4fff,\n    DARKTURQUOISE: 0x00ced1ff,\n    DARKVIOLET: 0x9400d3ff,\n    DEEPPINK: 0xff1493ff,\n    DEEPSKYBLUE: 0x00bfffff,\n    DIMGRAY: 0x696969ff,\n    DIMGREY: 0x696969ff,\n    DODGERBLUE: 0x1e90ffff,\n    FIREBRICK: 0xb22222ff,\n    FLORALWHITE: 0xfffaf0ff,\n    FORESTGREEN: 0x228b22ff,\n    FUCHSIA: 0xff00ffff,\n    GAINSBORO: 0xdcdcdcff,\n    GHOSTWHITE: 0xf8f8ffff,\n    GOLD: 0xffd700ff,\n    GOLDENROD: 0xdaa520ff,\n    GRAY: 0x808080ff,\n    GREEN: 0x008000ff,\n    GREENYELLOW: 0xadff2fff,\n    GREY: 0x808080ff,\n    HONEYDEW: 0xf0fff0ff,\n    HOTPINK: 0xff69b4ff,\n    INDIANRED: 0xcd5c5cff,\n    INDIGO: 0x4b0082ff,\n    IVORY: 0xfffff0ff,\n    KHAKI: 0xf0e68cff,\n    LAVENDER: 0xe6e6faff,\n    LAVENDERBLUSH: 0xfff0f5ff,\n    LAWNGREEN: 0x7cfc00ff,\n    LEMONCHIFFON: 0xfffacdff,\n    LIGHTBLUE: 0xadd8e6ff,\n    LIGHTCORAL: 0xf08080ff,\n    LIGHTCYAN: 0xe0ffffff,\n    LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n    LIGHTGRAY: 0xd3d3d3ff,\n    LIGHTGREEN: 0x90ee90ff,\n    LIGHTGREY: 0xd3d3d3ff,\n    LIGHTPINK: 0xffb6c1ff,\n    LIGHTSALMON: 0xffa07aff,\n    LIGHTSEAGREEN: 0x20b2aaff,\n    LIGHTSKYBLUE: 0x87cefaff,\n    LIGHTSLATEGRAY: 0x778899ff,\n    LIGHTSLATEGREY: 0x778899ff,\n    LIGHTSTEELBLUE: 0xb0c4deff,\n    LIGHTYELLOW: 0xffffe0ff,\n    LIME: 0x00ff00ff,\n    LIMEGREEN: 0x32cd32ff,\n    LINEN: 0xfaf0e6ff,\n    MAGENTA: 0xff00ffff,\n    MAROON: 0x800000ff,\n    MEDIUMAQUAMARINE: 0x66cdaaff,\n    MEDIUMBLUE: 0x0000cdff,\n    MEDIUMORCHID: 0xba55d3ff,\n    MEDIUMPURPLE: 0x9370dbff,\n    MEDIUMSEAGREEN: 0x3cb371ff,\n    MEDIUMSLATEBLUE: 0x7b68eeff,\n    MEDIUMSPRINGGREEN: 0x00fa9aff,\n    MEDIUMTURQUOISE: 0x48d1ccff,\n    MEDIUMVIOLETRED: 0xc71585ff,\n    MIDNIGHTBLUE: 0x191970ff,\n    MINTCREAM: 0xf5fffaff,\n    MISTYROSE: 0xffe4e1ff,\n    MOCCASIN: 0xffe4b5ff,\n    NAVAJOWHITE: 0xffdeadff,\n    NAVY: 0x000080ff,\n    OLDLACE: 0xfdf5e6ff,\n    OLIVE: 0x808000ff,\n    OLIVEDRAB: 0x6b8e23ff,\n    ORANGE: 0xffa500ff,\n    ORANGERED: 0xff4500ff,\n    ORCHID: 0xda70d6ff,\n    PALEGOLDENROD: 0xeee8aaff,\n    PALEGREEN: 0x98fb98ff,\n    PALETURQUOISE: 0xafeeeeff,\n    PALEVIOLETRED: 0xdb7093ff,\n    PAPAYAWHIP: 0xffefd5ff,\n    PEACHPUFF: 0xffdab9ff,\n    PERU: 0xcd853fff,\n    PINK: 0xffc0cbff,\n    PLUM: 0xdda0ddff,\n    POWDERBLUE: 0xb0e0e6ff,\n    PURPLE: 0x800080ff,\n    REBECCAPURPLE: 0x663399ff,\n    RED: 0xff0000ff,\n    ROSYBROWN: 0xbc8f8fff,\n    ROYALBLUE: 0x4169e1ff,\n    SADDLEBROWN: 0x8b4513ff,\n    SALMON: 0xfa8072ff,\n    SANDYBROWN: 0xf4a460ff,\n    SEAGREEN: 0x2e8b57ff,\n    SEASHELL: 0xfff5eeff,\n    SIENNA: 0xa0522dff,\n    SILVER: 0xc0c0c0ff,\n    SKYBLUE: 0x87ceebff,\n    SLATEBLUE: 0x6a5acdff,\n    SLATEGRAY: 0x708090ff,\n    SLATEGREY: 0x708090ff,\n    SNOW: 0xfffafaff,\n    SPRINGGREEN: 0x00ff7fff,\n    STEELBLUE: 0x4682b4ff,\n    TAN: 0xd2b48cff,\n    TEAL: 0x008080ff,\n    THISTLE: 0xd8bfd8ff,\n    TOMATO: 0xff6347ff,\n    TRANSPARENT: 0x00000000,\n    TURQUOISE: 0x40e0d0ff,\n    VIOLET: 0xee82eeff,\n    WHEAT: 0xf5deb3ff,\n    WHITE: 0xffffffff,\n    WHITESMOKE: 0xf5f5f5ff,\n    YELLOW: 0xffff00ff,\n    YELLOWGREEN: 0x9acd32ff\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n    BORDER_BOX = 0,\n    PADDING_BOX = 1,\n    CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor<BackgroundClip> = {\n    name: 'background-clip',\n    initialValue: 'border-box',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n        return tokens.map((token) => {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return BACKGROUND_CLIP.PADDING_BOX;\n                    case 'content-box':\n                        return BACKGROUND_CLIP.CONTENT_BOX;\n                }\n            }\n            return BACKGROUND_CLIP.BORDER_BOX;\n        });\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n    name: `background-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {CSSValue} from '../../syntax/parser';\nimport {\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    GradientColorStop,\n    GradientCorner,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n    const color = colorType.parse(context, args[0]);\n    const stop = args[1];\n    return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n    const first = stops[0];\n    const last = stops[stops.length - 1];\n    if (first.stop === null) {\n        first.stop = ZERO_LENGTH;\n    }\n\n    if (last.stop === null) {\n        last.stop = HUNDRED_PERCENT;\n    }\n\n    const processStops: (number | null)[] = [];\n    let previous = 0;\n    for (let i = 0; i < stops.length; i++) {\n        const stop = stops[i].stop;\n        if (stop !== null) {\n            const absoluteValue = getAbsoluteValue(stop, lineLength);\n            if (absoluteValue > previous) {\n                processStops.push(absoluteValue);\n            } else {\n                processStops.push(previous);\n            }\n            previous = absoluteValue;\n        } else {\n            processStops.push(null);\n        }\n    }\n\n    let gapBegin = null;\n    for (let i = 0; i < processStops.length; i++) {\n        const stop = processStops[i];\n        if (stop === null) {\n            if (gapBegin === null) {\n                gapBegin = i;\n            }\n        } else if (gapBegin !== null) {\n            const gapLength = i - gapBegin;\n            const beforeGap = processStops[gapBegin - 1] as number;\n            const gapValue = (stop - beforeGap) / (gapLength + 1);\n            for (let g = 1; g <= gapLength; g++) {\n                processStops[gapBegin + g - 1] = gapValue * g;\n            }\n            gapBegin = null;\n        }\n    }\n\n    return stops.map(({color}, i) => {\n        return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n    });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n    const centerX = width / 2;\n    const centerY = height / 2;\n    const x = getAbsoluteValue(corner[0], width) - centerX;\n    const y = centerY - getAbsoluteValue(corner[1], height);\n\n    return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n    angle: number | GradientCorner,\n    width: number,\n    height: number\n): [number, number, number, number, number] => {\n    const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n    const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n    const halfWidth = width / 2;\n    const halfHeight = height / 2;\n    const halfLineLength = lineLength / 2;\n\n    const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n    const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n    return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n    const corners = [\n        [0, 0],\n        [0, height],\n        [width, 0],\n        [width, height]\n    ];\n\n    return corners.reduce(\n        (stat, corner) => {\n            const [cx, cy] = corner;\n            const d = distance(x - cx, y - cy);\n            if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n                return {\n                    optimumCorner: corner,\n                    optimumDistance: d\n                };\n            }\n\n            return stat;\n        },\n        {\n            optimumDistance: closest ? Infinity : -Infinity,\n            optimumCorner: null\n        }\n    ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n    gradient: CSSRadialGradientImage,\n    x: number,\n    y: number,\n    width: number,\n    height: number\n): [number, number] => {\n    let rx = 0;\n    let ry = 0;\n\n    switch (gradient.size) {\n        case CSSRadialExtent.CLOSEST_SIDE:\n            // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                rx = Math.min(Math.abs(x), Math.abs(x - width));\n                ry = Math.min(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n\n        case CSSRadialExtent.CLOSEST_CORNER:\n            // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.min(\n                    distance(x, y),\n                    distance(x, y - height),\n                    distance(x - width, y),\n                    distance(x - width, y - height)\n                );\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n                const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n                const [cx, cy] = findCorner(width, height, x, y, true);\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n\n        case CSSRadialExtent.FARTHEST_SIDE:\n            // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                rx = Math.max(Math.abs(x), Math.abs(x - width));\n                ry = Math.max(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n\n        case CSSRadialExtent.FARTHEST_CORNER:\n            // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n            // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.max(\n                    distance(x, y),\n                    distance(x, y - height),\n                    distance(x - width, y),\n                    distance(x - width, y - height)\n                );\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n                const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n                const [cx, cy] = findCorner(width, height, x, y, false);\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n    }\n\n    if (Array.isArray(gradient.size)) {\n        rx = getAbsoluteValue(gradient.size[0], width);\n        ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n    }\n\n    return [rx, ry];\n};\n", "import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n    let angle: number | GradientCorner = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        if (i === 0) {\n            const firstToken = arg[0];\n            if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n                angle = parseNamedSide(arg);\n                return;\n            } else if (isAngle(firstToken)) {\n                angle = angleType.parse(context, firstToken);\n                return;\n            }\n        }\n        const colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n\n    return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n", "import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n    let angle: number | GradientCorner = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        if (i === 0) {\n            const firstToken = arg[0];\n            if (\n                firstToken.type === TokenType.IDENT_TOKEN &&\n                ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n            ) {\n                angle = parseNamedSide(arg);\n                return;\n            } else if (isAngle(firstToken)) {\n                angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n                return;\n            }\n        }\n        const colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n\n    return {\n        angle,\n        stops,\n        type: CSSImageType.LINEAR_GRADIENT\n    };\n};\n", "import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSLinearGradientImage,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n    context: Context,\n    tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n    const angle = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n    let type = CSSImageType.LINEAR_GRADIENT;\n    const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const position: LengthPercentage[] = [];\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        const firstToken = arg[0];\n        if (i === 0) {\n            if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n                type = CSSImageType.LINEAR_GRADIENT;\n                return;\n            } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n                type = CSSImageType.RADIAL_GRADIENT;\n                return;\n            }\n        }\n\n        if (firstToken.type === TokenType.FUNCTION) {\n            if (firstToken.name === 'from') {\n                const color = colorType.parse(context, firstToken.values[0]);\n                stops.push({stop: ZERO_LENGTH, color});\n            } else if (firstToken.name === 'to') {\n                const color = colorType.parse(context, firstToken.values[0]);\n                stops.push({stop: HUNDRED_PERCENT, color});\n            } else if (firstToken.name === 'color-stop') {\n                const values = firstToken.values.filter(nonFunctionArgSeparator);\n                if (values.length === 2) {\n                    const color = colorType.parse(context, values[1]);\n                    const stop = values[0];\n                    if (isNumberToken(stop)) {\n                        stops.push({\n                            stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n                            color\n                        });\n                    }\n                }\n            }\n        }\n    });\n\n    return type === CSSImageType.LINEAR_GRADIENT\n        ? {\n              angle: (angle + deg(180)) % deg(360),\n              stops,\n              type\n          }\n        : {size, shape, stops, position, type};\n};\n", "import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n    let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const stops: UnprocessedGradientColorStop[] = [];\n    const position: LengthPercentage[] = [];\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        let isColorStop = true;\n        if (i === 0) {\n            let isAtPosition = false;\n            isColorStop = arg.reduce((acc, token) => {\n                if (isAtPosition) {\n                    if (isIdentToken(token)) {\n                        switch (token.value) {\n                            case 'center':\n                                position.push(FIFTY_PERCENT);\n                                return acc;\n                            case 'top':\n                            case 'left':\n                                position.push(ZERO_LENGTH);\n                                return acc;\n                            case 'right':\n                            case 'bottom':\n                                position.push(HUNDRED_PERCENT);\n                                return acc;\n                        }\n                    } else if (isLengthPercentage(token) || isLength(token)) {\n                        position.push(token);\n                    }\n                } else if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = CSSRadialShape.CIRCLE;\n                            return false;\n                        case ELLIPSE:\n                            shape = CSSRadialShape.ELLIPSE;\n                            return false;\n                        case 'at':\n                            isAtPosition = true;\n                            return false;\n                        case CLOSEST_SIDE:\n                            size = CSSRadialExtent.CLOSEST_SIDE;\n                            return false;\n                        case COVER:\n                        case FARTHEST_SIDE:\n                            size = CSSRadialExtent.FARTHEST_SIDE;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_CORNER:\n                            size = CSSRadialExtent.CLOSEST_CORNER;\n                            return false;\n                        case FARTHEST_CORNER:\n                            size = CSSRadialExtent.FARTHEST_CORNER;\n                            return false;\n                    }\n                } else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n                return acc;\n            }, isColorStop);\n        }\n\n        if (isColorStop) {\n            const colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n\n    return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n", "import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n    CIRCLE,\n    CLOSEST_CORNER,\n    CLOSEST_SIDE,\n    CONTAIN,\n    COVER,\n    ELLIPSE,\n    FARTHEST_CORNER,\n    FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n    let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const stops: UnprocessedGradientColorStop[] = [];\n    const position: LengthPercentage[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        let isColorStop = true;\n        if (i === 0) {\n            isColorStop = arg.reduce((acc, token) => {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case 'center':\n                            position.push(FIFTY_PERCENT);\n                            return false;\n                        case 'top':\n                        case 'left':\n                            position.push(ZERO_LENGTH);\n                            return false;\n                        case 'right':\n                        case 'bottom':\n                            position.push(HUNDRED_PERCENT);\n                            return false;\n                    }\n                } else if (isLengthPercentage(token) || isLength(token)) {\n                    position.push(token);\n                    return false;\n                }\n\n                return acc;\n            }, isColorStop);\n        } else if (i === 1) {\n            isColorStop = arg.reduce((acc, token) => {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = CSSRadialShape.CIRCLE;\n                            return false;\n                        case ELLIPSE:\n                            shape = CSSRadialShape.ELLIPSE;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_SIDE:\n                            size = CSSRadialExtent.CLOSEST_SIDE;\n                            return false;\n                        case FARTHEST_SIDE:\n                            size = CSSRadialExtent.FARTHEST_SIDE;\n                            return false;\n                        case CLOSEST_CORNER:\n                            size = CSSRadialExtent.CLOSEST_CORNER;\n                            return false;\n                        case COVER:\n                        case FARTHEST_CORNER:\n                            size = CSSRadialExtent.FARTHEST_CORNER;\n                            return false;\n                    }\n                } else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n\n                return acc;\n            }, isColorStop);\n        }\n\n        if (isColorStop) {\n            const colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n\n    return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n    URL,\n    LINEAR_GRADIENT,\n    RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n    return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n    return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n    color: Color;\n    stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n    color: Color;\n    stop: number;\n}\n\nexport interface ICSSImage {\n    type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n    url: string;\n    type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n    stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n    angle: number | GradientCorner;\n    type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n    CIRCLE,\n    ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n    CLOSEST_SIDE,\n    FARTHEST_SIDE,\n    CLOSEST_CORNER,\n    FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n    type: CSSImageType.RADIAL_GRADIENT;\n    shape: CSSRadialShape;\n    size: CSSRadialSize;\n    position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor<ICSSImage> = {\n    name: 'image',\n    parse: (context: Context, value: CSSValue): ICSSImage => {\n        if (value.type === TokenType.URL_TOKEN) {\n            const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n            context.cache.addImage(value.value);\n            return image;\n        }\n\n        if (value.type === TokenType.FUNCTION) {\n            const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n            if (typeof imageFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n            }\n            return imageFunction(context, value.values);\n        }\n\n        throw new Error(`Unsupported image type ${value.type}`);\n    }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n    return (\n        !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n        (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n    );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record<string, (context: Context, args: CSSValue[]) => ICSSImage> = {\n    'linear-gradient': linearGradient,\n    '-moz-linear-gradient': prefixLinearGradient,\n    '-ms-linear-gradient': prefixLinearGradient,\n    '-o-linear-gradient': prefixLinearGradient,\n    '-webkit-linear-gradient': prefixLinearGradient,\n    'radial-gradient': radialGradient,\n    '-moz-radial-gradient': prefixRadialGradient,\n    '-ms-radial-gradient': prefixRadialGradient,\n    '-o-radial-gradient': prefixRadialGradient,\n    '-webkit-radial-gradient': prefixRadialGradient,\n    '-webkit-gradient': webkitGradient\n};\n", "import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor<ICSSImage[]> = {\n    name: 'background-image',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return [];\n        }\n\n        return tokens\n            .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n            .map((value) => image.parse(context, value));\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n    BORDER_BOX = 0,\n    PADDING_BOX = 1,\n    CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor<BackgroundOrigin> = {\n    name: 'background-origin',\n    initialValue: 'border-box',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n        return tokens.map((token) => {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return BACKGROUND_ORIGIN.PADDING_BOX;\n                    case 'content-box':\n                        return BACKGROUND_ORIGIN.CONTENT_BOX;\n                }\n            }\n            return BACKGROUND_ORIGIN.BORDER_BOX;\n        });\n    }\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor<BackgroundPosition> = {\n    name: 'background-position',\n    initialValue: '0% 0%',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n        return parseFunctionArgs(tokens)\n            .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n            .map(parseLengthPercentageTuple);\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n    REPEAT = 0,\n    NO_REPEAT = 1,\n    REPEAT_X = 2,\n    REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor<BackgroundRepeat> = {\n    name: 'background-repeat',\n    initialValue: 'repeat',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n        return parseFunctionArgs(tokens)\n            .map((values) =>\n                values\n                    .filter(isIdentToken)\n                    .map((token) => token.value)\n                    .join(' ')\n            )\n            .map(parseBackgroundRepeat);\n    }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n    switch (value) {\n        case 'no-repeat':\n            return BACKGROUND_REPEAT.NO_REPEAT;\n        case 'repeat-x':\n        case 'repeat no-repeat':\n            return BACKGROUND_REPEAT.REPEAT_X;\n        case 'repeat-y':\n        case 'no-repeat repeat':\n            return BACKGROUND_REPEAT.REPEAT_Y;\n        case 'repeat':\n        default:\n            return BACKGROUND_REPEAT.REPEAT;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n    AUTO = 'auto',\n    CONTAIN = 'contain',\n    COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor<BackgroundSize> = {\n    name: 'background-size',\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n        return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n    }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n    isIdentToken(value) || isLengthPercentage(value);\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n    name: `border-${side}-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor<BorderRadius> => ({\n    name: `border-radius-${side}`,\n    initialValue: '0 0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n        parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-left');\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n    NONE = 0,\n    SOLID = 1,\n    DASHED = 2,\n    DOTTED = 3,\n    DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor<BORDER_STYLE> => ({\n    name: `border-${side}-style`,\n    initialValue: 'solid',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, style: string): BORDER_STYLE => {\n        switch (style) {\n            case 'none':\n                return BORDER_STYLE.NONE;\n            case 'dashed':\n                return BORDER_STYLE.DASHED;\n            case 'dotted':\n                return BORDER_STYLE.DOTTED;\n            case 'double':\n                return BORDER_STYLE.DOUBLE;\n        }\n        return BORDER_STYLE.SOLID;\n    }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\n    name: `border-${side}-width`,\n    initialValue: '0',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = borderWidthForSide('left');\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n    name: `color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n    LTR = 0,\n    RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor<DIRECTION> = {\n    name: 'direction',\n    initialValue: 'ltr',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, direction: string) => {\n        switch (direction) {\n            case 'rtl':\n                return DIRECTION.RTL;\n            case 'ltr':\n            default:\n                return DIRECTION.LTR;\n        }\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n    NONE = 0,\n    BLOCK = 1 << 1,\n    INLINE = 1 << 2,\n    RUN_IN = 1 << 3,\n    FLOW = 1 << 4,\n    FLOW_ROOT = 1 << 5,\n    TABLE = 1 << 6,\n    FLEX = 1 << 7,\n    GRID = 1 << 8,\n    RUBY = 1 << 9,\n    SUBGRID = 1 << 10,\n    LIST_ITEM = 1 << 11,\n    TABLE_ROW_GROUP = 1 << 12,\n    TABLE_HEADER_GROUP = 1 << 13,\n    TABLE_FOOTER_GROUP = 1 << 14,\n    TABLE_ROW = 1 << 15,\n    TABLE_CELL = 1 << 16,\n    TABLE_COLUMN_GROUP = 1 << 17,\n    TABLE_COLUMN = 1 << 18,\n    TABLE_CAPTION = 1 << 19,\n    RUBY_BASE = 1 << 20,\n    RUBY_TEXT = 1 << 21,\n    RUBY_BASE_CONTAINER = 1 << 22,\n    RUBY_TEXT_CONTAINER = 1 << 23,\n    CONTENTS = 1 << 24,\n    INLINE_BLOCK = 1 << 25,\n    INLINE_LIST_ITEM = 1 << 26,\n    INLINE_TABLE = 1 << 27,\n    INLINE_FLEX = 1 << 28,\n    INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor<Display> = {\n    name: 'display',\n    initialValue: 'inline-block',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): Display => {\n        return tokens.filter(isIdentToken).reduce((bit, token) => {\n            return bit | parseDisplayValue(token.value);\n        }, DISPLAY.NONE);\n    }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n    switch (display) {\n        case 'block':\n        case '-webkit-box':\n            return DISPLAY.BLOCK;\n        case 'inline':\n            return DISPLAY.INLINE;\n        case 'run-in':\n            return DISPLAY.RUN_IN;\n        case 'flow':\n            return DISPLAY.FLOW;\n        case 'flow-root':\n            return DISPLAY.FLOW_ROOT;\n        case 'table':\n            return DISPLAY.TABLE;\n        case 'flex':\n        case '-webkit-flex':\n            return DISPLAY.FLEX;\n        case 'grid':\n        case '-ms-grid':\n            return DISPLAY.GRID;\n        case 'ruby':\n            return DISPLAY.RUBY;\n        case 'subgrid':\n            return DISPLAY.SUBGRID;\n        case 'list-item':\n            return DISPLAY.LIST_ITEM;\n        case 'table-row-group':\n            return DISPLAY.TABLE_ROW_GROUP;\n        case 'table-header-group':\n            return DISPLAY.TABLE_HEADER_GROUP;\n        case 'table-footer-group':\n            return DISPLAY.TABLE_FOOTER_GROUP;\n        case 'table-row':\n            return DISPLAY.TABLE_ROW;\n        case 'table-cell':\n            return DISPLAY.TABLE_CELL;\n        case 'table-column-group':\n            return DISPLAY.TABLE_COLUMN_GROUP;\n        case 'table-column':\n            return DISPLAY.TABLE_COLUMN;\n        case 'table-caption':\n            return DISPLAY.TABLE_CAPTION;\n        case 'ruby-base':\n            return DISPLAY.RUBY_BASE;\n        case 'ruby-text':\n            return DISPLAY.RUBY_TEXT;\n        case 'ruby-base-container':\n            return DISPLAY.RUBY_BASE_CONTAINER;\n        case 'ruby-text-container':\n            return DISPLAY.RUBY_TEXT_CONTAINER;\n        case 'contents':\n            return DISPLAY.CONTENTS;\n        case 'inline-block':\n            return DISPLAY.INLINE_BLOCK;\n        case 'inline-list-item':\n            return DISPLAY.INLINE_LIST_ITEM;\n        case 'inline-table':\n            return DISPLAY.INLINE_TABLE;\n        case 'inline-flex':\n            return DISPLAY.INLINE_FLEX;\n        case 'inline-grid':\n            return DISPLAY.INLINE_GRID;\n    }\n\n    return DISPLAY.NONE;\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n    NONE = 0,\n    LEFT = 1,\n    RIGHT = 2,\n    INLINE_START = 3,\n    INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor<FLOAT> = {\n    name: 'float',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, float: string) => {\n        switch (float) {\n            case 'left':\n                return FLOAT.LEFT;\n            case 'right':\n                return FLOAT.RIGHT;\n            case 'inline-start':\n                return FLOAT.INLINE_START;\n            case 'inline-end':\n                return FLOAT.INLINE_END;\n        }\n        return FLOAT.NONE;\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor<number> = {\n    name: 'letter-spacing',\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n            return 0;\n        }\n\n        if (token.type === TokenType.NUMBER_TOKEN) {\n            return token.number;\n        }\n\n        if (token.type === TokenType.DIMENSION_TOKEN) {\n            return token.number;\n        }\n\n        return 0;\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n    NORMAL = 'normal',\n    STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\n    name: 'line-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n        switch (lineBreak) {\n            case 'strict':\n                return LINE_BREAK.STRICT;\n            case 'normal':\n            default:\n                return LINE_BREAK.NORMAL;\n        }\n    }\n};\n", "import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n    name: 'line-height',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n    if (isIdentToken(token) && token.value === 'normal') {\n        return 1.2 * fontSize;\n    } else if (token.type === TokenType.NUMBER_TOKEN) {\n        return fontSize * token.number;\n    } else if (isLengthPercentage(token)) {\n        return getAbsoluteValue(token, fontSize);\n    }\n\n    return fontSize;\n};\n", "import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor<ICSSImage | null> = {\n    name: 'list-style-image',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n            return null;\n        }\n\n        return image.parse(context, token);\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n    INSIDE = 0,\n    OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor<LIST_STYLE_POSITION> = {\n    name: 'list-style-position',\n    initialValue: 'outside',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, position: string) => {\n        switch (position) {\n            case 'inside':\n                return LIST_STYLE_POSITION.INSIDE;\n            case 'outside':\n            default:\n                return LIST_STYLE_POSITION.OUTSIDE;\n        }\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n    NONE = -1,\n    DISC = 0,\n    CIRCLE = 1,\n    SQUARE = 2,\n    DECIMAL = 3,\n    CJK_DECIMAL = 4,\n    DECIMAL_LEADING_ZERO = 5,\n    LOWER_ROMAN = 6,\n    UPPER_ROMAN = 7,\n    LOWER_GREEK = 8,\n    LOWER_ALPHA = 9,\n    UPPER_ALPHA = 10,\n    ARABIC_INDIC = 11,\n    ARMENIAN = 12,\n    BENGALI = 13,\n    CAMBODIAN = 14,\n    CJK_EARTHLY_BRANCH = 15,\n    CJK_HEAVENLY_STEM = 16,\n    CJK_IDEOGRAPHIC = 17,\n    DEVANAGARI = 18,\n    ETHIOPIC_NUMERIC = 19,\n    GEORGIAN = 20,\n    GUJARATI = 21,\n    GURMUKHI = 22,\n    HEBREW = 22,\n    HIRAGANA = 23,\n    HIRAGANA_IROHA = 24,\n    JAPANESE_FORMAL = 25,\n    JAPANESE_INFORMAL = 26,\n    KANNADA = 27,\n    KATAKANA = 28,\n    KATAKANA_IROHA = 29,\n    KHMER = 30,\n    KOREAN_HANGUL_FORMAL = 31,\n    KOREAN_HANJA_FORMAL = 32,\n    KOREAN_HANJA_INFORMAL = 33,\n    LAO = 34,\n    LOWER_ARMENIAN = 35,\n    MALAYALAM = 36,\n    MONGOLIAN = 37,\n    MYANMAR = 38,\n    ORIYA = 39,\n    PERSIAN = 40,\n    SIMP_CHINESE_FORMAL = 41,\n    SIMP_CHINESE_INFORMAL = 42,\n    TAMIL = 43,\n    TELUGU = 44,\n    THAI = 45,\n    TIBETAN = 46,\n    TRAD_CHINESE_FORMAL = 47,\n    TRAD_CHINESE_INFORMAL = 48,\n    UPPER_ARMENIAN = 49,\n    DISCLOSURE_OPEN = 50,\n    DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor<LIST_STYLE_TYPE> = {\n    name: 'list-style-type',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, type: string) => {\n        switch (type) {\n            case 'disc':\n                return LIST_STYLE_TYPE.DISC;\n            case 'circle':\n                return LIST_STYLE_TYPE.CIRCLE;\n            case 'square':\n                return LIST_STYLE_TYPE.SQUARE;\n            case 'decimal':\n                return LIST_STYLE_TYPE.DECIMAL;\n            case 'cjk-decimal':\n                return LIST_STYLE_TYPE.CJK_DECIMAL;\n            case 'decimal-leading-zero':\n                return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n            case 'lower-roman':\n                return LIST_STYLE_TYPE.LOWER_ROMAN;\n            case 'upper-roman':\n                return LIST_STYLE_TYPE.UPPER_ROMAN;\n            case 'lower-greek':\n                return LIST_STYLE_TYPE.LOWER_GREEK;\n            case 'lower-alpha':\n                return LIST_STYLE_TYPE.LOWER_ALPHA;\n            case 'upper-alpha':\n                return LIST_STYLE_TYPE.UPPER_ALPHA;\n            case 'arabic-indic':\n                return LIST_STYLE_TYPE.ARABIC_INDIC;\n            case 'armenian':\n                return LIST_STYLE_TYPE.ARMENIAN;\n            case 'bengali':\n                return LIST_STYLE_TYPE.BENGALI;\n            case 'cambodian':\n                return LIST_STYLE_TYPE.CAMBODIAN;\n            case 'cjk-earthly-branch':\n                return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n            case 'cjk-heavenly-stem':\n                return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n            case 'cjk-ideographic':\n                return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n            case 'devanagari':\n                return LIST_STYLE_TYPE.DEVANAGARI;\n            case 'ethiopic-numeric':\n                return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n            case 'georgian':\n                return LIST_STYLE_TYPE.GEORGIAN;\n            case 'gujarati':\n                return LIST_STYLE_TYPE.GUJARATI;\n            case 'gurmukhi':\n                return LIST_STYLE_TYPE.GURMUKHI;\n            case 'hebrew':\n                return LIST_STYLE_TYPE.HEBREW;\n            case 'hiragana':\n                return LIST_STYLE_TYPE.HIRAGANA;\n            case 'hiragana-iroha':\n                return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n            case 'japanese-formal':\n                return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n            case 'japanese-informal':\n                return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n            case 'kannada':\n                return LIST_STYLE_TYPE.KANNADA;\n            case 'katakana':\n                return LIST_STYLE_TYPE.KATAKANA;\n            case 'katakana-iroha':\n                return LIST_STYLE_TYPE.KATAKANA_IROHA;\n            case 'khmer':\n                return LIST_STYLE_TYPE.KHMER;\n            case 'korean-hangul-formal':\n                return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n            case 'korean-hanja-formal':\n                return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n            case 'korean-hanja-informal':\n                return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n            case 'lao':\n                return LIST_STYLE_TYPE.LAO;\n            case 'lower-armenian':\n                return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n            case 'malayalam':\n                return LIST_STYLE_TYPE.MALAYALAM;\n            case 'mongolian':\n                return LIST_STYLE_TYPE.MONGOLIAN;\n            case 'myanmar':\n                return LIST_STYLE_TYPE.MYANMAR;\n            case 'oriya':\n                return LIST_STYLE_TYPE.ORIYA;\n            case 'persian':\n                return LIST_STYLE_TYPE.PERSIAN;\n            case 'simp-chinese-formal':\n                return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n            case 'simp-chinese-informal':\n                return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n            case 'tamil':\n                return LIST_STYLE_TYPE.TAMIL;\n            case 'telugu':\n                return LIST_STYLE_TYPE.TELUGU;\n            case 'thai':\n                return LIST_STYLE_TYPE.THAI;\n            case 'tibetan':\n                return LIST_STYLE_TYPE.TIBETAN;\n            case 'trad-chinese-formal':\n                return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n            case 'trad-chinese-informal':\n                return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n            case 'upper-armenian':\n                return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n            case 'disclosure-open':\n                return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n            case 'disclosure-closed':\n                return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n            case 'none':\n            default:\n                return LIST_STYLE_TYPE.NONE;\n        }\n    }\n};\n", "import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n    name: `margin-${side}`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n    VISIBLE = 0,\n    HIDDEN = 1,\n    SCROLL = 2,\n    CLIP = 3,\n    AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor<OVERFLOW[]> = {\n    name: 'overflow',\n    initialValue: 'visible',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n        return tokens.filter(isIdentToken).map((overflow) => {\n            switch (overflow.value) {\n                case 'hidden':\n                    return OVERFLOW.HIDDEN;\n                case 'scroll':\n                    return OVERFLOW.SCROLL;\n                case 'clip':\n                    return OVERFLOW.CLIP;\n                case 'auto':\n                    return OVERFLOW.AUTO;\n                case 'visible':\n                default:\n                    return OVERFLOW.VISIBLE;\n            }\n        });\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n    NORMAL = 'normal',\n    BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor<OVERFLOW_WRAP> = {\n    name: 'overflow-wrap',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, overflow: string) => {\n        switch (overflow) {\n            case 'break-word':\n                return OVERFLOW_WRAP.BREAK_WORD;\n            case 'normal':\n            default:\n                return OVERFLOW_WRAP.NORMAL;\n        }\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n    name: `padding-${side}`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n    LEFT = 0,\n    CENTER = 1,\n    RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor<TEXT_ALIGN> = {\n    name: 'text-align',\n    initialValue: 'left',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, textAlign: string) => {\n        switch (textAlign) {\n            case 'right':\n                return TEXT_ALIGN.RIGHT;\n            case 'center':\n            case 'justify':\n                return TEXT_ALIGN.CENTER;\n            case 'left':\n            default:\n                return TEXT_ALIGN.LEFT;\n        }\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n    STATIC = 0,\n    RELATIVE = 1,\n    ABSOLUTE = 2,\n    FIXED = 3,\n    STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor<POSITION> = {\n    name: 'position',\n    initialValue: 'static',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, position: string) => {\n        switch (position) {\n            case 'relative':\n                return POSITION.RELATIVE;\n            case 'absolute':\n                return POSITION.ABSOLUTE;\n            case 'fixed':\n                return POSITION.FIXED;\n            case 'sticky':\n                return POSITION.STICKY;\n        }\n\n        return POSITION.STATIC;\n    }\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n    color: Color;\n    offsetX: Length;\n    offsetY: Length;\n    blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor<TextShadow> = {\n    name: 'text-shadow',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n\n        return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n            const shadow: TextShadowItem = {\n                color: COLORS.TRANSPARENT,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH\n            };\n            let c = 0;\n            for (let i = 0; i < values.length; i++) {\n                const token = values[i];\n                if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    } else if (c === 1) {\n                        shadow.offsetY = token;\n                    } else {\n                        shadow.blur = token;\n                    }\n                    c++;\n                } else {\n                    shadow.color = color.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n    NONE = 0,\n    LOWERCASE = 1,\n    UPPERCASE = 2,\n    CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor<TEXT_TRANSFORM> = {\n    name: 'text-transform',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, textTransform: string) => {\n        switch (textTransform) {\n            case 'uppercase':\n                return TEXT_TRANSFORM.UPPERCASE;\n            case 'lowercase':\n                return TEXT_TRANSFORM.LOWERCASE;\n            case 'capitalize':\n                return TEXT_TRANSFORM.CAPITALIZE;\n        }\n\n        return TEXT_TRANSFORM.NONE;\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor<Transform> = {\n    name: 'transform',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n            return null;\n        }\n\n        if (token.type === TokenType.FUNCTION) {\n            const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n            if (typeof transformFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n            }\n            return transformFunction(token.values);\n        }\n\n        return null;\n    }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n    const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n    return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n    const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n    const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n    return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n    [key: string]: (args: CSSValue[]) => Transform;\n} = {\n    matrix: matrix,\n    matrix3d: matrix3d\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 50,\n    flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor<TransformOrigin> = {\n    name: 'transform-origin',\n    initialValue: '50% 50%',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n        if (origins.length !== 2) {\n            return DEFAULT;\n        }\n\n        return [origins[0], origins[1]];\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n    VISIBLE = 0,\n    HIDDEN = 1,\n    COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor<VISIBILITY> = {\n    name: 'visible',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, visibility: string) => {\n        switch (visibility) {\n            case 'hidden':\n                return VISIBILITY.HIDDEN;\n            case 'collapse':\n                return VISIBILITY.COLLAPSE;\n            case 'visible':\n            default:\n                return VISIBILITY.VISIBLE;\n        }\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n    NORMAL = 'normal',\n    BREAK_ALL = 'break-all',\n    KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor<WORD_BREAK> = {\n    name: 'word-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n        switch (wordBreak) {\n            case 'break-all':\n                return WORD_BREAK.BREAK_ALL;\n            case 'keep-all':\n                return WORD_BREAK.KEEP_ALL;\n            case 'normal':\n            default:\n                return WORD_BREAK.NORMAL;\n        }\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n    order: number;\n    auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor<zIndex> = {\n    name: 'z-index',\n    initialValue: 'auto',\n    prefix: false,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue): zIndex => {\n        if (token.type === TokenType.IDENT_TOKEN) {\n            return {auto: true, order: 0};\n        }\n\n        if (isNumberToken(token)) {\n            return {auto: false, order: token.number};\n        }\n\n        throw new Error(`Invalid z-index number parsed`);\n    }\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor<number> = {\n    name: 'time',\n    parse: (_context: Context, value: CSSValue): number => {\n        if (value.type === TokenType.DIMENSION_TOKEN) {\n            switch (value.unit.toLowerCase()) {\n                case 's':\n                    return 1000 * value.number;\n                case 'ms':\n                    return value.number;\n            }\n        }\n\n        throw new Error(`Unsupported time type`);\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor<number> = {\n    name: 'opacity',\n    initialValue: '1',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n        return 1;\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n    name: `text-decoration-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n    NONE = 0,\n    UNDERLINE = 1,\n    OVERLINE = 2,\n    LINE_THROUGH = 3,\n    BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor<TextDecorationLine> = {\n    name: 'text-decoration-line',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n        return tokens\n            .filter(isIdentToken)\n            .map((token) => {\n                switch (token.value) {\n                    case 'underline':\n                        return TEXT_DECORATION_LINE.UNDERLINE;\n                    case 'overline':\n                        return TEXT_DECORATION_LINE.OVERLINE;\n                    case 'line-through':\n                        return TEXT_DECORATION_LINE.LINE_THROUGH;\n                    case 'none':\n                        return TEXT_DECORATION_LINE.BLINK;\n                }\n                return TEXT_DECORATION_LINE.NONE;\n            })\n            .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor<FontFamily> = {\n    name: `font-family`,\n    initialValue: '',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        const accumulator: string[] = [];\n        const results: string[] = [];\n        tokens.forEach((token) => {\n            switch (token.type) {\n                case TokenType.IDENT_TOKEN:\n                case TokenType.STRING_TOKEN:\n                    accumulator.push(token.value);\n                    break;\n                case TokenType.NUMBER_TOKEN:\n                    accumulator.push(token.number.toString());\n                    break;\n                case TokenType.COMMA_TOKEN:\n                    results.push(accumulator.join(' '));\n                    accumulator.length = 0;\n                    break;\n            }\n        });\n        if (accumulator.length) {\n            results.push(accumulator.join(' '));\n        }\n        return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n    name: `font-size`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'length'\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor<number> = {\n    name: 'font-weight',\n    initialValue: 'normal',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n\n        if (isIdentToken(token)) {\n            switch (token.value) {\n                case 'bold':\n                    return 700;\n                case 'normal':\n                default:\n                    return 400;\n            }\n        }\n\n        return 400;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor<string[]> = {\n    name: 'font-variant',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]): string[] => {\n        return tokens.filter(isIdentToken).map((token) => token.value);\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n    NORMAL = 'normal',\n    ITALIC = 'italic',\n    OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor<FONT_STYLE> = {\n    name: 'font-style',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, overflow: string) => {\n        switch (overflow) {\n            case 'oblique':\n                return FONT_STYLE.OBLIQUE;\n            case 'italic':\n                return FONT_STYLE.ITALIC;\n            case 'normal':\n            default:\n                return FONT_STYLE.NORMAL;\n        }\n    }\n};\n", "export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n", "import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor<Content> = {\n    name: 'content',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return [];\n        }\n\n        return tokens;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n    counter: string;\n    increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor<CounterIncrement> = {\n    name: 'counter-increment',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return null;\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return null;\n        }\n\n        const increments = [];\n        const filtered = tokens.filter(nonWhiteSpace);\n\n        for (let i = 0; i < filtered.length; i++) {\n            const counter = filtered[i];\n            const next = filtered[i + 1];\n            if (counter.type === TokenType.IDENT_TOKEN) {\n                const increment = next && isNumberToken(next) ? next.number : 1;\n                increments.push({counter: counter.value, increment});\n            }\n        }\n\n        return increments;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n    counter: string;\n    reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor<CounterReset> = {\n    name: 'counter-reset',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const resets = [];\n        const filtered = tokens.filter(nonWhiteSpace);\n\n        for (let i = 0; i < filtered.length; i++) {\n            const counter = filtered[i];\n            const next = filtered[i + 1];\n            if (isIdentToken(counter) && counter.value !== 'none') {\n                const reset = next && isNumberToken(next) ? next.number : 0;\n                resets.push({counter: counter.value, reset});\n            }\n        }\n\n        return resets;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor<number[]> = {\n    name: 'duration',\n    initialValue: '0s',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (context: Context, tokens: CSSValue[]) => {\n        return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n    open: string;\n    close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor<Quotes> = {\n    name: 'quotes',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return null;\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return null;\n        }\n\n        const quotes = [];\n        const filtered = tokens.filter(isStringToken);\n\n        if (filtered.length % 2 !== 0) {\n            return null;\n        }\n\n        for (let i = 0; i < filtered.length; i += 2) {\n            const open = filtered[i].value;\n            const close = filtered[i + 1].value;\n            quotes.push({open, close});\n        }\n\n        return quotes;\n    }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n    if (!quotes) {\n        return '';\n    }\n\n    const quote = quotes[Math.min(depth, quotes.length - 1)];\n    if (!quote) {\n        return '';\n    }\n\n    return open ? quote.open : quote.close;\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n    inset: boolean;\n    color: Color;\n    offsetX: Length;\n    offsetY: Length;\n    blur: Length;\n    spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor<BoxShadow> = {\n    name: 'box-shadow',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n\n        return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n            const shadow: BoxShadowItem = {\n                color: 0x000000ff,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH,\n                spread: ZERO_LENGTH,\n                inset: false\n            };\n            let c = 0;\n            for (let i = 0; i < values.length; i++) {\n                const token = values[i];\n                if (isIdentWithValue(token, 'inset')) {\n                    shadow.inset = true;\n                } else if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    } else if (c === 1) {\n                        shadow.offsetY = token;\n                    } else if (c === 2) {\n                        shadow.blur = token;\n                    } else {\n                        shadow.spread = token;\n                    }\n                    c++;\n                } else {\n                    shadow.color = color.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n    FILL,\n    STROKE,\n    MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor<PaintOrder> = {\n    name: 'paint-order',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n        const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n        const layers: PaintOrder = [];\n\n        tokens.filter(isIdentToken).forEach((token) => {\n            switch (token.value) {\n                case 'stroke':\n                    layers.push(PAINT_ORDER_LAYER.STROKE);\n                    break;\n                case 'fill':\n                    layers.push(PAINT_ORDER_LAYER.FILL);\n                    break;\n                case 'markers':\n                    layers.push(PAINT_ORDER_LAYER.MARKERS);\n                    break;\n            }\n        });\n        DEFAULT_VALUE.forEach((value) => {\n            if (layers.indexOf(value) === -1) {\n                layers.push(value);\n            }\n        });\n\n        return layers;\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n    name: `-webkit-text-stroke-color`,\n    initialValue: 'currentcolor',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor<number> = {\n    name: `-webkit-text-stroke-width`,\n    initialValue: '0',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n};\n", "import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n    borderBottomColor,\n    borderLeftColor,\n    borderRightColor,\n    borderTopColor\n} from './property-descriptors/border-color';\nimport {\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    borderTopLeftRadius,\n    borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n    borderBottomStyle,\n    borderLeftStyle,\n    borderRightStyle,\n    borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n    borderBottomWidth,\n    borderLeftWidth,\n    borderRightWidth,\n    borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n    animationDuration: ReturnType<typeof duration.parse>;\n    backgroundClip: ReturnType<typeof backgroundClip.parse>;\n    backgroundColor: Color;\n    backgroundImage: ReturnType<typeof backgroundImage.parse>;\n    backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n    backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n    backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n    backgroundSize: ReturnType<typeof backgroundSize.parse>;\n    borderTopColor: Color;\n    borderRightColor: Color;\n    borderBottomColor: Color;\n    borderLeftColor: Color;\n    borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n    borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n    borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n    borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n    borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n    borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n    borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n    borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n    borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n    borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n    borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n    borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n    boxShadow: ReturnType<typeof boxShadow.parse>;\n    color: Color;\n    direction: ReturnType<typeof direction.parse>;\n    display: ReturnType<typeof display.parse>;\n    float: ReturnType<typeof float.parse>;\n    fontFamily: ReturnType<typeof fontFamily.parse>;\n    fontSize: LengthPercentage;\n    fontStyle: ReturnType<typeof fontStyle.parse>;\n    fontVariant: ReturnType<typeof fontVariant.parse>;\n    fontWeight: ReturnType<typeof fontWeight.parse>;\n    letterSpacing: ReturnType<typeof letterSpacing.parse>;\n    lineBreak: ReturnType<typeof lineBreak.parse>;\n    lineHeight: CSSValue;\n    listStyleImage: ReturnType<typeof listStyleImage.parse>;\n    listStylePosition: ReturnType<typeof listStylePosition.parse>;\n    listStyleType: ReturnType<typeof listStyleType.parse>;\n    marginTop: CSSValue;\n    marginRight: CSSValue;\n    marginBottom: CSSValue;\n    marginLeft: CSSValue;\n    opacity: ReturnType<typeof opacity.parse>;\n    overflowX: OVERFLOW;\n    overflowY: OVERFLOW;\n    overflowWrap: ReturnType<typeof overflowWrap.parse>;\n    paddingTop: LengthPercentage;\n    paddingRight: LengthPercentage;\n    paddingBottom: LengthPercentage;\n    paddingLeft: LengthPercentage;\n    paintOrder: ReturnType<typeof paintOrder.parse>;\n    position: ReturnType<typeof position.parse>;\n    textAlign: ReturnType<typeof textAlign.parse>;\n    textDecorationColor: Color;\n    textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n    textShadow: ReturnType<typeof textShadow.parse>;\n    textTransform: ReturnType<typeof textTransform.parse>;\n    transform: ReturnType<typeof transform.parse>;\n    transformOrigin: ReturnType<typeof transformOrigin.parse>;\n    visibility: ReturnType<typeof visibility.parse>;\n    webkitTextStrokeColor: Color;\n    webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n    wordBreak: ReturnType<typeof wordBreak.parse>;\n    zIndex: ReturnType<typeof zIndex.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.animationDuration = parse(context, duration, declaration.animationDuration);\n        this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n        this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n        this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n        this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n        this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n        this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n        this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n        this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n        this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n        this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n        this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n        this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n        this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n        this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n        this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n        this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n        this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n        this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n        this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n        this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n        this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n        this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n        this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n        this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n        this.color = parse(context, color, declaration.color);\n        this.direction = parse(context, direction, declaration.direction);\n        this.display = parse(context, display, declaration.display);\n        this.float = parse(context, float, declaration.cssFloat);\n        this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n        this.fontSize = parse(context, fontSize, declaration.fontSize);\n        this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n        this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n        this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n        this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n        this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n        this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n        this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n        this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n        this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n        this.marginTop = parse(context, marginTop, declaration.marginTop);\n        this.marginRight = parse(context, marginRight, declaration.marginRight);\n        this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n        this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n        this.opacity = parse(context, opacity, declaration.opacity);\n        const overflowTuple = parse(context, overflow, declaration.overflow);\n        this.overflowX = overflowTuple[0];\n        this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n        this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n        this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n        this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n        this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n        this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n        this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n        this.position = parse(context, position, declaration.position);\n        this.textAlign = parse(context, textAlign, declaration.textAlign);\n        this.textDecorationColor = parse(\n            context,\n            textDecorationColor,\n            declaration.textDecorationColor ?? declaration.color\n        );\n        this.textDecorationLine = parse(\n            context,\n            textDecorationLine,\n            declaration.textDecorationLine ?? declaration.textDecoration\n        );\n        this.textShadow = parse(context, textShadow, declaration.textShadow);\n        this.textTransform = parse(context, textTransform, declaration.textTransform);\n        this.transform = parse(context, transform, declaration.transform);\n        this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n        this.visibility = parse(context, visibility, declaration.visibility);\n        this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n        this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n        this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n        this.zIndex = parse(context, zIndex, declaration.zIndex);\n    }\n\n    isVisible(): boolean {\n        return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n    }\n\n    isTransparent(): boolean {\n        return isTransparent(this.backgroundColor);\n    }\n\n    isTransformed(): boolean {\n        return this.transform !== null;\n    }\n\n    isPositioned(): boolean {\n        return this.position !== POSITION.STATIC;\n    }\n\n    isPositionedWithZIndex(): boolean {\n        return this.isPositioned() && !this.zIndex.auto;\n    }\n\n    isFloating(): boolean {\n        return this.float !== FLOAT.NONE;\n    }\n\n    isInlineLevel(): boolean {\n        return (\n            contains(this.display, DISPLAY.INLINE) ||\n            contains(this.display, DISPLAY.INLINE_BLOCK) ||\n            contains(this.display, DISPLAY.INLINE_FLEX) ||\n            contains(this.display, DISPLAY.INLINE_GRID) ||\n            contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n            contains(this.display, DISPLAY.INLINE_TABLE)\n        );\n    }\n}\n\nexport class CSSParsedPseudoDeclaration {\n    content: ReturnType<typeof content.parse>;\n    quotes: ReturnType<typeof quotes.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.content = parse(context, content, declaration.content);\n        this.quotes = parse(context, quotes, declaration.quotes);\n    }\n}\n\nexport class CSSParsedCounterDeclaration {\n    counterIncrement: ReturnType<typeof counterIncrement.parse>;\n    counterReset: ReturnType<typeof counterReset.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n        this.counterReset = parse(context, counterReset, declaration.counterReset);\n    }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor<any>, style?: string | null) => {\n    const tokenizer = new Tokenizer();\n    const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n    tokenizer.write(value);\n    const parser = new Parser(tokenizer.read());\n    switch (descriptor.type) {\n        case PropertyDescriptorParsingType.IDENT_VALUE:\n            const token = parser.parseComponentValue();\n            return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n        case PropertyDescriptorParsingType.VALUE:\n            return descriptor.parse(context, parser.parseComponentValue());\n        case PropertyDescriptorParsingType.LIST:\n            return descriptor.parse(context, parser.parseComponentValues());\n        case PropertyDescriptorParsingType.TOKEN_VALUE:\n            return parser.parseComponentValue();\n        case PropertyDescriptorParsingType.TYPE_VALUE:\n            switch (descriptor.format) {\n                case 'angle':\n                    return angle.parse(context, parser.parseComponentValue());\n                case 'color':\n                    return colorType.parse(context, parser.parseComponentValue());\n                case 'image':\n                    return image.parse(context, parser.parseComponentValue());\n                case 'length':\n                    const length = parser.parseComponentValue();\n                    return isLength(length) ? length : ZERO_LENGTH;\n                case 'length-percentage':\n                    const value = parser.parseComponentValue();\n                    return isLengthPercentage(value) ? value : ZERO_LENGTH;\n                case 'time':\n                    return time.parse(context, parser.parseComponentValue());\n            }\n            break;\n    }\n};\n", "const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n    NONE,\n    ALL,\n    CLONE,\n    PARSE,\n    RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n    const attribute = element.getAttribute(elementDebuggerAttribute);\n    switch (attribute) {\n        case 'all':\n            return DebuggerType.ALL;\n        case 'clone':\n            return DebuggerType.CLONE;\n        case 'parse':\n            return DebuggerType.PARSE;\n        case 'render':\n            return DebuggerType.RENDER;\n        default:\n            return DebuggerType.NONE;\n    }\n};\n\nexport const isDebugging = (element: Element, type: Omit<DebuggerType, DebuggerType.NONE>): boolean => {\n    const elementType = getElementDebugType(element);\n    return elementType === DebuggerType.ALL || type === elementType;\n};\n", "import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n    CREATES_STACKING_CONTEXT = 1 << 1,\n    CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n    IS_LIST_OWNER = 1 << 3,\n    DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n    readonly styles: CSSParsedDeclaration;\n    readonly textNodes: TextContainer[] = [];\n    readonly elements: ElementContainer[] = [];\n    bounds: Bounds;\n    flags = 0;\n\n    constructor(protected readonly context: Context, element: Element) {\n        if (isDebugging(element, DebuggerType.PARSE)) {\n            debugger;\n        }\n\n        this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n        if (isHTMLElementNode(element)) {\n            if (this.styles.animationDuration.some((duration) => duration > 0)) {\n                element.style.animationDuration = '0s';\n            }\n\n            if (this.styles.transform !== null) {\n                // getBoundingClientRect takes transforms into account\n                element.style.transform = 'none';\n            }\n        }\n\n        this.bounds = parseBounds(this.context, element);\n\n        if (isDebugging(element, DebuggerType.RENDER)) {\n            this.flags |= FLAGS.DEBUG_RENDER;\n        }\n    }\n}\n", "export const base64 =\n    'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n", "import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n    const buffer = decode(base64);\n    const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    const headerLength = 24;\n\n    const index = slice16(view16, headerLength / 2, view32[4] / 2);\n    const data =\n        view32[5] === 2\n            ? slice16(view16, (headerLength + view32[4]) / 2)\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n    initialValue: int;\n    errorValue: int;\n    highStart: int;\n    highValueIndex: int;\n    index: Uint16Array | number[];\n    data: Uint32Array | Uint16Array | number[];\n\n    constructor(\n        initialValue: int,\n        errorValue: int,\n        highStart: int,\n        highValueIndex: int,\n        index: Uint16Array | number[],\n        data: Uint32Array | Uint16Array | number[]\n    ) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    get(codePoint: number): number {\n        let ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    }\n}\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n    let bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = '';\n\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    } else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n\n    return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n};\n", "import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n    Other,\n    Prepend,\n    CR,\n    LF,\n    Control,\n    Extend,\n    Regional_Indicator,\n    SpacingMark,\n    L,\n    V,\n    T,\n    LV,\n    LVT,\n    ZWJ,\n    Extended_Pictographic,\n    RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n    const codePoints = [];\n    let i = 0;\n    const length = str.length;\n    while (i < length) {\n        const value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            const extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            } else {\n                codePoints.push(value);\n                i--;\n            }\n        } else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n    if (String.fromCodePoint) {\n        return String.fromCodePoint(...codePoints);\n    }\n\n    const length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n\n    const codeUnits = [];\n\n    let index = -1;\n    let result = '';\n    while (++index < length) {\n        let codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        } else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode(...codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n    let prevIndex = index - 2;\n    let prev = classTypes[prevIndex];\n    const current = classTypes[index - 1];\n    const next = classTypes[index];\n    // GB3 Do not break between a CR and LF\n    if (current === CR && next === LF) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB4 Otherwise, break before and after controls.\n    if (current === CR || current === LF || current === Control) {\n        return BREAK_ALLOWED;\n    }\n\n    // GB5\n    if (next === CR || next === LF || next === Control) {\n        return BREAK_ALLOWED;\n    }\n\n    // Do not break Hangul syllable sequences.\n    // GB6\n    if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB7\n    if ((current === LV || current === V) && (next === V || next === T)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB8\n    if ((current === LVT || current === T) && next === T) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB9 Do not break before extending characters or ZWJ.\n    if (next === ZWJ || next === Extend) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // Do not break before SpacingMarks, or after Prepend characters.\n    // GB9a\n    if (next === SpacingMark) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB9a\n    if (current === Prepend) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n    if (current === ZWJ && next === Extended_Pictographic) {\n        while (prev === Extend) {\n            prev = classTypes[--prevIndex];\n        }\n        if (prev === Extended_Pictographic) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    // GB12 Do not break within emoji flag sequences.\n    // That is, do not break between regional indicator (RI) symbols\n    // if there is an odd number of RI characters before the break point.\n    if (current === RI && next === RI) {\n        let countRI = 0;\n        while (prev === RI) {\n            countRI++;\n            prev = classTypes[--prevIndex];\n        }\n        if (countRI % 2 === 0) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n    // GB1 Break at the start and end of text, unless the text is empty.\n    if (index === 0) {\n        return BREAK_ALLOWED;\n    }\n\n    // GB2\n    if (index >= codePoints.length) {\n        return BREAK_ALLOWED;\n    }\n\n    const classTypes = codePoints.map(codePointToClass);\n    return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n    const codePoints = toCodePoints(str);\n    const length = codePoints.length;\n    let index = 0;\n    let lastEnd = 0;\n    const classTypes = codePoints.map(codePointToClass);\n\n    return {\n        next: () => {\n            if (index >= length) {\n                return {done: true, value: null};\n            }\n\n            let graphemeBreak = BREAK_NOT_ALLOWED;\n            while (\n                index < length &&\n                (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n            ) {}\n\n            if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n                const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n                lastEnd = index;\n                return {value, done: false};\n            }\n\n            return {done: true, value: null};\n            while (index < length) {}\n\n            return {done: true, value: null};\n        },\n    };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n    const breaker = GraphemeBreaker(str);\n\n    const graphemes = [];\n    let bk;\n\n    while (!(bk = breaker.next()).done) {\n        if (bk.value) {\n            graphemes.push(bk.value.slice());\n        }\n    }\n\n    return graphemes;\n};\n", "import {fromCodePoint, toCodePoints} from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n    const TEST_HEIGHT = 123;\n\n    if (document.createRange) {\n        const range = document.createRange();\n        if (range.getBoundingClientRect) {\n            const testElement = document.createElement('boundtest');\n            testElement.style.height = `${TEST_HEIGHT}px`;\n            testElement.style.display = 'block';\n            document.body.appendChild(testElement);\n\n            range.selectNode(testElement);\n            const rangeBounds = range.getBoundingClientRect();\n            const rangeHeight = Math.round(rangeBounds.height);\n            document.body.removeChild(testElement);\n            if (rangeHeight === TEST_HEIGHT) {\n                return true;\n            }\n        }\n    }\n\n    return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n    const testElement = document.createElement('boundtest');\n    testElement.style.width = '50px';\n    testElement.style.display = 'block';\n    testElement.style.fontSize = '12px';\n    testElement.style.letterSpacing = '0px';\n    testElement.style.wordSpacing = '0px';\n    document.body.appendChild(testElement);\n    const range = document.createRange();\n\n    testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n\n    const node = testElement.firstChild as Text;\n\n    const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n    let offset = 0;\n    let prev: DOMRect = {} as DOMRect;\n\n    // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n    const supports = textList.every((text, i) => {\n        range.setStart(node, offset);\n        range.setEnd(node, offset + text.length);\n        const rect = range.getBoundingClientRect();\n\n        offset += text.length;\n        const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n        prev = rect;\n        if (i === 0) {\n            return true;\n        }\n\n        return boundAhead;\n    });\n\n    document.body.removeChild(testElement);\n    return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n    const img = new Image();\n    const canvas = document.createElement('canvas');\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return false;\n    }\n\n    img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n    try {\n        ctx.drawImage(img, 0, 0);\n        canvas.toDataURL();\n    } catch (e) {\n        return false;\n    }\n    return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n    data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n    const canvas = document.createElement('canvas');\n    const size = 100;\n    canvas.width = size;\n    canvas.height = size;\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return Promise.reject(false);\n    }\n    ctx.fillStyle = 'rgb(0, 255, 0)';\n    ctx.fillRect(0, 0, size, size);\n\n    const img = new Image();\n    const greenImageSrc = canvas.toDataURL();\n    img.src = greenImageSrc;\n    const svg = createForeignObjectSVG(size, size, 0, 0, img);\n    ctx.fillStyle = 'red';\n    ctx.fillRect(0, 0, size, size);\n\n    return loadSerializedSVG(svg)\n        .then((img: HTMLImageElement) => {\n            ctx.drawImage(img, 0, 0);\n            const data = ctx.getImageData(0, 0, size, size).data;\n            ctx.fillStyle = 'red';\n            ctx.fillRect(0, 0, size, size);\n\n            const node = document.createElement('div');\n            node.style.backgroundImage = `url(${greenImageSrc})`;\n            node.style.height = `${size}px`;\n            // Firefox 55 does not render inline <img /> tags\n            return isGreenPixel(data)\n                ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n                : Promise.reject(false);\n        })\n        .then((img: HTMLImageElement) => {\n            ctx.drawImage(img, 0, 0);\n            // Edge does not render background-images\n            return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n        })\n        .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    node: Node\n): SVGForeignObjectElement => {\n    const xmlns = 'http://www.w3.org/2000/svg';\n    const svg = document.createElementNS(xmlns, 'svg');\n    const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n    svg.setAttributeNS(null, 'width', width.toString());\n    svg.setAttributeNS(null, 'height', height.toString());\n\n    foreignObject.setAttributeNS(null, 'width', '100%');\n    foreignObject.setAttributeNS(null, 'height', '100%');\n    foreignObject.setAttributeNS(null, 'x', x.toString());\n    foreignObject.setAttributeNS(null, 'y', y.toString());\n    foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n    svg.appendChild(foreignObject);\n\n    foreignObject.appendChild(node);\n\n    return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n    return new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onload = () => resolve(img);\n        img.onerror = reject;\n\n        img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n    });\n};\n\nexport const FEATURES = {\n    get SUPPORT_RANGE_BOUNDS(): boolean {\n        'use strict';\n        const value = testRangeBounds(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value});\n        return value;\n    },\n    get SUPPORT_WORD_BREAKING(): boolean {\n        'use strict';\n        const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {value});\n        return value;\n    },\n    get SUPPORT_SVG_DRAWING(): boolean {\n        'use strict';\n        const value = testSVG(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value});\n        return value;\n    },\n    get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n        'use strict';\n        const value =\n            typeof Array.from === 'function' && typeof window.fetch === 'function'\n                ? testForeignObject(document)\n                : Promise.resolve(false);\n        Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value});\n        return value;\n    },\n    get SUPPORT_CORS_IMAGES(): boolean {\n        'use strict';\n        const value = testCORS();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value});\n        return value;\n    },\n    get SUPPORT_RESPONSE_TYPE(): boolean {\n        'use strict';\n        const value = testResponseType();\n        Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value});\n        return value;\n    },\n    get SUPPORT_CORS_XHR(): boolean {\n        'use strict';\n        const value = 'withCredentials' in new XMLHttpRequest();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value});\n        return value;\n    },\n    get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n        'use strict';\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n        Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {value});\n        return value;\n    }\n};\n", "import {OVERFLOW_WRAP} from '../property-descriptors/overflow-wrap';\nimport {CSSParsedDeclaration} from '../index';\nimport {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break';\nimport {splitGraphemes} from 'text-segmentation';\nimport {Bounds, parseBounds} from './bounds';\nimport {FEATURES} from '../../core/features';\nimport {Context} from '../../core/context';\n\nexport class TextBounds {\n    readonly text: string;\n    readonly bounds: Bounds;\n\n    constructor(text: string, bounds: Bounds) {\n        this.text = text;\n        this.bounds = bounds;\n    }\n}\n\nexport const parseTextBounds = (\n    context: Context,\n    value: string,\n    styles: CSSParsedDeclaration,\n    node: Text\n): TextBounds[] => {\n    const textList = breakText(value, styles);\n    const textBounds: TextBounds[] = [];\n    let offset = 0;\n    textList.forEach((text) => {\n        if (styles.textDecorationLine.length || text.trim().length > 0) {\n            if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n                const clientRects = createRange(node, offset, text.length).getClientRects();\n                if (clientRects.length > 1) {\n                    const subSegments = segmentGraphemes(text);\n                    let subOffset = 0;\n                    subSegments.forEach((subSegment) => {\n                        textBounds.push(\n                            new TextBounds(\n                                subSegment,\n                                Bounds.fromDOMRectList(\n                                    context,\n                                    createRange(node, subOffset + offset, subSegment.length).getClientRects()\n                                )\n                            )\n                        );\n                        subOffset += subSegment.length;\n                    });\n                } else {\n                    textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n                }\n            } else {\n                const replacementNode = node.splitText(text.length);\n                textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n                node = replacementNode;\n            }\n        } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n            node = node.splitText(text.length);\n        }\n        offset += text.length;\n    });\n\n    return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n    const ownerDocument = node.ownerDocument;\n    if (ownerDocument) {\n        const wrapper = ownerDocument.createElement('html2canvaswrapper');\n        wrapper.appendChild(node.cloneNode(true));\n        const parentNode = node.parentNode;\n        if (parentNode) {\n            parentNode.replaceChild(wrapper, node);\n            const bounds = parseBounds(context, wrapper);\n            if (wrapper.firstChild) {\n                parentNode.replaceChild(wrapper.firstChild, wrapper);\n            }\n            return bounds;\n        }\n    }\n\n    return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n    const ownerDocument = node.ownerDocument;\n    if (!ownerDocument) {\n        throw new Error('Node has no owner document');\n    }\n    const range = ownerDocument.createRange();\n    range.setStart(node, offset);\n    range.setEnd(node, offset + length);\n    return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const segmenter = new (Intl as any).Segmenter(void 0, {granularity: 'grapheme'});\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n    }\n\n    return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const segmenter = new (Intl as any).Segmenter(void 0, {\n            granularity: 'word'\n        });\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n    }\n\n    return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n    return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n    const breaker = LineBreaker(str, {\n        lineBreak: styles.lineBreak,\n        wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n    });\n\n    const words = [];\n    let bk;\n\n    while (!(bk = breaker.next()).done) {\n        if (bk.value) {\n            const value = bk.value.slice();\n            const codePoints = toCodePoints(value);\n            let word = '';\n            codePoints.forEach((codePoint) => {\n                if (wordSeparators.indexOf(codePoint) === -1) {\n                    word += fromCodePoint(codePoint);\n                } else {\n                    if (word.length) {\n                        words.push(word);\n                    }\n                    words.push(fromCodePoint(codePoint));\n                    word = '';\n                }\n            });\n\n            if (word.length) {\n                words.push(word);\n            }\n        }\n    }\n\n    return words;\n};\n", "import {CSSParsedDeclaration} from '../css/index';\nimport {TEXT_TRANSFORM} from '../css/property-descriptors/text-transform';\nimport {parseTextBounds, TextBounds} from '../css/layout/text';\nimport {Context} from '../core/context';\n\nexport class TextContainer {\n    text: string;\n    textBounds: TextBounds[];\n\n    constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n        this.text = transform(node.data, styles.textTransform);\n        this.textBounds = parseTextBounds(context, this.text, styles, node);\n    }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n    switch (transform) {\n        case TEXT_TRANSFORM.LOWERCASE:\n            return text.toLowerCase();\n        case TEXT_TRANSFORM.CAPITALIZE:\n            return text.replace(CAPITALIZE, capitalize);\n        case TEXT_TRANSFORM.UPPERCASE:\n            return text.toUpperCase();\n        default:\n            return text;\n    }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n    if (m.length > 0) {\n        return p1 + p2.toUpperCase();\n    }\n\n    return m;\n};\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n    src: string;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, img: HTMLImageElement) {\n        super(context, img);\n        this.src = img.currentSrc || img.src;\n        this.intrinsicWidth = img.naturalWidth;\n        this.intrinsicHeight = img.naturalHeight;\n        this.context.cache.addImage(this.src);\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n    canvas: HTMLCanvasElement;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, canvas: HTMLCanvasElement) {\n        super(context, canvas);\n        this.canvas = canvas;\n        this.intrinsicWidth = canvas.width;\n        this.intrinsicHeight = canvas.height;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {parseBounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n    svg: string;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, img: SVGSVGElement) {\n        super(context, img);\n        const s = new XMLSerializer();\n        const bounds = parseBounds(context, img);\n        img.setAttribute('width', `${bounds.width}px`);\n        img.setAttribute('height', `${bounds.height}px`);\n\n        this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n        this.intrinsicWidth = img.width.baseVal.value;\n        this.intrinsicHeight = img.height.baseVal.value;\n\n        this.context.cache.addImage(this.svg);\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n    readonly value: number;\n\n    constructor(context: Context, element: HTMLLIElement) {\n        super(context, element);\n        this.value = element.value;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n    readonly start: number;\n    readonly reversed: boolean;\n\n    constructor(context: Context, element: HTMLOListElement) {\n        super(context, element);\n        this.start = element.start;\n        this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BACKGROUND_ORIGIN} from '../../css/property-descriptors/background-origin';\nimport {TokenType} from '../../css/syntax/tokenizer';\nimport {LengthPercentageTuple} from '../../css/types/length-percentage';\nimport {Bounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n    {\n        type: TokenType.DIMENSION_TOKEN,\n        flags: 0,\n        unit: 'px',\n        number: 3\n    }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n    {\n        type: TokenType.PERCENTAGE_TOKEN,\n        flags: 0,\n        number: 50\n    }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n    if (bounds.width > bounds.height) {\n        return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n    } else if (bounds.width < bounds.height) {\n        return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n    }\n    return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n    const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n    return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n    readonly type: string;\n    readonly checked: boolean;\n    readonly value: string;\n\n    constructor(context: Context, input: HTMLInputElement) {\n        super(context, input);\n        this.type = input.type.toLowerCase();\n        this.checked = input.checked;\n        this.value = getInputValue(input);\n\n        if (this.type === CHECKBOX || this.type === RADIO) {\n            this.styles.backgroundColor = 0xdededeff;\n            this.styles.borderTopColor =\n                this.styles.borderRightColor =\n                this.styles.borderBottomColor =\n                this.styles.borderLeftColor =\n                    0xa5a5a5ff;\n            this.styles.borderTopWidth =\n                this.styles.borderRightWidth =\n                this.styles.borderBottomWidth =\n                this.styles.borderLeftWidth =\n                    1;\n            this.styles.borderTopStyle =\n                this.styles.borderRightStyle =\n                this.styles.borderBottomStyle =\n                this.styles.borderLeftStyle =\n                    BORDER_STYLE.SOLID;\n            this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n            this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n            this.bounds = reformatInputBounds(this.bounds);\n        }\n\n        switch (this.type) {\n            case CHECKBOX:\n                this.styles.borderTopRightRadius =\n                    this.styles.borderTopLeftRadius =\n                    this.styles.borderBottomRightRadius =\n                    this.styles.borderBottomLeftRadius =\n                        CHECKBOX_BORDER_RADIUS;\n                break;\n            case RADIO:\n                this.styles.borderTopRightRadius =\n                    this.styles.borderTopLeftRadius =\n                    this.styles.borderBottomRightRadius =\n                    this.styles.borderBottomLeftRadius =\n                        RADIO_BORDER_RADIUS;\n                break;\n        }\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n    readonly value: string;\n    constructor(context: Context, element: HTMLSelectElement) {\n        super(context, element);\n        const option = element.options[element.selectedIndex || 0];\n        this.value = option ? option.text || '' : '';\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n    readonly value: string;\n    constructor(context: Context, element: HTMLTextAreaElement) {\n        super(context, element);\n        this.value = element.value;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {parseTree} from '../node-parser';\nimport {Color, parseColor, COLORS, isTransparent} from '../../css/types/color';\nimport {Context} from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n    src: string;\n    width: number;\n    height: number;\n    tree?: ElementContainer;\n    backgroundColor: Color;\n\n    constructor(context: Context, iframe: HTMLIFrameElement) {\n        super(context, iframe);\n        this.src = iframe.src;\n        this.width = parseInt(iframe.width, 10) || 0;\n        this.height = parseInt(iframe.height, 10) || 0;\n        this.backgroundColor = this.styles.backgroundColor;\n        try {\n            if (\n                iframe.contentWindow &&\n                iframe.contentWindow.document &&\n                iframe.contentWindow.document.documentElement\n            ) {\n                this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n                // http://www.w3.org/TR/css3-background/#special-backgrounds\n                const documentBackgroundColor = iframe.contentWindow.document.documentElement\n                    ? parseColor(\n                          context,\n                          getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n                      )\n                    : COLORS.TRANSPARENT;\n                const bodyBackgroundColor = iframe.contentWindow.document.body\n                    ? parseColor(\n                          context,\n                          getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n                      )\n                    : COLORS.TRANSPARENT;\n\n                this.backgroundColor = isTransparent(documentBackgroundColor)\n                    ? isTransparent(bodyBackgroundColor)\n                        ? this.styles.backgroundColor\n                        : bodyBackgroundColor\n                    : documentBackgroundColor;\n            }\n        } catch (e) {}\n    }\n}\n", "import {CSSParsedDeclaration} from '../css';\nimport {ElementContainer, FLAGS} from './element-container';\nimport {TextContainer} from './text-container';\nimport {ImageElementContainer} from './replaced-elements/image-element-container';\nimport {CanvasElementContainer} from './replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from './replaced-elements/svg-element-container';\nimport {LIElementContainer} from './elements/li-element-container';\nimport {OLElementContainer} from './elements/ol-element-container';\nimport {InputElementContainer} from './replaced-elements/input-element-container';\nimport {SelectElementContainer} from './elements/select-element-container';\nimport {TextareaElementContainer} from './elements/textarea-element-container';\nimport {IFrameElementContainer} from './replaced-elements/iframe-element-container';\nimport {Context} from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n    for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n        nextNode = childNode.nextSibling;\n\n        if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n            parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n        } else if (isElementNode(childNode)) {\n            if (isSlotElement(childNode) && childNode.assignedNodes) {\n                childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n            } else {\n                const container = createContainer(context, childNode);\n                if (container.styles.isVisible()) {\n                    if (createsRealStackingContext(childNode, container, root)) {\n                        container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n                    } else if (createsStackingContext(container.styles)) {\n                        container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n                    }\n\n                    if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n                        container.flags |= FLAGS.IS_LIST_OWNER;\n                    }\n\n                    parent.elements.push(container);\n                    childNode.slot;\n                    if (childNode.shadowRoot) {\n                        parseNodeTree(context, childNode.shadowRoot, container, root);\n                    } else if (\n                        !isTextareaElement(childNode) &&\n                        !isSVGElement(childNode) &&\n                        !isSelectElement(childNode)\n                    ) {\n                        parseNodeTree(context, childNode, container, root);\n                    }\n                }\n            }\n        }\n    }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n    if (isImageElement(element)) {\n        return new ImageElementContainer(context, element);\n    }\n\n    if (isCanvasElement(element)) {\n        return new CanvasElementContainer(context, element);\n    }\n\n    if (isSVGElement(element)) {\n        return new SVGElementContainer(context, element);\n    }\n\n    if (isLIElement(element)) {\n        return new LIElementContainer(context, element);\n    }\n\n    if (isOLElement(element)) {\n        return new OLElementContainer(context, element);\n    }\n\n    if (isInputElement(element)) {\n        return new InputElementContainer(context, element);\n    }\n\n    if (isSelectElement(element)) {\n        return new SelectElementContainer(context, element);\n    }\n\n    if (isTextareaElement(element)) {\n        return new TextareaElementContainer(context, element);\n    }\n\n    if (isIFrameElement(element)) {\n        return new IFrameElementContainer(context, element);\n    }\n\n    return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n    const container = createContainer(context, element);\n    container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n    parseNodeTree(context, element, container, container);\n    return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n    return (\n        container.styles.isPositionedWithZIndex() ||\n        container.styles.opacity < 1 ||\n        container.styles.isTransformed() ||\n        (isBodyElement(node) && root.styles.isTransparent())\n    );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n    isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n    typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n", "import {LIST_STYLE_TYPE} from '../../property-descriptors/list-style-type';\nimport {fromCodePoint} from 'css-line-break';\nimport {contains} from '../../../core/bitwise';\nimport {CSSParsedCounterDeclaration} from '../../index';\n\nexport class CounterState {\n    private readonly counters: {[key: string]: number[]} = {};\n\n    getCounterValue(name: string): number {\n        const counter = this.counters[name];\n\n        if (counter && counter.length) {\n            return counter[counter.length - 1];\n        }\n        return 1;\n    }\n\n    getCounterValues(name: string): readonly number[] {\n        const counter = this.counters[name];\n        return counter ? counter : [];\n    }\n\n    pop(counters: string[]): void {\n        counters.forEach((counter) => this.counters[counter].pop());\n    }\n\n    parse(style: CSSParsedCounterDeclaration): string[] {\n        const counterIncrement = style.counterIncrement;\n        const counterReset = style.counterReset;\n        let canReset = true;\n\n        if (counterIncrement !== null) {\n            counterIncrement.forEach((entry) => {\n                const counter = this.counters[entry.counter];\n                if (counter && entry.increment !== 0) {\n                    canReset = false;\n                    if (!counter.length) {\n                        counter.push(1);\n                    }\n                    counter[Math.max(0, counter.length - 1)] += entry.increment;\n                }\n            });\n        }\n\n        const counterNames: string[] = [];\n        if (canReset) {\n            counterReset.forEach((entry) => {\n                let counter = this.counters[entry.counter];\n                counterNames.push(entry.counter);\n                if (!counter) {\n                    counter = this.counters[entry.counter] = [];\n                }\n                counter.push(entry.reset);\n            });\n        }\n\n        return counterNames;\n    }\n}\n\ninterface CounterSymbols {\n    integers: number[];\n    values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n    integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n    values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n    integers: [\n        9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n        60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'Ք',\n        'Փ',\n        'Ւ',\n        'Ց',\n        'Ր',\n        'Տ',\n        'Վ',\n        'Ս',\n        'Ռ',\n        'Ջ',\n        'Պ',\n        'Չ',\n        'Ո',\n        'Շ',\n        'Ն',\n        'Յ',\n        'Մ',\n        'Ճ',\n        'Ղ',\n        'Ձ',\n        'Հ',\n        'Կ',\n        'Ծ',\n        'Խ',\n        'Լ',\n        'Ի',\n        'Ժ',\n        'Թ',\n        'Ը',\n        'Է',\n        'Զ',\n        'Ե',\n        'Դ',\n        'Գ',\n        'Բ',\n        'Ա'\n    ]\n};\n\nconst HEBREW: CounterSymbols = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n        19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'י׳',\n        'ט׳',\n        'ח׳',\n        'ז׳',\n        'ו׳',\n        'ה׳',\n        'ד׳',\n        'ג׳',\n        'ב׳',\n        'א׳',\n        'ת',\n        'ש',\n        'ר',\n        'ק',\n        'צ',\n        'פ',\n        'ע',\n        'ס',\n        'נ',\n        'מ',\n        'ל',\n        'כ',\n        'יט',\n        'יח',\n        'יז',\n        'טז',\n        'טו',\n        'י',\n        'ט',\n        'ח',\n        'ז',\n        'ו',\n        'ה',\n        'ד',\n        'ג',\n        'ב',\n        'א'\n    ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n        80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'ჵ',\n        'ჰ',\n        'ჯ',\n        'ჴ',\n        'ხ',\n        'ჭ',\n        'წ',\n        'ძ',\n        'ც',\n        'ჩ',\n        'შ',\n        'ყ',\n        'ღ',\n        'ქ',\n        'ფ',\n        'ჳ',\n        'ტ',\n        'ს',\n        'რ',\n        'ჟ',\n        'პ',\n        'ო',\n        'ჲ',\n        'ნ',\n        'მ',\n        'ლ',\n        'კ',\n        'ი',\n        'თ',\n        'ჱ',\n        'ზ',\n        'ვ',\n        'ე',\n        'დ',\n        'გ',\n        'ბ',\n        'ა'\n    ]\n};\n\nconst createAdditiveCounter = (\n    value: number,\n    min: number,\n    max: number,\n    symbols: CounterSymbols,\n    fallback: LIST_STYLE_TYPE,\n    suffix: string\n) => {\n    if (value < min || value > max) {\n        return createCounterText(value, fallback, suffix.length > 0);\n    }\n\n    return (\n        symbols.integers.reduce((string, integer, index) => {\n            while (value >= integer) {\n                value -= integer;\n                string += symbols.values[index];\n            }\n            return string;\n        }, '') + suffix\n    );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n    value: number,\n    codePointRangeLength: number,\n    isNumeric: boolean,\n    resolver: (codePoint: number) => string\n): string => {\n    let string = '';\n\n    do {\n        if (!isNumeric) {\n            value--;\n        }\n        string = resolver(value) + string;\n        value /= codePointRangeLength;\n    } while (value * codePointRangeLength >= codePointRangeLength);\n\n    return string;\n};\n\nconst createCounterStyleFromRange = (\n    value: number,\n    codePointRangeStart: number,\n    codePointRangeEnd: number,\n    isNumeric: boolean,\n    suffix: string\n): string => {\n    const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n    return (\n        (value < 0 ? '-' : '') +\n        (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n            fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n        ) +\n            suffix)\n    );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n    const codePointRangeLength = symbols.length;\n    return (\n        createCounterStyleWithSymbolResolver(\n            Math.abs(value),\n            codePointRangeLength,\n            false,\n            (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n        ) + suffix\n    );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n    value: number,\n    numbers: string,\n    multipliers: string,\n    negativeSign: string,\n    suffix: string,\n    flags: number\n): string => {\n    if (value < -9999 || value > 9999) {\n        return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n    }\n    let tmp = Math.abs(value);\n    let string = suffix;\n\n    if (tmp === 0) {\n        return numbers[0] + string;\n    }\n\n    for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n        const coefficient = tmp % 10;\n\n        if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n            string = numbers[coefficient] + string;\n        } else if (\n            coefficient > 1 ||\n            (coefficient === 1 && digit === 0) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n            (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n        ) {\n            string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n        } else if (coefficient === 1 && digit > 0) {\n            string = multipliers[digit - 1] + string;\n        }\n        tmp = Math.floor(tmp / 10);\n    }\n\n    return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n    const defaultSuffix = appendSuffix ? '. ' : '';\n    const cjkSuffix = appendSuffix ? '、' : '';\n    const koreanSuffix = appendSuffix ? ', ' : '';\n    const spaceSuffix = appendSuffix ? ' ' : '';\n    switch (type) {\n        case LIST_STYLE_TYPE.DISC:\n            return '•' + spaceSuffix;\n        case LIST_STYLE_TYPE.CIRCLE:\n            return '◦' + spaceSuffix;\n        case LIST_STYLE_TYPE.SQUARE:\n            return '◾' + spaceSuffix;\n        case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n            const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n            return string.length < 4 ? `0${string}` : string;\n        case LIST_STYLE_TYPE.CJK_DECIMAL:\n            return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n        case LIST_STYLE_TYPE.LOWER_ROMAN:\n            return createAdditiveCounter(\n                value,\n                1,\n                3999,\n                ROMAN_UPPER,\n                LIST_STYLE_TYPE.DECIMAL,\n                defaultSuffix\n            ).toLowerCase();\n        case LIST_STYLE_TYPE.UPPER_ROMAN:\n            return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_GREEK:\n            return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_ALPHA:\n            return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n        case LIST_STYLE_TYPE.UPPER_ALPHA:\n            return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n        case LIST_STYLE_TYPE.ARABIC_INDIC:\n            return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n        case LIST_STYLE_TYPE.ARMENIAN:\n        case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n            return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n            return createAdditiveCounter(\n                value,\n                1,\n                9999,\n                ARMENIAN,\n                LIST_STYLE_TYPE.DECIMAL,\n                defaultSuffix\n            ).toLowerCase();\n        case LIST_STYLE_TYPE.BENGALI:\n            return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n        case LIST_STYLE_TYPE.CAMBODIAN:\n        case LIST_STYLE_TYPE.KHMER:\n            return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n        case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n            return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n        case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n            return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n        case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n        case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n            return createCJKCounter(\n                value,\n                '零一二三四五六七八九',\n                CHINESE_INFORMAL_MULTIPLIERS,\n                '負',\n                cjkSuffix,\n                CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹貳參肆伍陸柒捌玖',\n                CHINESE_FORMAL_MULTIPLIERS,\n                '負',\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n            return createCJKCounter(\n                value,\n                '零一二三四五六七八九',\n                CHINESE_INFORMAL_MULTIPLIERS,\n                '负',\n                cjkSuffix,\n                CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹贰叁肆伍陆柒捌玖',\n                CHINESE_FORMAL_MULTIPLIERS,\n                '负',\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n            return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n        case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壱弐参四伍六七八九',\n                '拾百千万',\n                JAPANESE_NEGATIVE,\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n            return createCJKCounter(\n                value,\n                '영일이삼사오육칠팔구',\n                '십백천만',\n                KOREAN_NEGATIVE,\n                koreanSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n            return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n        case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹貳參四五六七八九',\n                '拾百千',\n                KOREAN_NEGATIVE,\n                koreanSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.DEVANAGARI:\n            return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.GEORGIAN:\n            return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.GUJARATI:\n            return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.GURMUKHI:\n            return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.HEBREW:\n            return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.HIRAGANA:\n            return createCounterStyleFromSymbols(\n                value,\n                'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n            );\n        case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n            return createCounterStyleFromSymbols(\n                value,\n                'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n            );\n        case LIST_STYLE_TYPE.KANNADA:\n            return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.KATAKANA:\n            return createCounterStyleFromSymbols(\n                value,\n                'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n                cjkSuffix\n            );\n        case LIST_STYLE_TYPE.KATAKANA_IROHA:\n            return createCounterStyleFromSymbols(\n                value,\n                'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n                cjkSuffix\n            );\n        case LIST_STYLE_TYPE.LAO:\n            return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n        case LIST_STYLE_TYPE.MONGOLIAN:\n            return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n        case LIST_STYLE_TYPE.MYANMAR:\n            return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n        case LIST_STYLE_TYPE.ORIYA:\n            return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.PERSIAN:\n            return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TAMIL:\n            return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TELUGU:\n            return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.THAI:\n            return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TIBETAN:\n            return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n        case LIST_STYLE_TYPE.DECIMAL:\n        default:\n            return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n    }\n};\n", "import {Bounds} from '../css/layout/bounds';\nimport {\n    isBodyElement,\n    isCanvasElement,\n    isCustomElement,\n    isElementNode,\n    isHTMLElementNode,\n    isIFrameElement,\n    isImageElement,\n    isScriptElement,\n    isSelectElement,\n    isSlotElement,\n    isStyleElement,\n    isSVGElementNode,\n    isTextareaElement,\n    isTextNode,\n    isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n    ignoreElements?: (element: Element) => boolean;\n    onclone?: (document: Document, element: HTMLElement) => void;\n    allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n    scrollX: number;\n    scrollY: number;\n    windowWidth: number;\n    windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n    inlineImages: boolean;\n    copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n    private readonly scrolledElements: [Element, number, number][];\n    private readonly referenceElement: HTMLElement;\n    clonedReferenceElement?: HTMLElement;\n    private readonly documentElement: HTMLElement;\n    private readonly counters: CounterState;\n    private quoteDepth: number;\n\n    constructor(\n        private readonly context: Context,\n        element: HTMLElement,\n        private readonly options: CloneConfigurations\n    ) {\n        this.scrolledElements = [];\n        this.referenceElement = element;\n        this.counters = new CounterState();\n        this.quoteDepth = 0;\n        if (!element.ownerDocument) {\n            throw new Error('Cloned element does not have an owner document');\n        }\n\n        this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n    }\n\n    toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement> {\n        const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n        if (!iframe.contentWindow) {\n            return Promise.reject(`Unable to find iframe window`);\n        }\n\n        const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n        const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n        const cloneWindow = iframe.contentWindow;\n        const documentClone: Document = cloneWindow.document;\n\n        /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n         if window url is about:blank, we can assign the url to current by writing onto the document\n         */\n\n        const iframeLoad = iframeLoader(iframe).then(async () => {\n            this.scrolledElements.forEach(restoreNodeScroll);\n            if (cloneWindow) {\n                cloneWindow.scrollTo(windowSize.left, windowSize.top);\n                if (\n                    /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n                    (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n                ) {\n                    this.context.logger.warn('Unable to restore scroll position for cloned document');\n                    this.context.windowBounds = this.context.windowBounds.add(\n                        cloneWindow.scrollX - windowSize.left,\n                        cloneWindow.scrollY - windowSize.top,\n                        0,\n                        0\n                    );\n                }\n            }\n\n            const onclone = this.options.onclone;\n\n            const referenceElement = this.clonedReferenceElement;\n\n            if (typeof referenceElement === 'undefined') {\n                return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n            }\n\n            if (documentClone.fonts && documentClone.fonts.ready) {\n                await documentClone.fonts.ready;\n            }\n\n            if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n                await imagesReady(documentClone);\n            }\n\n            if (typeof onclone === 'function') {\n                return Promise.resolve()\n                    .then(() => onclone(documentClone, referenceElement))\n                    .then(() => iframe);\n            }\n\n            return iframe;\n        });\n\n        documentClone.open();\n        documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n        // Chrome scrolls the parent document for some reason after the write to the cloned window???\n        restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n        documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n        documentClone.close();\n\n        return iframeLoad;\n    }\n\n    createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n        if (isDebugging(node, DebuggerType.CLONE)) {\n            debugger;\n        }\n        if (isCanvasElement(node)) {\n            return this.createCanvasClone(node);\n        }\n        if (isVideoElement(node)) {\n            return this.createVideoClone(node);\n        }\n        if (isStyleElement(node)) {\n            return this.createStyleClone(node);\n        }\n\n        const clone = node.cloneNode(false) as T;\n        if (isImageElement(clone)) {\n            if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n                clone.src = node.currentSrc;\n                clone.srcset = '';\n            }\n\n            if (clone.loading === 'lazy') {\n                clone.loading = 'eager';\n            }\n        }\n\n        if (isCustomElement(clone)) {\n            return this.createCustomElementClone(clone);\n        }\n\n        return clone;\n    }\n\n    createCustomElementClone(node: HTMLElement): HTMLElement {\n        const clone = document.createElement('html2canvascustomelement');\n        copyCSSStyles(node.style, clone);\n\n        return clone;\n    }\n\n    createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n        try {\n            const sheet = node.sheet as CSSStyleSheet | undefined;\n            if (sheet && sheet.cssRules) {\n                const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n                    if (rule && typeof rule.cssText === 'string') {\n                        return css + rule.cssText;\n                    }\n                    return css;\n                }, '');\n                const style = node.cloneNode(false) as HTMLStyleElement;\n                style.textContent = css;\n                return style;\n            }\n        } catch (e) {\n            // accessing node.sheet.cssRules throws a DOMException\n            this.context.logger.error('Unable to access cssRules property', e);\n            if (e.name !== 'SecurityError') {\n                throw e;\n            }\n        }\n        return node.cloneNode(false) as HTMLStyleElement;\n    }\n\n    createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n        if (this.options.inlineImages && canvas.ownerDocument) {\n            const img = canvas.ownerDocument.createElement('img');\n            try {\n                img.src = canvas.toDataURL();\n                return img;\n            } catch (e) {\n                this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n            }\n        }\n\n        const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n        try {\n            clonedCanvas.width = canvas.width;\n            clonedCanvas.height = canvas.height;\n            const ctx = canvas.getContext('2d');\n            const clonedCtx = clonedCanvas.getContext('2d');\n            if (clonedCtx) {\n                if (!this.options.allowTaint && ctx) {\n                    clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n                } else {\n                    const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n                    if (gl) {\n                        const attribs = gl.getContextAttributes();\n                        if (attribs?.preserveDrawingBuffer === false) {\n                            this.context.logger.warn(\n                                'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n                                canvas\n                            );\n                        }\n                    }\n\n                    clonedCtx.drawImage(canvas, 0, 0);\n                }\n            }\n            return clonedCanvas;\n        } catch (e) {\n            this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n        }\n\n        return clonedCanvas;\n    }\n\n    createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n        const canvas = video.ownerDocument.createElement('canvas');\n\n        canvas.width = video.offsetWidth;\n        canvas.height = video.offsetHeight;\n        const ctx = canvas.getContext('2d');\n\n        try {\n            if (ctx) {\n                ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n                if (!this.options.allowTaint) {\n                    ctx.getImageData(0, 0, canvas.width, canvas.height);\n                }\n            }\n            return canvas;\n        } catch (e) {\n            this.context.logger.info(`Unable to clone video as it is tainted`, video);\n        }\n\n        const blankCanvas = video.ownerDocument.createElement('canvas');\n\n        blankCanvas.width = video.offsetWidth;\n        blankCanvas.height = video.offsetHeight;\n        return blankCanvas;\n    }\n\n    appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n        if (\n            !isElementNode(child) ||\n            (!isScriptElement(child) &&\n                !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n                (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n        ) {\n            if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n                clone.appendChild(this.cloneNode(child, copyStyles));\n            }\n        }\n    }\n\n    cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n        for (\n            let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n            child;\n            child = child.nextSibling\n        ) {\n            if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n                const assignedNodes = child.assignedNodes() as ChildNode[];\n                if (assignedNodes.length) {\n                    assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n                }\n            } else {\n                this.appendChildNode(clone, child, copyStyles);\n            }\n        }\n    }\n\n    cloneNode(node: Node, copyStyles: boolean): Node {\n        if (isTextNode(node)) {\n            return document.createTextNode(node.data);\n        }\n\n        if (!node.ownerDocument) {\n            return node.cloneNode(false);\n        }\n\n        const window = node.ownerDocument.defaultView;\n\n        if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n            const clone = this.createElementClone(node);\n            clone.style.transitionProperty = 'none';\n\n            const style = window.getComputedStyle(node);\n            const styleBefore = window.getComputedStyle(node, ':before');\n            const styleAfter = window.getComputedStyle(node, ':after');\n\n            if (this.referenceElement === node && isHTMLElementNode(clone)) {\n                this.clonedReferenceElement = clone;\n            }\n            if (isBodyElement(clone)) {\n                createPseudoHideStyles(clone);\n            }\n\n            const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n            const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n            if (isCustomElement(node)) {\n                copyStyles = true;\n            }\n\n            if (!isVideoElement(node)) {\n                this.cloneChildNodes(node, clone, copyStyles);\n            }\n\n            if (before) {\n                clone.insertBefore(before, clone.firstChild);\n            }\n\n            const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n            if (after) {\n                clone.appendChild(after);\n            }\n\n            this.counters.pop(counters);\n\n            if (\n                (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n                copyStyles\n            ) {\n                copyCSSStyles(style, clone);\n            }\n\n            if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n                this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n            }\n\n            if (\n                (isTextareaElement(node) || isSelectElement(node)) &&\n                (isTextareaElement(clone) || isSelectElement(clone))\n            ) {\n                clone.value = node.value;\n            }\n\n            return clone;\n        }\n\n        return node.cloneNode(false);\n    }\n\n    resolvePseudoContent(\n        node: Element,\n        clone: Element,\n        style: CSSStyleDeclaration,\n        pseudoElt: PseudoElementType\n    ): HTMLElement | void {\n        if (!style) {\n            return;\n        }\n\n        const value = style.content;\n        const document = clone.ownerDocument;\n        if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n            return;\n        }\n\n        this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n        const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n        const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n        copyCSSStyles(style, anonymousReplacedElement);\n\n        declaration.content.forEach((token) => {\n            if (token.type === TokenType.STRING_TOKEN) {\n                anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n            } else if (token.type === TokenType.URL_TOKEN) {\n                const img = document.createElement('img');\n                img.src = token.value;\n                img.style.opacity = '1';\n                anonymousReplacedElement.appendChild(img);\n            } else if (token.type === TokenType.FUNCTION) {\n                if (token.name === 'attr') {\n                    const attr = token.values.filter(isIdentToken);\n                    if (attr.length) {\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(node.getAttribute(attr[0].value) || '')\n                        );\n                    }\n                } else if (token.name === 'counter') {\n                    const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n                    if (counter && isIdentToken(counter)) {\n                        const counterState = this.counters.getCounterValue(counter.value);\n                        const counterType =\n                            counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(this.context, counterStyle.value)\n                                : LIST_STYLE_TYPE.DECIMAL;\n\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(createCounterText(counterState, counterType, false))\n                        );\n                    }\n                } else if (token.name === 'counters') {\n                    const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n                    if (counter && isIdentToken(counter)) {\n                        const counterStates = this.counters.getCounterValues(counter.value);\n                        const counterType =\n                            counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(this.context, counterStyle.value)\n                                : LIST_STYLE_TYPE.DECIMAL;\n                        const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n                        const text = counterStates\n                            .map((value) => createCounterText(value, counterType, false))\n                            .join(separator);\n\n                        anonymousReplacedElement.appendChild(document.createTextNode(text));\n                    }\n                } else {\n                    //   console.log('FUNCTION_TOKEN', token);\n                }\n            } else if (token.type === TokenType.IDENT_TOKEN) {\n                switch (token.value) {\n                    case 'open-quote':\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n                        );\n                        break;\n                    case 'close-quote':\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n                        );\n                        break;\n                    default:\n                        // safari doesn't parse string tokens correctly because of lack of quotes\n                        anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n                }\n            }\n        });\n\n        anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n        const newClassName =\n            pseudoElt === PseudoElementType.BEFORE\n                ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n                : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n        if (isSVGElementNode(clone)) {\n            clone.className.baseValue += newClassName;\n        } else {\n            clone.className += newClassName;\n        }\n\n        return anonymousReplacedElement;\n    }\n\n    static destroy(container: HTMLIFrameElement): boolean {\n        if (container.parentNode) {\n            container.parentNode.removeChild(container);\n            return true;\n        }\n        return false;\n    }\n}\n\nenum PseudoElementType {\n    BEFORE,\n    AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n    const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n    cloneIframeContainer.className = 'html2canvas-container';\n    cloneIframeContainer.style.visibility = 'hidden';\n    cloneIframeContainer.style.position = 'fixed';\n    cloneIframeContainer.style.left = '-10000px';\n    cloneIframeContainer.style.top = '0px';\n    cloneIframeContainer.style.border = '0';\n    cloneIframeContainer.width = bounds.width.toString();\n    cloneIframeContainer.height = bounds.height.toString();\n    cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n    cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n    ownerDocument.body.appendChild(cloneIframeContainer);\n\n    return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n    return new Promise((resolve) => {\n        if (img.complete) {\n            resolve();\n            return;\n        }\n        if (!img.src) {\n            resolve();\n            return;\n        }\n        img.onload = resolve;\n        img.onerror = resolve;\n    });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n    return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n    return new Promise((resolve, reject) => {\n        const cloneWindow = iframe.contentWindow;\n\n        if (!cloneWindow) {\n            return reject(`No window assigned for iframe`);\n        }\n\n        const documentClone = cloneWindow.document;\n\n        cloneWindow.onload = iframe.onload = () => {\n            cloneWindow.onload = iframe.onload = null;\n            const interval = setInterval(() => {\n                if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n                    clearInterval(interval);\n                    resolve(iframe);\n                }\n            }, 50);\n        };\n    });\n};\n\nconst ignoredStyleProperties = [\n    'all', // #2476\n    'd', // #2483\n    'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n    // Edge does not provide value for cssText\n    for (let i = style.length - 1; i >= 0; i--) {\n        const property = style.item(i);\n        if (ignoredStyleProperties.indexOf(property) === -1) {\n            target.style.setProperty(property, style.getPropertyValue(property));\n        }\n    }\n    return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n    let str = '';\n    if (doctype) {\n        str += '<!DOCTYPE ';\n        if (doctype.name) {\n            str += doctype.name;\n        }\n\n        if (doctype.internalSubset) {\n            str += doctype.internalSubset;\n        }\n\n        if (doctype.publicId) {\n            str += `\"${doctype.publicId}\"`;\n        }\n\n        if (doctype.systemId) {\n            str += `\"${doctype.systemId}\"`;\n        }\n\n        str += '>';\n    }\n\n    return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n    if (\n        ownerDocument &&\n        ownerDocument.defaultView &&\n        (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n    ) {\n        ownerDocument.defaultView.scrollTo(x, y);\n    }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n    element.scrollLeft = x;\n    element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n    content: \"\" !important;\n    display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n    createStyles(\n        body,\n        `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n         .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n    );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n    const document = body.ownerDocument;\n    if (document) {\n        const style = document.createElement('style');\n        style.textContent = styles;\n        body.appendChild(style);\n    }\n};\n", "import {FEATURES} from './features';\nimport {Context} from './context';\n\nexport class CacheStorage {\n    private static _link?: HTMLAnchorElement;\n    private static _origin = 'about:blank';\n\n    static getOrigin(url: string): string {\n        const link = CacheStorage._link;\n        if (!link) {\n            return 'about:blank';\n        }\n\n        link.href = url;\n        link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n        return link.protocol + link.hostname + link.port;\n    }\n\n    static isSameOrigin(src: string): boolean {\n        return CacheStorage.getOrigin(src) === CacheStorage._origin;\n    }\n\n    static setContext(window: Window): void {\n        CacheStorage._link = window.document.createElement('a');\n        CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n    }\n}\n\nexport interface ResourceOptions {\n    imageTimeout: number;\n    useCORS: boolean;\n    allowTaint: boolean;\n    proxy?: string;\n}\n\nexport class Cache {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private readonly _cache: {[key: string]: Promise<any>} = {};\n\n    constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n    addImage(src: string): Promise<void> {\n        const result = Promise.resolve();\n        if (this.has(src)) {\n            return result;\n        }\n\n        if (isBlobImage(src) || isRenderable(src)) {\n            (this._cache[src] = this.loadImage(src)).catch(() => {\n                // prevent unhandled rejection\n            });\n            return result;\n        }\n\n        return result;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    match(src: string): Promise<any> {\n        return this._cache[src];\n    }\n\n    private async loadImage(key: string) {\n        const isSameOrigin = CacheStorage.isSameOrigin(key);\n        const useCORS =\n            !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n        const useProxy =\n            !isInlineImage(key) &&\n            !isSameOrigin &&\n            !isBlobImage(key) &&\n            typeof this._options.proxy === 'string' &&\n            FEATURES.SUPPORT_CORS_XHR &&\n            !useCORS;\n        if (\n            !isSameOrigin &&\n            this._options.allowTaint === false &&\n            !isInlineImage(key) &&\n            !isBlobImage(key) &&\n            !useProxy &&\n            !useCORS\n        ) {\n            return;\n        }\n\n        let src = key;\n        if (useProxy) {\n            src = await this.proxy(src);\n        }\n\n        this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n        return await new Promise((resolve, reject) => {\n            const img = new Image();\n            img.onload = () => resolve(img);\n            img.onerror = reject;\n            //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n            if (isInlineBase64Image(src) || useCORS) {\n                img.crossOrigin = 'anonymous';\n            }\n            img.src = src;\n            if (img.complete === true) {\n                // Inline XML images may fail to parse, throwing an Error later on\n                setTimeout(() => resolve(img), 500);\n            }\n            if (this._options.imageTimeout > 0) {\n                setTimeout(\n                    () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n                    this._options.imageTimeout\n                );\n            }\n        });\n    }\n\n    private has(key: string): boolean {\n        return typeof this._cache[key] !== 'undefined';\n    }\n\n    keys(): Promise<string[]> {\n        return Promise.resolve(Object.keys(this._cache));\n    }\n\n    private proxy(src: string): Promise<string> {\n        const proxy = this._options.proxy;\n\n        if (!proxy) {\n            throw new Error('No proxy defined');\n        }\n\n        const key = src.substring(0, 256);\n\n        return new Promise((resolve, reject) => {\n            const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n            const xhr = new XMLHttpRequest();\n            xhr.onload = () => {\n                if (xhr.status === 200) {\n                    if (responseType === 'text') {\n                        resolve(xhr.response);\n                    } else {\n                        const reader = new FileReader();\n                        reader.addEventListener('load', () => resolve(reader.result as string), false);\n                        reader.addEventListener('error', (e) => reject(e), false);\n                        reader.readAsDataURL(xhr.response);\n                    }\n                } else {\n                    reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n                }\n            };\n\n            xhr.onerror = reject;\n            const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n            xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n            if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n                xhr.responseType = responseType;\n            }\n\n            if (this._options.imageTimeout) {\n                const timeout = this._options.imageTimeout;\n                xhr.timeout = timeout;\n                xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n            }\n\n            xhr.send();\n        });\n    }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n", "import {IPath, Path, PathType} from './path';\n\nexport class Vector implements IPath {\n    type: PathType;\n    x: number;\n    y: number;\n\n    constructor(x: number, y: number) {\n        this.type = PathType.VECTOR;\n        this.x = x;\n        this.y = y;\n    }\n\n    add(deltaX: number, deltaY: number): Vector {\n        return new Vector(this.x + deltaX, this.y + deltaY);\n    }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n", "import {Vector} from './vector';\nimport {IPath, PathType, Path} from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n    return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n    type: PathType;\n    start: Vector;\n    startControl: Vector;\n    endControl: Vector;\n    end: Vector;\n\n    constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n        this.type = PathType.BEZIER_CURVE;\n        this.start = start;\n        this.startControl = startControl;\n        this.endControl = endControl;\n        this.end = end;\n    }\n\n    subdivide(t: number, firstHalf: boolean): BezierCurve {\n        const ab = lerp(this.start, this.startControl, t);\n        const bc = lerp(this.startControl, this.endControl, t);\n        const cd = lerp(this.endControl, this.end, t);\n        const abbc = lerp(ab, bc, t);\n        const bccd = lerp(bc, cd, t);\n        const dest = lerp(abbc, bccd, t);\n        return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n    }\n\n    add(deltaX: number, deltaY: number): BezierCurve {\n        return new BezierCurve(\n            this.start.add(deltaX, deltaY),\n            this.startControl.add(deltaX, deltaY),\n            this.endControl.add(deltaX, deltaY),\n            this.end.add(deltaX, deltaY)\n        );\n    }\n\n    reverse(): BezierCurve {\n        return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n    }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n", "import {ElementContainer} from '../dom/element-container';\nimport {getAbsoluteValue, getAbsoluteValueForTuple} from '../css/types/length-percentage';\nimport {Vector} from './vector';\nimport {BezierCurve} from './bezier-curve';\nimport {Path} from './path';\n\nexport class BoundCurves {\n    readonly topLeftBorderDoubleOuterBox: Path;\n    readonly topRightBorderDoubleOuterBox: Path;\n    readonly bottomRightBorderDoubleOuterBox: Path;\n    readonly bottomLeftBorderDoubleOuterBox: Path;\n    readonly topLeftBorderDoubleInnerBox: Path;\n    readonly topRightBorderDoubleInnerBox: Path;\n    readonly bottomRightBorderDoubleInnerBox: Path;\n    readonly bottomLeftBorderDoubleInnerBox: Path;\n    readonly topLeftBorderStroke: Path;\n    readonly topRightBorderStroke: Path;\n    readonly bottomRightBorderStroke: Path;\n    readonly bottomLeftBorderStroke: Path;\n    readonly topLeftBorderBox: Path;\n    readonly topRightBorderBox: Path;\n    readonly bottomRightBorderBox: Path;\n    readonly bottomLeftBorderBox: Path;\n    readonly topLeftPaddingBox: Path;\n    readonly topRightPaddingBox: Path;\n    readonly bottomRightPaddingBox: Path;\n    readonly bottomLeftPaddingBox: Path;\n    readonly topLeftContentBox: Path;\n    readonly topRightContentBox: Path;\n    readonly bottomRightContentBox: Path;\n    readonly bottomLeftContentBox: Path;\n\n    constructor(element: ElementContainer) {\n        const styles = element.styles;\n        const bounds = element.bounds;\n\n        let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n        let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n        let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n        let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n        const factors = [];\n        factors.push((tlh + trh) / bounds.width);\n        factors.push((blh + brh) / bounds.width);\n        factors.push((tlv + blv) / bounds.height);\n        factors.push((trv + brv) / bounds.height);\n        const maxFactor = Math.max(...factors);\n\n        if (maxFactor > 1) {\n            tlh /= maxFactor;\n            tlv /= maxFactor;\n            trh /= maxFactor;\n            trv /= maxFactor;\n            brh /= maxFactor;\n            brv /= maxFactor;\n            blh /= maxFactor;\n            blv /= maxFactor;\n        }\n\n        const topWidth = bounds.width - trh;\n        const rightHeight = bounds.height - brv;\n        const bottomWidth = bounds.width - brh;\n        const leftHeight = bounds.height - blv;\n\n        const borderTopWidth = styles.borderTopWidth;\n        const borderRightWidth = styles.borderRightWidth;\n        const borderBottomWidth = styles.borderBottomWidth;\n        const borderLeftWidth = styles.borderLeftWidth;\n\n        const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n        const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n        const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n        const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n        this.topLeftBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 3,\n                      bounds.top + borderTopWidth / 3,\n                      tlh - borderLeftWidth / 3,\n                      tlv - borderTopWidth / 3,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n        this.topRightBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + borderTopWidth / 3,\n                      trh - borderRightWidth / 3,\n                      trv - borderTopWidth / 3,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n        this.bottomRightBorderDoubleOuterBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - borderRightWidth / 3,\n                      brv - borderBottomWidth / 3,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth / 3,\n                      bounds.top + bounds.height - borderBottomWidth / 3\n                  );\n        this.bottomLeftBorderDoubleOuterBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 3,\n                      bounds.top + leftHeight,\n                      blh - borderLeftWidth / 3,\n                      blv - borderBottomWidth / 3,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n        this.topLeftBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + (borderTopWidth * 2) / 3,\n                      tlh - (borderLeftWidth * 2) / 3,\n                      tlv - (borderTopWidth * 2) / 3,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n        this.topRightBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + (borderTopWidth * 2) / 3,\n                      trh - (borderRightWidth * 2) / 3,\n                      trv - (borderTopWidth * 2) / 3,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n                      bounds.top + (borderTopWidth * 2) / 3\n                  );\n        this.bottomRightBorderDoubleInnerBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - (borderRightWidth * 2) / 3,\n                      brv - (borderBottomWidth * 2) / 3,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n                      bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n                  );\n        this.bottomLeftBorderDoubleInnerBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + leftHeight,\n                      blh - (borderLeftWidth * 2) / 3,\n                      blv - (borderBottomWidth * 2) / 3,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n                  );\n        this.topLeftBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 2,\n                      bounds.top + borderTopWidth / 2,\n                      tlh - borderLeftWidth / 2,\n                      tlv - borderTopWidth / 2,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n        this.topRightBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + borderTopWidth / 2,\n                      trh - borderRightWidth / 2,\n                      trv - borderTopWidth / 2,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n        this.bottomRightBorderStroke =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - borderRightWidth / 2,\n                      brv - borderBottomWidth / 2,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth / 2,\n                      bounds.top + bounds.height - borderBottomWidth / 2\n                  );\n        this.bottomLeftBorderStroke =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 2,\n                      bounds.top + leftHeight,\n                      blh - borderLeftWidth / 2,\n                      blv - borderBottomWidth / 2,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n        this.topLeftBorderBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n                : new Vector(bounds.left, bounds.top);\n        this.topRightBorderBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top);\n        this.bottomRightBorderBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n        this.bottomLeftBorderBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left, bounds.top + bounds.height);\n        this.topLeftPaddingBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth,\n                      bounds.top + borderTopWidth,\n                      Math.max(0, tlh - borderLeftWidth),\n                      Math.max(0, tlv - borderTopWidth),\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n        this.topRightPaddingBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n                      bounds.top + borderTopWidth,\n                      topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n                      Math.max(0, trv - borderTopWidth),\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n        this.bottomRightPaddingBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n                      bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n                      Math.max(0, brh - borderRightWidth),\n                      Math.max(0, brv - borderBottomWidth),\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth,\n                      bounds.top + bounds.height - borderBottomWidth\n                  );\n        this.bottomLeftPaddingBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth,\n                      bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n                      Math.max(0, blh - borderLeftWidth),\n                      Math.max(0, blv - borderBottomWidth),\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n        this.topLeftContentBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + borderTopWidth + paddingTop,\n                      Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n                      Math.max(0, tlv - (borderTopWidth + paddingTop)),\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n        this.topRightContentBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n                      bounds.top + borderTopWidth + paddingTop,\n                      topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n                      trv - (borderTopWidth + paddingTop),\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth + paddingRight),\n                      bounds.top + borderTopWidth + paddingTop\n                  );\n        this.bottomRightContentBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n                      bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n                      Math.max(0, brh - (borderRightWidth + paddingRight)),\n                      brv - (borderBottomWidth + paddingBottom),\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth + paddingRight),\n                      bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n                  );\n        this.bottomLeftContentBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + leftHeight,\n                      Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n                      blv - (borderBottomWidth + paddingBottom),\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n                  );\n    }\n}\n\nenum CORNER {\n    TOP_LEFT = 0,\n    TOP_RIGHT = 1,\n    BOTTOM_RIGHT = 2,\n    BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n    const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n    const ox = r1 * kappa; // control point offset horizontal\n    const oy = r2 * kappa; // control point offset vertical\n    const xm = x + r1; // x-middle\n    const ym = y + r2; // y-middle\n\n    switch (position) {\n        case CORNER.TOP_LEFT:\n            return new BezierCurve(\n                new Vector(x, ym),\n                new Vector(x, ym - oy),\n                new Vector(xm - ox, y),\n                new Vector(xm, y)\n            );\n        case CORNER.TOP_RIGHT:\n            return new BezierCurve(\n                new Vector(x, y),\n                new Vector(x + ox, y),\n                new Vector(xm, ym - oy),\n                new Vector(xm, ym)\n            );\n        case CORNER.BOTTOM_RIGHT:\n            return new BezierCurve(\n                new Vector(xm, y),\n                new Vector(xm, y + oy),\n                new Vector(x + ox, ym),\n                new Vector(x, ym)\n            );\n        case CORNER.BOTTOM_LEFT:\n        default:\n            return new BezierCurve(\n                new Vector(xm, ym),\n                new Vector(xm - ox, ym),\n                new Vector(x, y + oy),\n                new Vector(x, y)\n            );\n    }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n    return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n    return [\n        curves.topLeftContentBox,\n        curves.topRightContentBox,\n        curves.bottomRightContentBox,\n        curves.bottomLeftContentBox\n    ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n    return [\n        curves.topLeftPaddingBox,\n        curves.topRightPaddingBox,\n        curves.bottomRightPaddingBox,\n        curves.bottomLeftPaddingBox\n    ];\n};\n", "import {Matrix} from '../css/property-descriptors/transform';\nimport {Path} from './path';\n\nexport const enum EffectType {\n    TRANSFORM = 0,\n    CLIP = 1,\n    OPACITY = 2\n}\n\nexport const enum EffectTarget {\n    BACKGROUND_BORDERS = 1 << 1,\n    CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n    readonly type: EffectType;\n    readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.TRANSFORM;\n    readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n    constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.CLIP;\n\n    constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.OPACITY;\n    readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n    constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n    effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n", "import {BezierCurve} from './bezier-curve';\nimport {Vector} from './vector';\nexport const enum PathType {\n    VECTOR = 0,\n    BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n    type: PathType;\n    add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n    if (a.length === b.length) {\n        return a.some((v, i) => v === b[i]);\n    }\n\n    return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n    return path.map((point, index) => {\n        switch (index) {\n            case 0:\n                return point.add(deltaX, deltaY);\n            case 1:\n                return point.add(deltaX + deltaW, deltaY);\n            case 2:\n                return point.add(deltaX + deltaW, deltaY + deltaH);\n            case 3:\n                return point.add(deltaX, deltaY + deltaH);\n        }\n        return point;\n    });\n};\n\nexport type Path = Vector | BezierCurve;\n", "import {ElementContainer, FLAGS} from '../dom/element-container';\nimport {contains} from '../core/bitwise';\nimport {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves';\nimport {ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect} from './effects';\nimport {OVERFLOW} from '../css/property-descriptors/overflow';\nimport {equalPath} from './path';\nimport {DISPLAY} from '../css/property-descriptors/display';\nimport {OLElementContainer} from '../dom/elements/ol-element-container';\nimport {LIElementContainer} from '../dom/elements/li-element-container';\nimport {createCounterText} from '../css/types/functions/counter';\nimport {POSITION} from '../css/property-descriptors/position';\n\nexport class StackingContext {\n    element: ElementPaint;\n    negativeZIndex: StackingContext[];\n    zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n    positiveZIndex: StackingContext[];\n    nonPositionedFloats: StackingContext[];\n    nonPositionedInlineLevel: StackingContext[];\n    inlineLevel: ElementPaint[];\n    nonInlineLevel: ElementPaint[];\n\n    constructor(container: ElementPaint) {\n        this.element = container;\n        this.inlineLevel = [];\n        this.nonInlineLevel = [];\n        this.negativeZIndex = [];\n        this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n        this.positiveZIndex = [];\n        this.nonPositionedFloats = [];\n        this.nonPositionedInlineLevel = [];\n    }\n}\n\nexport class ElementPaint {\n    readonly effects: IElementEffect[] = [];\n    readonly curves: BoundCurves;\n    listValue?: string;\n\n    constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n        this.curves = new BoundCurves(this.container);\n        if (this.container.styles.opacity < 1) {\n            this.effects.push(new OpacityEffect(this.container.styles.opacity));\n        }\n\n        if (this.container.styles.transform !== null) {\n            const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n            const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n            const matrix = this.container.styles.transform;\n            this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n        }\n\n        if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n            const borderBox = calculateBorderBoxPath(this.curves);\n            const paddingBox = calculatePaddingBoxPath(this.curves);\n\n            if (equalPath(borderBox, paddingBox)) {\n                this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n            } else {\n                this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n                this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n            }\n        }\n    }\n\n    getEffects(target: EffectTarget): IElementEffect[] {\n        let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n        let parent = this.parent;\n        const effects = this.effects.slice(0);\n        while (parent) {\n            const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n            if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n                effects.unshift(...croplessEffects);\n                inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n                if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n                    const borderBox = calculateBorderBoxPath(parent.curves);\n                    const paddingBox = calculatePaddingBoxPath(parent.curves);\n                    if (!equalPath(borderBox, paddingBox)) {\n                        effects.unshift(\n                            new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n                        );\n                    }\n                }\n            } else {\n                effects.unshift(...croplessEffects);\n            }\n\n            parent = parent.parent;\n        }\n\n        return effects.filter((effect) => contains(effect.target, target));\n    }\n}\n\nconst parseStackTree = (\n    parent: ElementPaint,\n    stackingContext: StackingContext,\n    realStackingContext: StackingContext,\n    listItems: ElementPaint[]\n) => {\n    parent.container.elements.forEach((child) => {\n        const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n        const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n        const paintContainer = new ElementPaint(child, parent);\n        if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n            listItems.push(paintContainer);\n        }\n\n        const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n        if (treatAsRealStackingContext || createsStackingContext) {\n            const parentStack =\n                treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n            const stack = new StackingContext(paintContainer);\n\n            if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n                const order = child.styles.zIndex.order;\n                if (order < 0) {\n                    let index = 0;\n\n                    parentStack.negativeZIndex.some((current, i) => {\n                        if (order > current.element.container.styles.zIndex.order) {\n                            index = i;\n                            return false;\n                        } else if (index > 0) {\n                            return true;\n                        }\n\n                        return false;\n                    });\n                    parentStack.negativeZIndex.splice(index, 0, stack);\n                } else if (order > 0) {\n                    let index = 0;\n                    parentStack.positiveZIndex.some((current, i) => {\n                        if (order >= current.element.container.styles.zIndex.order) {\n                            index = i + 1;\n                            return false;\n                        } else if (index > 0) {\n                            return true;\n                        }\n\n                        return false;\n                    });\n                    parentStack.positiveZIndex.splice(index, 0, stack);\n                } else {\n                    parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n                }\n            } else {\n                if (child.styles.isFloating()) {\n                    parentStack.nonPositionedFloats.push(stack);\n                } else {\n                    parentStack.nonPositionedInlineLevel.push(stack);\n                }\n            }\n\n            parseStackTree(\n                paintContainer,\n                stack,\n                treatAsRealStackingContext ? stack : realStackingContext,\n                listOwnerItems\n            );\n        } else {\n            if (child.styles.isInlineLevel()) {\n                stackingContext.inlineLevel.push(paintContainer);\n            } else {\n                stackingContext.nonInlineLevel.push(paintContainer);\n            }\n\n            parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n        }\n\n        if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n            processListItems(child, listOwnerItems);\n        }\n    });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n    let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n    const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n    for (let i = 0; i < elements.length; i++) {\n        const item = elements[i];\n        if (\n            item.container instanceof LIElementContainer &&\n            typeof item.container.value === 'number' &&\n            item.container.value !== 0\n        ) {\n            numbering = item.container.value;\n        }\n\n        item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n        numbering += reversed ? -1 : 1;\n    }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n    const paintContainer = new ElementPaint(container, null);\n    const root = new StackingContext(paintContainer);\n    const listItems: ElementPaint[] = [];\n    parseStackTree(paintContainer, root, root, listItems);\n    processListItems(paintContainer.container, listItems);\n    return root;\n};\n", "import {Path} from './path';\nimport {BoundCurves} from './bound-curves';\nimport {isBezierCurve} from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderBox,\n                curves.topLeftPaddingBox,\n                curves.topRightBorderBox,\n                curves.topRightPaddingBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderBox,\n                curves.topRightPaddingBox,\n                curves.bottomRightBorderBox,\n                curves.bottomRightPaddingBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderBox,\n                curves.bottomRightPaddingBox,\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftPaddingBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftPaddingBox,\n                curves.topLeftBorderBox,\n                curves.topLeftPaddingBox\n            );\n    }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderBox,\n                curves.topLeftBorderDoubleOuterBox,\n                curves.topRightBorderBox,\n                curves.topRightBorderDoubleOuterBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderBox,\n                curves.topRightBorderDoubleOuterBox,\n                curves.bottomRightBorderBox,\n                curves.bottomRightBorderDoubleOuterBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderBox,\n                curves.bottomRightBorderDoubleOuterBox,\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftBorderDoubleOuterBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftBorderDoubleOuterBox,\n                curves.topLeftBorderBox,\n                curves.topLeftBorderDoubleOuterBox\n            );\n    }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderDoubleInnerBox,\n                curves.topLeftPaddingBox,\n                curves.topRightBorderDoubleInnerBox,\n                curves.topRightPaddingBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderDoubleInnerBox,\n                curves.topRightPaddingBox,\n                curves.bottomRightBorderDoubleInnerBox,\n                curves.bottomRightPaddingBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderDoubleInnerBox,\n                curves.bottomRightPaddingBox,\n                curves.bottomLeftBorderDoubleInnerBox,\n                curves.bottomLeftPaddingBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderDoubleInnerBox,\n                curves.bottomLeftPaddingBox,\n                curves.topLeftBorderDoubleInnerBox,\n                curves.topLeftPaddingBox\n            );\n    }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n        case 1:\n            return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n        case 2:\n            return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n        case 3:\n        default:\n            return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n    }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n    const path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    } else {\n        path.push(outer1);\n    }\n\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    } else {\n        path.push(outer2);\n    }\n\n    return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n    const path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    } else {\n        path.push(outer1);\n    }\n\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    } else {\n        path.push(outer2);\n    }\n\n    if (isBezierCurve(inner2)) {\n        path.push(inner2.subdivide(0.5, true).reverse());\n    } else {\n        path.push(inner2);\n    }\n\n    if (isBezierCurve(inner1)) {\n        path.push(inner1.subdivide(0.5, false).reverse());\n    } else {\n        path.push(inner1);\n    }\n\n    return path;\n};\n", "import {getAbsoluteValue} from '../css/types/length-percentage';\nimport {Bounds} from '../css/layout/bounds';\nimport {ElementContainer} from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n    const bounds = element.bounds;\n    const styles = element.styles;\n    return bounds.add(\n        styles.borderLeftWidth,\n        styles.borderTopWidth,\n        -(styles.borderRightWidth + styles.borderLeftWidth),\n        -(styles.borderTopWidth + styles.borderBottomWidth)\n    );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n    const styles = element.styles;\n    const bounds = element.bounds;\n\n    const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n    const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n    const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n    const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n    return bounds.add(\n        paddingLeft + styles.borderLeftWidth,\n        paddingTop + styles.borderTopWidth,\n        -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n        -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n    );\n};\n", "import {Bounds} from '../css/layout/bounds';\nimport {BACKGROUND_ORIGIN} from '../css/property-descriptors/background-origin';\nimport {ElementContainer} from '../dom/element-container';\nimport {BACKGROUND_SIZE, BackgroundSizeInfo} from '../css/property-descriptors/background-size';\nimport {Vector} from './vector';\nimport {BACKGROUND_REPEAT} from '../css/property-descriptors/background-repeat';\nimport {getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage} from '../css/types/length-percentage';\nimport {CSSValue, isIdentToken} from '../css/syntax/parser';\nimport {contentBox, paddingBox} from './box-sizing';\nimport {Path} from './path';\nimport {BACKGROUND_CLIP} from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n    backgroundOrigin: BACKGROUND_ORIGIN,\n    element: ElementContainer\n): Bounds => {\n    if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n        return element.bounds;\n    }\n\n    if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n        return contentBox(element);\n    }\n\n    return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n    if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n        return element.bounds;\n    }\n\n    if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n        return contentBox(element);\n    }\n\n    return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n    container: ElementContainer,\n    index: number,\n    intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n    const backgroundPositioningArea = calculateBackgroundPositioningArea(\n        getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n        container\n    );\n\n    const backgroundPaintingArea = calculateBackgroundPaintingArea(\n        getBackgroundValueForIndex(container.styles.backgroundClip, index),\n        container\n    );\n\n    const backgroundImageSize = calculateBackgroundSize(\n        getBackgroundValueForIndex(container.styles.backgroundSize, index),\n        intrinsicSize,\n        backgroundPositioningArea\n    );\n\n    const [sizeWidth, sizeHeight] = backgroundImageSize;\n\n    const position = getAbsoluteValueForTuple(\n        getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n        backgroundPositioningArea.width - sizeWidth,\n        backgroundPositioningArea.height - sizeHeight\n    );\n\n    const path = calculateBackgroundRepeatPath(\n        getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n        position,\n        backgroundImageSize,\n        backgroundPositioningArea,\n        backgroundPaintingArea\n    );\n\n    const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n    const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n    return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n    size: BackgroundSizeInfo[],\n    [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n    bounds: Bounds\n): [number, number] => {\n    const [first, second] = size;\n\n    if (!first) {\n        return [0, 0];\n    }\n\n    if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n        return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n    }\n\n    const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n    if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n        if (hasIntrinsicValue(intrinsicProportion)) {\n            const targetRatio = bounds.width / bounds.height;\n\n            return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n                ? [bounds.width, bounds.width / intrinsicProportion]\n                : [bounds.height * intrinsicProportion, bounds.height];\n        }\n\n        return [bounds.width, bounds.height];\n    }\n\n    const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n    const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n    const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n    // If the background-size is auto or auto auto:\n    if (isAuto(first) && (!second || isAuto(second))) {\n        // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n        if (hasIntrinsicWidth && hasIntrinsicHeight) {\n            return [intrinsicWidth as number, intrinsicHeight as number];\n        }\n\n        // If the image has no intrinsic dimensions and has no intrinsic proportions,\n        // it's rendered at the size of the background positioning area.\n\n        if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n            return [bounds.width, bounds.height];\n        }\n\n        // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n        // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n        // The other dimension is computed using the specified dimension and the intrinsic proportions.\n        if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n            const width = hasIntrinsicWidth\n                ? (intrinsicWidth as number)\n                : (intrinsicHeight as number) * (intrinsicProportion as number);\n            const height = hasIntrinsicHeight\n                ? (intrinsicHeight as number)\n                : (intrinsicWidth as number) / (intrinsicProportion as number);\n            return [width, height];\n        }\n\n        // If the image has only one intrinsic dimension but has no intrinsic proportions,\n        // it's rendered using the specified dimension and the other dimension of the background positioning area.\n        const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n        const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n        return [width, height];\n    }\n\n    // If the image has intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n    if (hasIntrinsicProportion) {\n        let width = 0;\n        let height = 0;\n        if (isLengthPercentage(first)) {\n            width = getAbsoluteValue(first, bounds.width);\n        } else if (isLengthPercentage(second)) {\n            height = getAbsoluteValue(second, bounds.height);\n        }\n\n        if (isAuto(first)) {\n            width = height * (intrinsicProportion as number);\n        } else if (!second || isAuto(second)) {\n            height = width / (intrinsicProportion as number);\n        }\n\n        return [width, height];\n    }\n\n    // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n    // if there is one. If there is no such intrinsic dimension,\n    // it becomes the corresponding dimension of the background positioning area.\n\n    let width = null;\n    let height = null;\n\n    if (isLengthPercentage(first)) {\n        width = getAbsoluteValue(first, bounds.width);\n    } else if (second && isLengthPercentage(second)) {\n        height = getAbsoluteValue(second, bounds.height);\n    }\n\n    if (width !== null && (!second || isAuto(second))) {\n        height =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n                : bounds.height;\n    }\n\n    if (height !== null && isAuto(first)) {\n        width =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n                : bounds.width;\n    }\n\n    if (width !== null && height !== null) {\n        return [width, height];\n    }\n\n    throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n    const value = values[index];\n    if (typeof value === 'undefined') {\n        return values[0];\n    }\n\n    return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n    repeat: BACKGROUND_REPEAT,\n    [x, y]: [number, number],\n    [width, height]: [number, number],\n    backgroundPositioningArea: Bounds,\n    backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n    switch (repeat) {\n        case BACKGROUND_REPEAT.REPEAT_X:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n                    Math.round(height + backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left),\n                    Math.round(height + backgroundPositioningArea.top + y)\n                )\n            ];\n        case BACKGROUND_REPEAT.REPEAT_Y:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n                )\n            ];\n        case BACKGROUND_REPEAT.NO_REPEAT:\n            return [\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top + y + height)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.top + y + height)\n                )\n            ];\n        default:\n            return [\n                new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n                    Math.round(backgroundPaintingArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n                    Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left),\n                    Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n                )\n            ];\n    }\n};\n", "export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n", "import {SMALL_IMAGE} from '../core/util';\nexport interface FontMetric {\n    baseline: number;\n    middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n    private readonly _data: {[key: string]: FontMetric};\n    private readonly _document: Document;\n\n    constructor(document: Document) {\n        this._data = {};\n        this._document = document;\n    }\n\n    private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n        const container = this._document.createElement('div');\n        const img = this._document.createElement('img');\n        const span = this._document.createElement('span');\n\n        const body = this._document.body as HTMLBodyElement;\n\n        container.style.visibility = 'hidden';\n        container.style.fontFamily = fontFamily;\n        container.style.fontSize = fontSize;\n        container.style.margin = '0';\n        container.style.padding = '0';\n        container.style.whiteSpace = 'nowrap';\n\n        body.appendChild(container);\n\n        img.src = SMALL_IMAGE;\n        img.width = 1;\n        img.height = 1;\n\n        img.style.margin = '0';\n        img.style.padding = '0';\n        img.style.verticalAlign = 'baseline';\n\n        span.style.fontFamily = fontFamily;\n        span.style.fontSize = fontSize;\n        span.style.margin = '0';\n        span.style.padding = '0';\n\n        span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n        container.appendChild(span);\n        container.appendChild(img);\n        const baseline = img.offsetTop - span.offsetTop + 2;\n\n        container.removeChild(span);\n        container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n        container.style.lineHeight = 'normal';\n        img.style.verticalAlign = 'super';\n\n        const middle = img.offsetTop - container.offsetTop + 2;\n\n        body.removeChild(container);\n\n        return {baseline, middle};\n    }\n    getMetrics(fontFamily: string, fontSize: string): FontMetric {\n        const key = `${fontFamily} ${fontSize}`;\n        if (typeof this._data[key] === 'undefined') {\n            this._data[key] = this.parseMetrics(fontFamily, fontSize);\n        }\n\n        return this._data[key];\n    }\n}\n", "import {Context} from '../core/context';\nimport {RenderConfigurations} from './canvas/canvas-renderer';\n\nexport class Renderer {\n    constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n", "import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context';\nimport {asString, Color, isTransparent} from '../../css/types/color';\nimport {ElementContainer, FLAGS} from '../../dom/element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {CSSParsedDeclaration} from '../../css';\nimport {TextContainer} from '../../dom/text-container';\nimport {Path, transformPath} from '../path';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves';\nimport {BezierCurve, isBezierCurve} from '../bezier-curve';\nimport {Vector} from '../vector';\nimport {CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient} from '../../css/types/image';\nimport {\n    parsePathForBorder,\n    parsePathForBorderDoubleInner,\n    parsePathForBorderDoubleOuter,\n    parsePathForBorderStroke\n} from '../border';\nimport {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background';\nimport {isDimensionToken} from '../../css/syntax/parser';\nimport {segmentGraphemes, TextBounds} from '../../css/layout/text';\nimport {ImageElementContainer} from '../../dom/replaced-elements/image-element-container';\nimport {contentBox} from '../box-sizing';\nimport {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container';\nimport {ReplacedElementContainer} from '../../dom/replaced-elements';\nimport {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects';\nimport {contains} from '../../core/bitwise';\nimport {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient';\nimport {FIFTY_PERCENT, getAbsoluteValue} from '../../css/types/length-percentage';\nimport {TEXT_DECORATION_LINE} from '../../css/property-descriptors/text-decoration-line';\nimport {FontMetrics} from '../font-metrics';\nimport {DISPLAY} from '../../css/property-descriptors/display';\nimport {Bounds} from '../../css/layout/bounds';\nimport {LIST_STYLE_TYPE} from '../../css/property-descriptors/list-style-type';\nimport {computeLineHeight} from '../../css/property-descriptors/line-height';\nimport {CHECKBOX, INPUT_COLOR, InputElementContainer, RADIO} from '../../dom/replaced-elements/input-element-container';\nimport {TEXT_ALIGN} from '../../css/property-descriptors/text-align';\nimport {TextareaElementContainer} from '../../dom/elements/textarea-element-container';\nimport {SelectElementContainer} from '../../dom/elements/select-element-container';\nimport {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container';\nimport {TextShadow} from '../../css/property-descriptors/text-shadow';\nimport {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\nimport {DIRECTION} from '../../css/property-descriptors/direction';\n\nexport type RenderConfigurations = RenderOptions & {\n    backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n    scale: number;\n    canvas?: HTMLCanvasElement;\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n    canvas: HTMLCanvasElement;\n    ctx: CanvasRenderingContext2D;\n    private readonly _activeEffects: IElementEffect[] = [];\n    private readonly fontMetrics: FontMetrics;\n\n    constructor(context: Context, options: RenderConfigurations) {\n        super(context, options);\n        this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n        if (!options.canvas) {\n            this.canvas.width = Math.floor(options.width * options.scale);\n            this.canvas.height = Math.floor(options.height * options.scale);\n            this.canvas.style.width = `${options.width}px`;\n            this.canvas.style.height = `${options.height}px`;\n        }\n        this.fontMetrics = new FontMetrics(document);\n        this.ctx.scale(this.options.scale, this.options.scale);\n        this.ctx.translate(-options.x, -options.y);\n        this.ctx.textBaseline = 'bottom';\n        this._activeEffects = [];\n        this.context.logger.debug(\n            `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n        );\n    }\n\n    applyEffects(effects: IElementEffect[]): void {\n        while (this._activeEffects.length) {\n            this.popEffect();\n        }\n\n        effects.forEach((effect) => this.applyEffect(effect));\n    }\n\n    applyEffect(effect: IElementEffect): void {\n        this.ctx.save();\n        if (isOpacityEffect(effect)) {\n            this.ctx.globalAlpha = effect.opacity;\n        }\n\n        if (isTransformEffect(effect)) {\n            this.ctx.translate(effect.offsetX, effect.offsetY);\n            this.ctx.transform(\n                effect.matrix[0],\n                effect.matrix[1],\n                effect.matrix[2],\n                effect.matrix[3],\n                effect.matrix[4],\n                effect.matrix[5]\n            );\n            this.ctx.translate(-effect.offsetX, -effect.offsetY);\n        }\n\n        if (isClipEffect(effect)) {\n            this.path(effect.path);\n            this.ctx.clip();\n        }\n\n        this._activeEffects.push(effect);\n    }\n\n    popEffect(): void {\n        this._activeEffects.pop();\n        this.ctx.restore();\n    }\n\n    async renderStack(stack: StackingContext): Promise<void> {\n        const styles = stack.element.container.styles;\n        if (styles.isVisible()) {\n            await this.renderStackContent(stack);\n        }\n    }\n\n    async renderNode(paint: ElementPaint): Promise<void> {\n        if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n            debugger;\n        }\n\n        if (paint.container.styles.isVisible()) {\n            await this.renderNodeBackgroundAndBorders(paint);\n            await this.renderNodeContent(paint);\n        }\n    }\n\n    renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n        if (letterSpacing === 0) {\n            this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n        } else {\n            const letters = segmentGraphemes(text.text);\n            letters.reduce((left, letter) => {\n                this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n                return left + this.ctx.measureText(letter).width;\n            }, text.bounds.left);\n        }\n    }\n\n    private createFontStyle(styles: CSSParsedDeclaration): string[] {\n        const fontVariant = styles.fontVariant\n            .filter((variant) => variant === 'normal' || variant === 'small-caps')\n            .join('');\n        const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n        const fontSize = isDimensionToken(styles.fontSize)\n            ? `${styles.fontSize.number}${styles.fontSize.unit}`\n            : `${styles.fontSize.number}px`;\n\n        return [\n            [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n            fontFamily,\n            fontSize\n        ];\n    }\n\n    async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n        const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n        this.ctx.font = font;\n\n        this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n        this.ctx.textAlign = 'left';\n        this.ctx.textBaseline = 'alphabetic';\n        const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n        const paintOrder = styles.paintOrder;\n\n        text.textBounds.forEach((text) => {\n            paintOrder.forEach((paintOrderLayer) => {\n                switch (paintOrderLayer) {\n                    case PAINT_ORDER_LAYER.FILL:\n                        this.ctx.fillStyle = asString(styles.color);\n                        this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                        const textShadows: TextShadow = styles.textShadow;\n\n                        if (textShadows.length && text.text.trim().length) {\n                            textShadows\n                                .slice(0)\n                                .reverse()\n                                .forEach((textShadow) => {\n                                    this.ctx.shadowColor = asString(textShadow.color);\n                                    this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n                                    this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n                                    this.ctx.shadowBlur = textShadow.blur.number;\n\n                                    this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                                });\n\n                            this.ctx.shadowColor = '';\n                            this.ctx.shadowOffsetX = 0;\n                            this.ctx.shadowOffsetY = 0;\n                            this.ctx.shadowBlur = 0;\n                        }\n\n                        if (styles.textDecorationLine.length) {\n                            this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n                            styles.textDecorationLine.forEach((textDecorationLine) => {\n                                switch (textDecorationLine) {\n                                    case TEXT_DECORATION_LINE.UNDERLINE:\n                                        // Draws a line at the baseline of the font\n                                        // TODO As some browsers display the line as more than 1px if the font-size is big,\n                                        // need to take that into account both in position and size\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.round(text.bounds.top + baseline),\n                                            text.bounds.width,\n                                            1\n                                        );\n\n                                        break;\n                                    case TEXT_DECORATION_LINE.OVERLINE:\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.round(text.bounds.top),\n                                            text.bounds.width,\n                                            1\n                                        );\n                                        break;\n                                    case TEXT_DECORATION_LINE.LINE_THROUGH:\n                                        // TODO try and find exact position for line-through\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.ceil(text.bounds.top + middle),\n                                            text.bounds.width,\n                                            1\n                                        );\n                                        break;\n                                }\n                            });\n                        }\n                        break;\n                    case PAINT_ORDER_LAYER.STROKE:\n                        if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n                            this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n                            this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n                            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                            this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n                            this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n                        }\n                        this.ctx.strokeStyle = '';\n                        this.ctx.lineWidth = 0;\n                        this.ctx.lineJoin = 'miter';\n                        break;\n                }\n            });\n        });\n    }\n\n    renderReplacedElement(\n        container: ReplacedElementContainer,\n        curves: BoundCurves,\n        image: HTMLImageElement | HTMLCanvasElement\n    ): void {\n        if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n            const box = contentBox(container);\n            const path = calculatePaddingBoxPath(curves);\n            this.path(path);\n            this.ctx.save();\n            this.ctx.clip();\n            this.ctx.drawImage(\n                image,\n                0,\n                0,\n                container.intrinsicWidth,\n                container.intrinsicHeight,\n                box.left,\n                box.top,\n                box.width,\n                box.height\n            );\n            this.ctx.restore();\n        }\n    }\n\n    async renderNodeContent(paint: ElementPaint): Promise<void> {\n        this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n        const container = paint.container;\n        const curves = paint.curves;\n        const styles = container.styles;\n        for (const child of container.textNodes) {\n            await this.renderTextNode(child, styles);\n        }\n\n        if (container instanceof ImageElementContainer) {\n            try {\n                const image = await this.context.cache.match(container.src);\n                this.renderReplacedElement(container, curves, image);\n            } catch (e) {\n                this.context.logger.error(`Error loading image ${container.src}`);\n            }\n        }\n\n        if (container instanceof CanvasElementContainer) {\n            this.renderReplacedElement(container, curves, container.canvas);\n        }\n\n        if (container instanceof SVGElementContainer) {\n            try {\n                const image = await this.context.cache.match(container.svg);\n                this.renderReplacedElement(container, curves, image);\n            } catch (e) {\n                this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n            }\n        }\n\n        if (container instanceof IFrameElementContainer && container.tree) {\n            const iframeRenderer = new CanvasRenderer(this.context, {\n                scale: this.options.scale,\n                backgroundColor: container.backgroundColor,\n                x: 0,\n                y: 0,\n                width: container.width,\n                height: container.height\n            });\n\n            const canvas = await iframeRenderer.render(container.tree);\n            if (container.width && container.height) {\n                this.ctx.drawImage(\n                    canvas,\n                    0,\n                    0,\n                    container.width,\n                    container.height,\n                    container.bounds.left,\n                    container.bounds.top,\n                    container.bounds.width,\n                    container.bounds.height\n                );\n            }\n        }\n\n        if (container instanceof InputElementContainer) {\n            const size = Math.min(container.bounds.width, container.bounds.height);\n\n            if (container.type === CHECKBOX) {\n                if (container.checked) {\n                    this.ctx.save();\n                    this.path([\n                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n                        new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n                        new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n                        new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n                        new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n                        new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n                    ]);\n\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                }\n            } else if (container.type === RADIO) {\n                if (container.checked) {\n                    this.ctx.save();\n                    this.ctx.beginPath();\n                    this.ctx.arc(\n                        container.bounds.left + size / 2,\n                        container.bounds.top + size / 2,\n                        size / 4,\n                        0,\n                        Math.PI * 2,\n                        true\n                    );\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                }\n            }\n        }\n\n        if (isTextInputElement(container) && container.value.length) {\n            const [fontFamily, fontSize] = this.createFontStyle(styles);\n            const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n            this.ctx.font = fontFamily;\n            this.ctx.fillStyle = asString(styles.color);\n\n            this.ctx.textBaseline = 'alphabetic';\n            this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n            const bounds = contentBox(container);\n\n            let x = 0;\n\n            switch (container.styles.textAlign) {\n                case TEXT_ALIGN.CENTER:\n                    x += bounds.width / 2;\n                    break;\n                case TEXT_ALIGN.RIGHT:\n                    x += bounds.width;\n                    break;\n            }\n\n            const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n            this.ctx.save();\n            this.path([\n                new Vector(bounds.left, bounds.top),\n                new Vector(bounds.left + bounds.width, bounds.top),\n                new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n                new Vector(bounds.left, bounds.top + bounds.height)\n            ]);\n\n            this.ctx.clip();\n            this.renderTextWithLetterSpacing(\n                new TextBounds(container.value, textBounds),\n                styles.letterSpacing,\n                baseline\n            );\n            this.ctx.restore();\n            this.ctx.textBaseline = 'alphabetic';\n            this.ctx.textAlign = 'left';\n        }\n\n        if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n            if (container.styles.listStyleImage !== null) {\n                const img = container.styles.listStyleImage;\n                if (img.type === CSSImageType.URL) {\n                    let image;\n                    const url = (img as CSSURLImage).url;\n                    try {\n                        image = await this.context.cache.match(url);\n                        this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n                    } catch (e) {\n                        this.context.logger.error(`Error loading list-style-image ${url}`);\n                    }\n                }\n            } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n                const [fontFamily] = this.createFontStyle(styles);\n\n                this.ctx.font = fontFamily;\n                this.ctx.fillStyle = asString(styles.color);\n\n                this.ctx.textBaseline = 'middle';\n                this.ctx.textAlign = 'right';\n                const bounds = new Bounds(\n                    container.bounds.left,\n                    container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n                    container.bounds.width,\n                    computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n                );\n\n                this.renderTextWithLetterSpacing(\n                    new TextBounds(paint.listValue, bounds),\n                    styles.letterSpacing,\n                    computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n                );\n                this.ctx.textBaseline = 'bottom';\n                this.ctx.textAlign = 'left';\n            }\n        }\n    }\n\n    async renderStackContent(stack: StackingContext): Promise<void> {\n        if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n            debugger;\n        }\n        // https://www.w3.org/TR/css-position-3/#painting-order\n        // 1. the background and borders of the element forming the stacking context.\n        await this.renderNodeBackgroundAndBorders(stack.element);\n        // 2. the child stacking contexts with negative stack levels (most negative first).\n        for (const child of stack.negativeZIndex) {\n            await this.renderStack(child);\n        }\n        // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n        await this.renderNodeContent(stack.element);\n\n        for (const child of stack.nonInlineLevel) {\n            await this.renderNode(child);\n        }\n        // 4. All non-positioned floating descendants, in tree order. For each one of these,\n        // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n        // which actually create a new stacking context should be considered part of the parent stacking context,\n        // not this new one.\n        for (const child of stack.nonPositionedFloats) {\n            await this.renderStack(child);\n        }\n        // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n        for (const child of stack.nonPositionedInlineLevel) {\n            await this.renderStack(child);\n        }\n        for (const child of stack.inlineLevel) {\n            await this.renderNode(child);\n        }\n        // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n        //  All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n        //  For those with 'z-index: auto', treat the element as if it created a new stacking context,\n        //  but any positioned descendants and descendants which actually create a new stacking context should be\n        //  considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n        //  treat the stacking context generated atomically.\n        //\n        //  All opacity descendants with opacity less than 1\n        //\n        //  All transform descendants with transform other than none\n        for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n            await this.renderStack(child);\n        }\n        // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n        // order (smallest first) then tree order.\n        for (const child of stack.positiveZIndex) {\n            await this.renderStack(child);\n        }\n    }\n\n    mask(paths: Path[]): void {\n        this.ctx.beginPath();\n        this.ctx.moveTo(0, 0);\n        this.ctx.lineTo(this.canvas.width, 0);\n        this.ctx.lineTo(this.canvas.width, this.canvas.height);\n        this.ctx.lineTo(0, this.canvas.height);\n        this.ctx.lineTo(0, 0);\n        this.formatPath(paths.slice(0).reverse());\n        this.ctx.closePath();\n    }\n\n    path(paths: Path[]): void {\n        this.ctx.beginPath();\n        this.formatPath(paths);\n        this.ctx.closePath();\n    }\n\n    formatPath(paths: Path[]): void {\n        paths.forEach((point, index) => {\n            const start: Vector = isBezierCurve(point) ? point.start : point;\n            if (index === 0) {\n                this.ctx.moveTo(start.x, start.y);\n            } else {\n                this.ctx.lineTo(start.x, start.y);\n            }\n\n            if (isBezierCurve(point)) {\n                this.ctx.bezierCurveTo(\n                    point.startControl.x,\n                    point.startControl.y,\n                    point.endControl.x,\n                    point.endControl.y,\n                    point.end.x,\n                    point.end.y\n                );\n            }\n        });\n    }\n\n    renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n        this.path(path);\n        this.ctx.fillStyle = pattern;\n        this.ctx.translate(offsetX, offsetY);\n        this.ctx.fill();\n        this.ctx.translate(-offsetX, -offsetY);\n    }\n\n    resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n        if (image.width === width && image.height === height) {\n            return image;\n        }\n\n        const ownerDocument = this.canvas.ownerDocument ?? document;\n        const canvas = ownerDocument.createElement('canvas');\n        canvas.width = Math.max(1, width);\n        canvas.height = Math.max(1, height);\n        const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n        ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n        return canvas;\n    }\n\n    async renderBackgroundImage(container: ElementContainer): Promise<void> {\n        let index = container.styles.backgroundImage.length - 1;\n        for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n            if (backgroundImage.type === CSSImageType.URL) {\n                let image;\n                const url = (backgroundImage as CSSURLImage).url;\n                try {\n                    image = await this.context.cache.match(url);\n                } catch (e) {\n                    this.context.logger.error(`Error loading background-image ${url}`);\n                }\n\n                if (image) {\n                    const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n                        image.width,\n                        image.height,\n                        image.width / image.height\n                    ]);\n                    const pattern = this.ctx.createPattern(\n                        this.resizeImage(image, width, height),\n                        'repeat'\n                    ) as CanvasPattern;\n                    this.renderRepeat(path, pattern, x, y);\n                }\n            } else if (isLinearGradient(backgroundImage)) {\n                const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n                const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n                const canvas = document.createElement('canvas');\n                canvas.width = width;\n                canvas.height = height;\n                const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n                const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n                processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n                    gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n                );\n\n                ctx.fillStyle = gradient;\n                ctx.fillRect(0, 0, width, height);\n                if (width > 0 && height > 0) {\n                    const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n                    this.renderRepeat(path, pattern, x, y);\n                }\n            } else if (isRadialGradient(backgroundImage)) {\n                const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n                    null,\n                    null,\n                    null\n                ]);\n                const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n                const x = getAbsoluteValue(position[0], width);\n                const y = getAbsoluteValue(position[position.length - 1], height);\n\n                const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n                if (rx > 0 && ry > 0) {\n                    const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n                    processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n                        radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n                    );\n\n                    this.path(path);\n                    this.ctx.fillStyle = radialGradient;\n                    if (rx !== ry) {\n                        // transforms for elliptical radial gradient\n                        const midX = container.bounds.left + 0.5 * container.bounds.width;\n                        const midY = container.bounds.top + 0.5 * container.bounds.height;\n                        const f = ry / rx;\n                        const invF = 1 / f;\n\n                        this.ctx.save();\n                        this.ctx.translate(midX, midY);\n                        this.ctx.transform(1, 0, 0, f, 0, 0);\n                        this.ctx.translate(-midX, -midY);\n\n                        this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n                        this.ctx.restore();\n                    } else {\n                        this.ctx.fill();\n                    }\n                }\n            }\n            index--;\n        }\n    }\n\n    async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n        this.path(parsePathForBorder(curvePoints, side));\n        this.ctx.fillStyle = asString(color);\n        this.ctx.fill();\n    }\n\n    async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n        if (width < 3) {\n            await this.renderSolidBorder(color, side, curvePoints);\n            return;\n        }\n\n        const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n        this.path(outerPaths);\n        this.ctx.fillStyle = asString(color);\n        this.ctx.fill();\n        const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n        this.path(innerPaths);\n        this.ctx.fill();\n    }\n\n    async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n        this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n        const styles = paint.container.styles;\n        const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n        const borders = [\n            {style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth},\n            {style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth},\n            {style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth},\n            {style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth}\n        ];\n\n        const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n            getBackgroundValueForIndex(styles.backgroundClip, 0),\n            paint.curves\n        );\n\n        if (hasBackground || styles.boxShadow.length) {\n            this.ctx.save();\n            this.path(backgroundPaintingArea);\n            this.ctx.clip();\n\n            if (!isTransparent(styles.backgroundColor)) {\n                this.ctx.fillStyle = asString(styles.backgroundColor);\n                this.ctx.fill();\n            }\n\n            await this.renderBackgroundImage(paint.container);\n\n            this.ctx.restore();\n\n            styles.boxShadow\n                .slice(0)\n                .reverse()\n                .forEach((shadow) => {\n                    this.ctx.save();\n                    const borderBoxArea = calculateBorderBoxPath(paint.curves);\n                    const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n                    const shadowPaintingArea = transformPath(\n                        borderBoxArea,\n                        -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n                        (shadow.inset ? 1 : -1) * shadow.spread.number,\n                        shadow.spread.number * (shadow.inset ? -2 : 2),\n                        shadow.spread.number * (shadow.inset ? -2 : 2)\n                    );\n\n                    if (shadow.inset) {\n                        this.path(borderBoxArea);\n                        this.ctx.clip();\n                        this.mask(shadowPaintingArea);\n                    } else {\n                        this.mask(borderBoxArea);\n                        this.ctx.clip();\n                        this.path(shadowPaintingArea);\n                    }\n\n                    this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n                    this.ctx.shadowOffsetY = shadow.offsetY.number;\n                    this.ctx.shadowColor = asString(shadow.color);\n                    this.ctx.shadowBlur = shadow.blur.number;\n                    this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n                    this.ctx.fill();\n                    this.ctx.restore();\n                });\n        }\n\n        let side = 0;\n        for (const border of borders) {\n            if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n                if (border.style === BORDER_STYLE.DASHED) {\n                    await this.renderDashedDottedBorder(\n                        border.color,\n                        border.width,\n                        side,\n                        paint.curves,\n                        BORDER_STYLE.DASHED\n                    );\n                } else if (border.style === BORDER_STYLE.DOTTED) {\n                    await this.renderDashedDottedBorder(\n                        border.color,\n                        border.width,\n                        side,\n                        paint.curves,\n                        BORDER_STYLE.DOTTED\n                    );\n                } else if (border.style === BORDER_STYLE.DOUBLE) {\n                    await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n                } else {\n                    await this.renderSolidBorder(border.color, side, paint.curves);\n                }\n            }\n            side++;\n        }\n    }\n\n    async renderDashedDottedBorder(\n        color: Color,\n        width: number,\n        side: number,\n        curvePoints: BoundCurves,\n        style: BORDER_STYLE\n    ): Promise<void> {\n        this.ctx.save();\n\n        const strokePaths = parsePathForBorderStroke(curvePoints, side);\n        const boxPaths = parsePathForBorder(curvePoints, side);\n\n        if (style === BORDER_STYLE.DASHED) {\n            this.path(boxPaths);\n            this.ctx.clip();\n        }\n\n        let startX, startY, endX, endY;\n        if (isBezierCurve(boxPaths[0])) {\n            startX = (boxPaths[0] as BezierCurve).start.x;\n            startY = (boxPaths[0] as BezierCurve).start.y;\n        } else {\n            startX = (boxPaths[0] as Vector).x;\n            startY = (boxPaths[0] as Vector).y;\n        }\n        if (isBezierCurve(boxPaths[1])) {\n            endX = (boxPaths[1] as BezierCurve).end.x;\n            endY = (boxPaths[1] as BezierCurve).end.y;\n        } else {\n            endX = (boxPaths[1] as Vector).x;\n            endY = (boxPaths[1] as Vector).y;\n        }\n\n        let length;\n        if (side === 0 || side === 2) {\n            length = Math.abs(startX - endX);\n        } else {\n            length = Math.abs(startY - endY);\n        }\n\n        this.ctx.beginPath();\n        if (style === BORDER_STYLE.DOTTED) {\n            this.formatPath(strokePaths);\n        } else {\n            this.formatPath(boxPaths.slice(0, 2));\n        }\n\n        let dashLength = width < 3 ? width * 3 : width * 2;\n        let spaceLength = width < 3 ? width * 2 : width;\n        if (style === BORDER_STYLE.DOTTED) {\n            dashLength = width;\n            spaceLength = width;\n        }\n\n        let useLineDash = true;\n        if (length <= dashLength * 2) {\n            useLineDash = false;\n        } else if (length <= dashLength * 2 + spaceLength) {\n            const multiplier = length / (2 * dashLength + spaceLength);\n            dashLength *= multiplier;\n            spaceLength *= multiplier;\n        } else {\n            const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n            const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n            const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n            spaceLength =\n                maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n                    ? minSpace\n                    : maxSpace;\n        }\n\n        if (useLineDash) {\n            if (style === BORDER_STYLE.DOTTED) {\n                this.ctx.setLineDash([0, dashLength + spaceLength]);\n            } else {\n                this.ctx.setLineDash([dashLength, spaceLength]);\n            }\n        }\n\n        if (style === BORDER_STYLE.DOTTED) {\n            this.ctx.lineCap = 'round';\n            this.ctx.lineWidth = width;\n        } else {\n            this.ctx.lineWidth = width * 2 + 1.1;\n        }\n        this.ctx.strokeStyle = asString(color);\n        this.ctx.stroke();\n        this.ctx.setLineDash([]);\n\n        // dashed round edge gap\n        if (style === BORDER_STYLE.DASHED) {\n            if (isBezierCurve(boxPaths[0])) {\n                const path1 = boxPaths[3] as BezierCurve;\n                const path2 = boxPaths[0] as BezierCurve;\n                this.ctx.beginPath();\n                this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                this.ctx.stroke();\n            }\n            if (isBezierCurve(boxPaths[1])) {\n                const path1 = boxPaths[1] as BezierCurve;\n                const path2 = boxPaths[2] as BezierCurve;\n                this.ctx.beginPath();\n                this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                this.ctx.stroke();\n            }\n        }\n\n        this.ctx.restore();\n    }\n\n    async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n        if (this.options.backgroundColor) {\n            this.ctx.fillStyle = asString(this.options.backgroundColor);\n            this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n        }\n\n        const stack = parseStackingContexts(element);\n\n        await this.renderStack(stack);\n        this.applyEffects([]);\n        return this.canvas;\n    }\n}\n\nconst isTextInputElement = (\n    container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n    if (container instanceof TextareaElementContainer) {\n        return true;\n    } else if (container instanceof SelectElementContainer) {\n        return true;\n    } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n        return true;\n    }\n    return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n    switch (clip) {\n        case BACKGROUND_CLIP.BORDER_BOX:\n            return calculateBorderBoxPath(curves);\n        case BACKGROUND_CLIP.CONTENT_BOX:\n            return calculateContentBoxPath(curves);\n        case BACKGROUND_CLIP.PADDING_BOX:\n        default:\n            return calculatePaddingBoxPath(curves);\n    }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n    switch (textAlign) {\n        case TEXT_ALIGN.CENTER:\n            return 'center';\n        case TEXT_ALIGN.RIGHT:\n            return 'right';\n        case TEXT_ALIGN.LEFT:\n        default:\n            return 'left';\n    }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n    return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n        ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n        : fontFamilies;\n};\n", "import {RenderConfigurations} from './canvas-renderer';\nimport {createForeignObjectSVG} from '../../core/features';\nimport {asString} from '../../css/types/color';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n    canvas: HTMLCanvasElement;\n    ctx: CanvasRenderingContext2D;\n    options: RenderConfigurations;\n\n    constructor(context: Context, options: RenderConfigurations) {\n        super(context, options);\n        this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n        this.options = options;\n        this.canvas.width = Math.floor(options.width * options.scale);\n        this.canvas.height = Math.floor(options.height * options.scale);\n        this.canvas.style.width = `${options.width}px`;\n        this.canvas.style.height = `${options.height}px`;\n\n        this.ctx.scale(this.options.scale, this.options.scale);\n        this.ctx.translate(-options.x, -options.y);\n        this.context.logger.debug(\n            `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n        );\n    }\n\n    async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n        const svg = createForeignObjectSVG(\n            this.options.width * this.options.scale,\n            this.options.height * this.options.scale,\n            this.options.scale,\n            this.options.scale,\n            element\n        );\n\n        const img = await loadSerializedSVG(svg);\n\n        if (this.options.backgroundColor) {\n            this.ctx.fillStyle = asString(this.options.backgroundColor);\n            this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n        }\n\n        this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n        return this.canvas;\n    }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n    new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onload = () => {\n            resolve(img);\n        };\n        img.onerror = reject;\n\n        img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n    });\n", "export interface LoggerOptions {\n    id: string;\n    enabled: boolean;\n}\n\nexport class Logger {\n    static instances: {[key: string]: Logger} = {};\n\n    private readonly id: string;\n    private readonly enabled: boolean;\n    private readonly start: number;\n\n    constructor({id, enabled}: LoggerOptions) {\n        this.id = id;\n        this.enabled = enabled;\n        this.start = Date.now();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    debug(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n                // eslint-disable-next-line no-console\n                console.debug(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n\n    getTime(): number {\n        return Date.now() - this.start;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    info(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n                // eslint-disable-next-line no-console\n                console.info(this.id, `${this.getTime()}ms`, ...args);\n            }\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    warn(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n                // eslint-disable-next-line no-console\n                console.warn(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    error(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n                // eslint-disable-next-line no-console\n                console.error(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n}\n", "import {Logger} from './logger';\nimport {Cache, ResourceOptions} from './cache-storage';\nimport {Bounds} from '../css/layout/bounds';\n\nexport type ContextOptions = {\n    logging: boolean;\n    cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n    private readonly instanceName = `#${Context.instanceCount++}`;\n    readonly logger: Logger;\n    readonly cache: Cache;\n\n    private static instanceCount = 1;\n\n    constructor(options: ContextOptions, public windowBounds: Bounds) {\n        this.logger = new Logger({id: this.instanceName, enabled: options.logging});\n        this.cache = options.cache ?? new Cache(this, options);\n    }\n}\n", "import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds';\nimport {COLORS, isTransparent, parseColor} from './css/types/color';\nimport {CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions} from './dom/document-cloner';\nimport {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser';\nimport {CacheStorage} from './core/cache-storage';\nimport {CanvasRenderer, RenderConfigurations, RenderOptions} from './render/canvas/canvas-renderer';\nimport {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer';\nimport {Context, ContextOptions} from './core/context';\n\nexport type Options = CloneOptions &\n    WindowOptions &\n    RenderOptions &\n    ContextOptions & {\n        backgroundColor: string | null;\n        foreignObjectRendering: boolean;\n        removeContainer?: boolean;\n    };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n    return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n    CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n    if (!element || typeof element !== 'object') {\n        return Promise.reject('Invalid element provided as first argument');\n    }\n    const ownerDocument = element.ownerDocument;\n\n    if (!ownerDocument) {\n        throw new Error(`Element is not attached to a Document`);\n    }\n\n    const defaultView = ownerDocument.defaultView;\n\n    if (!defaultView) {\n        throw new Error(`Document is not attached to a Window`);\n    }\n\n    const resourceOptions = {\n        allowTaint: opts.allowTaint ?? false,\n        imageTimeout: opts.imageTimeout ?? 15000,\n        proxy: opts.proxy,\n        useCORS: opts.useCORS ?? false\n    };\n\n    const contextOptions = {\n        logging: opts.logging ?? true,\n        cache: opts.cache,\n        ...resourceOptions\n    };\n\n    const windowOptions = {\n        windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n        windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n        scrollX: opts.scrollX ?? defaultView.pageXOffset,\n        scrollY: opts.scrollY ?? defaultView.pageYOffset\n    };\n\n    const windowBounds = new Bounds(\n        windowOptions.scrollX,\n        windowOptions.scrollY,\n        windowOptions.windowWidth,\n        windowOptions.windowHeight\n    );\n\n    const context = new Context(contextOptions, windowBounds);\n\n    const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n    const cloneOptions: CloneConfigurations = {\n        allowTaint: opts.allowTaint ?? false,\n        onclone: opts.onclone,\n        ignoreElements: opts.ignoreElements,\n        inlineImages: foreignObjectRendering,\n        copyStyles: foreignObjectRendering\n    };\n\n    context.logger.debug(\n        `Starting document clone with size ${windowBounds.width}x${\n            windowBounds.height\n        } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n    );\n\n    const documentCloner = new DocumentCloner(context, element, cloneOptions);\n    const clonedElement = documentCloner.clonedReferenceElement;\n    if (!clonedElement) {\n        return Promise.reject(`Unable to find element in cloned iframe`);\n    }\n\n    const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n    const {width, height, left, top} =\n        isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n            ? parseDocumentSize(clonedElement.ownerDocument)\n            : parseBounds(context, clonedElement);\n\n    const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n    const renderOptions: RenderConfigurations = {\n        canvas: opts.canvas,\n        backgroundColor,\n        scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n        x: (opts.x ?? 0) + left,\n        y: (opts.y ?? 0) + top,\n        width: opts.width ?? Math.ceil(width),\n        height: opts.height ?? Math.ceil(height)\n    };\n\n    let canvas;\n\n    if (foreignObjectRendering) {\n        context.logger.debug(`Document cloned, using foreign object rendering`);\n        const renderer = new ForeignObjectRenderer(context, renderOptions);\n        canvas = await renderer.render(clonedElement);\n    } else {\n        context.logger.debug(\n            `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n        );\n\n        context.logger.debug(`Starting DOM parsing`);\n        const root = parseTree(context, clonedElement);\n\n        if (backgroundColor === root.styles.backgroundColor) {\n            root.styles.backgroundColor = COLORS.TRANSPARENT;\n        }\n\n        context.logger.debug(\n            `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n        );\n\n        const renderer = new CanvasRenderer(context, renderOptions);\n        canvas = await renderer.render(root);\n    }\n\n    if (opts.removeContainer ?? true) {\n        if (!DocumentCloner.destroy(container)) {\n            context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n        }\n    }\n\n    context.logger.debug(`Finished rendering`);\n    return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n    const ownerDocument = element.ownerDocument;\n    // http://www.w3.org/TR/css3-background/#special-backgrounds\n    const documentBackgroundColor = ownerDocument.documentElement\n        ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n        : COLORS.TRANSPARENT;\n    const bodyBackgroundColor = ownerDocument.body\n        ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n        : COLORS.TRANSPARENT;\n\n    const defaultBackgroundColor =\n        typeof backgroundColorOverride === 'string'\n            ? parseColor(context, backgroundColorOverride)\n            : backgroundColorOverride === null\n            ? COLORS.TRANSPARENT\n            : 0xffffffff;\n\n    return element === ownerDocument.documentElement\n        ? isTransparent(documentBackgroundColor)\n            ? isTransparent(bodyBackgroundColor)\n                ? defaultBackgroundColor\n                : bodyBackgroundColor\n            : documentBackgroundColor\n        : defaultBackgroundColor;\n};\n"],
+  "mappings": "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",
+  "names": ["d", "b", "__assign", "e", "f", "pack", "Bounds", "document", "toCodePoints", "fromCodePoint", "chars", "lookup", "i", "decode", "base64", "polyUint16Array", "polyUint32Array", "UTRIE2_SHIFT_2", "UTRIE2_SHIFT_1", "UTRIE2_INDEX_SHIFT", "UTRIE2_SHIFT_1_2", "UTRIE2_LSCP_INDEX_2_OFFSET", "UTRIE2_DATA_BLOCK_LENGTH", "UTRIE2_DATA_MASK", "UTRIE2_LSCP_INDEX_2_LENGTH", "UTRIE2_INDEX_2_BMP_LENGTH", "UTRIE2_UTF8_2B_INDEX_2_OFFSET", "UTRIE2_UTF8_2B_INDEX_2_LENGTH", "UTRIE2_INDEX_1_OFFSET", "UTRIE2_OMITTED_BMP_INDEX_1_LENGTH", "UTRIE2_INDEX_2_BLOCK_LENGTH", "UTRIE2_INDEX_2_MASK", "slice16", "slice32", "createTrieFromBase64", "Trie", "CR", "LF", "ZWJ", "RI", "BREAK_NOT_ALLOWED", "BREAK_ALLOWED", "UnicodeTrie", "SPACE", "lineBreak", "a", "Break", "Tokenizer", "Parser", "deg", "color", "colorType", "angle", "angleType", "position", "BACKGROUND_SIZE", "direction", "display", "float", "LINE_BREAK", "fontSize", "overflow", "textAlign", "textTransform", "transform", "visibility", "WORD_BREAK", "wordBreak", "quotes", "DEFAULT_VALUE", "CSSParsedDeclaration", "CSSParsedPseudoDeclaration", "CSSParsedCounterDeclaration", "ElementContainer", "duration", "loadSerializedSVG", "img", "TextBounds", "TextContainer", "ImageElementContainer", "CanvasElementContainer", "SVGElementContainer", "LIElementContainer", "OLElementContainer", "InputElementContainer", "SelectElementContainer", "TextareaElementContainer", "IFrameElementContainer", "childNode", "CounterState", "counterIncrement", "counterReset", "DocumentCloner", "css", "window", "value", "PseudoElementType", "CacheStorage", "Cache", "Vector", "BezierCurve", "BoundCurves", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "CORNER", "TransformEffect", "matrix", "ClipEffect", "OpacityEffect", "opacity", "StackingContext", "ElementPaint", "paddingBox", "createsStackingContext", "backgroundOrigin", "backgroundClip", "FontMetrics", "fontFamily", "Renderer", "CanvasRenderer", "letterSpacing", "fontVariant", "paintOrder", "text", "textShadow", "textDecorationLine", "image", "backgroundImage", "ForeignObjectRenderer", "Logger", "Context", "backgroundColor"]
+}
Index: imaps-frontend/node_modules/.vite/deps/index.es-7XNKQPVZ.js
===================================================================
--- imaps-frontend/node_modules/.vite/deps/index.es-7XNKQPVZ.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/index.es-7XNKQPVZ.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,10363 @@
+import {
+  _typeof
+} from "./chunk-D7ZASVPN.js";
+import {
+  __commonJS,
+  __toESM
+} from "./chunk-V4OQ3NZ2.js";
+
+// node_modules/core-js/internals/global-this.js
+var require_global_this = __commonJS({
+  "node_modules/core-js/internals/global-this.js"(exports, module) {
+    "use strict";
+    var check = function(it) {
+      return it && it.Math === Math && it;
+    };
+    module.exports = // eslint-disable-next-line es/no-global-this -- safe
+    check(typeof globalThis == "object" && globalThis) || check(typeof window == "object" && window) || // eslint-disable-next-line no-restricted-globals -- safe
+    check(typeof self == "object" && self) || check(typeof global == "object" && global) || check(typeof exports == "object" && exports) || // eslint-disable-next-line no-new-func -- fallback
+    /* @__PURE__ */ function() {
+      return this;
+    }() || Function("return this")();
+  }
+});
+
+// node_modules/core-js/internals/fails.js
+var require_fails = __commonJS({
+  "node_modules/core-js/internals/fails.js"(exports, module) {
+    "use strict";
+    module.exports = function(exec) {
+      try {
+        return !!exec();
+      } catch (error) {
+        return true;
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/descriptors.js
+var require_descriptors = __commonJS({
+  "node_modules/core-js/internals/descriptors.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    module.exports = !fails4(function() {
+      return Object.defineProperty({}, 1, { get: function() {
+        return 7;
+      } })[1] !== 7;
+    });
+  }
+});
+
+// node_modules/core-js/internals/function-bind-native.js
+var require_function_bind_native = __commonJS({
+  "node_modules/core-js/internals/function-bind-native.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    module.exports = !fails4(function() {
+      var test2 = (function() {
+      }).bind();
+      return typeof test2 != "function" || test2.hasOwnProperty("prototype");
+    });
+  }
+});
+
+// node_modules/core-js/internals/function-call.js
+var require_function_call = __commonJS({
+  "node_modules/core-js/internals/function-call.js"(exports, module) {
+    "use strict";
+    var NATIVE_BIND = require_function_bind_native();
+    var call4 = Function.prototype.call;
+    module.exports = NATIVE_BIND ? call4.bind(call4) : function() {
+      return call4.apply(call4, arguments);
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-property-is-enumerable.js
+var require_object_property_is_enumerable = __commonJS({
+  "node_modules/core-js/internals/object-property-is-enumerable.js"(exports) {
+    "use strict";
+    var $propertyIsEnumerable = {}.propertyIsEnumerable;
+    var getOwnPropertyDescriptor3 = Object.getOwnPropertyDescriptor;
+    var NASHORN_BUG = getOwnPropertyDescriptor3 && !$propertyIsEnumerable.call({ 1: 2 }, 1);
+    exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
+      var descriptor = getOwnPropertyDescriptor3(this, V);
+      return !!descriptor && descriptor.enumerable;
+    } : $propertyIsEnumerable;
+  }
+});
+
+// node_modules/core-js/internals/create-property-descriptor.js
+var require_create_property_descriptor = __commonJS({
+  "node_modules/core-js/internals/create-property-descriptor.js"(exports, module) {
+    "use strict";
+    module.exports = function(bitmap, value) {
+      return {
+        enumerable: !(bitmap & 1),
+        configurable: !(bitmap & 2),
+        writable: !(bitmap & 4),
+        value
+      };
+    };
+  }
+});
+
+// node_modules/core-js/internals/function-uncurry-this.js
+var require_function_uncurry_this = __commonJS({
+  "node_modules/core-js/internals/function-uncurry-this.js"(exports, module) {
+    "use strict";
+    var NATIVE_BIND = require_function_bind_native();
+    var FunctionPrototype = Function.prototype;
+    var call4 = FunctionPrototype.call;
+    var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call4, call4);
+    module.exports = NATIVE_BIND ? uncurryThisWithBind : function(fn) {
+      return function() {
+        return call4.apply(fn, arguments);
+      };
+    };
+  }
+});
+
+// node_modules/core-js/internals/classof-raw.js
+var require_classof_raw = __commonJS({
+  "node_modules/core-js/internals/classof-raw.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var toString7 = uncurryThis8({}.toString);
+    var stringSlice4 = uncurryThis8("".slice);
+    module.exports = function(it) {
+      return stringSlice4(toString7(it), 8, -1);
+    };
+  }
+});
+
+// node_modules/core-js/internals/indexed-object.js
+var require_indexed_object = __commonJS({
+  "node_modules/core-js/internals/indexed-object.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var fails4 = require_fails();
+    var classof = require_classof_raw();
+    var $Object = Object;
+    var split = uncurryThis8("".split);
+    module.exports = fails4(function() {
+      return !$Object("z").propertyIsEnumerable(0);
+    }) ? function(it) {
+      return classof(it) === "String" ? split(it, "") : $Object(it);
+    } : $Object;
+  }
+});
+
+// node_modules/core-js/internals/is-null-or-undefined.js
+var require_is_null_or_undefined = __commonJS({
+  "node_modules/core-js/internals/is-null-or-undefined.js"(exports, module) {
+    "use strict";
+    module.exports = function(it) {
+      return it === null || it === void 0;
+    };
+  }
+});
+
+// node_modules/core-js/internals/require-object-coercible.js
+var require_require_object_coercible = __commonJS({
+  "node_modules/core-js/internals/require-object-coercible.js"(exports, module) {
+    "use strict";
+    var isNullOrUndefined4 = require_is_null_or_undefined();
+    var $TypeError = TypeError;
+    module.exports = function(it) {
+      if (isNullOrUndefined4(it)) throw new $TypeError("Can't call method on " + it);
+      return it;
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-indexed-object.js
+var require_to_indexed_object = __commonJS({
+  "node_modules/core-js/internals/to-indexed-object.js"(exports, module) {
+    "use strict";
+    var IndexedObject = require_indexed_object();
+    var requireObjectCoercible7 = require_require_object_coercible();
+    module.exports = function(it) {
+      return IndexedObject(requireObjectCoercible7(it));
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-callable.js
+var require_is_callable = __commonJS({
+  "node_modules/core-js/internals/is-callable.js"(exports, module) {
+    "use strict";
+    var documentAll = typeof document == "object" && document.all;
+    module.exports = typeof documentAll == "undefined" && documentAll !== void 0 ? function(argument) {
+      return typeof argument == "function" || argument === documentAll;
+    } : function(argument) {
+      return typeof argument == "function";
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-object.js
+var require_is_object = __commonJS({
+  "node_modules/core-js/internals/is-object.js"(exports, module) {
+    "use strict";
+    var isCallable2 = require_is_callable();
+    module.exports = function(it) {
+      return typeof it == "object" ? it !== null : isCallable2(it);
+    };
+  }
+});
+
+// node_modules/core-js/internals/get-built-in.js
+var require_get_built_in = __commonJS({
+  "node_modules/core-js/internals/get-built-in.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var isCallable2 = require_is_callable();
+    var aFunction = function(argument) {
+      return isCallable2(argument) ? argument : void 0;
+    };
+    module.exports = function(namespace, method) {
+      return arguments.length < 2 ? aFunction(globalThis3[namespace]) : globalThis3[namespace] && globalThis3[namespace][method];
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-is-prototype-of.js
+var require_object_is_prototype_of = __commonJS({
+  "node_modules/core-js/internals/object-is-prototype-of.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    module.exports = uncurryThis8({}.isPrototypeOf);
+  }
+});
+
+// node_modules/core-js/internals/environment-user-agent.js
+var require_environment_user_agent = __commonJS({
+  "node_modules/core-js/internals/environment-user-agent.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var navigator = globalThis3.navigator;
+    var userAgent = navigator && navigator.userAgent;
+    module.exports = userAgent ? String(userAgent) : "";
+  }
+});
+
+// node_modules/core-js/internals/environment-v8-version.js
+var require_environment_v8_version = __commonJS({
+  "node_modules/core-js/internals/environment-v8-version.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var userAgent = require_environment_user_agent();
+    var process2 = globalThis3.process;
+    var Deno2 = globalThis3.Deno;
+    var versions = process2 && process2.versions || Deno2 && Deno2.version;
+    var v8 = versions && versions.v8;
+    var match;
+    var version;
+    if (v8) {
+      match = v8.split(".");
+      version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
+    }
+    if (!version && userAgent) {
+      match = userAgent.match(/Edge\/(\d+)/);
+      if (!match || match[1] >= 74) {
+        match = userAgent.match(/Chrome\/(\d+)/);
+        if (match) version = +match[1];
+      }
+    }
+    module.exports = version;
+  }
+});
+
+// node_modules/core-js/internals/symbol-constructor-detection.js
+var require_symbol_constructor_detection = __commonJS({
+  "node_modules/core-js/internals/symbol-constructor-detection.js"(exports, module) {
+    "use strict";
+    var V8_VERSION = require_environment_v8_version();
+    var fails4 = require_fails();
+    var globalThis3 = require_global_this();
+    var $String = globalThis3.String;
+    module.exports = !!Object.getOwnPropertySymbols && !fails4(function() {
+      var symbol = Symbol("symbol detection");
+      return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
+      !Symbol.sham && V8_VERSION && V8_VERSION < 41;
+    });
+  }
+});
+
+// node_modules/core-js/internals/use-symbol-as-uid.js
+var require_use_symbol_as_uid = __commonJS({
+  "node_modules/core-js/internals/use-symbol-as-uid.js"(exports, module) {
+    "use strict";
+    var NATIVE_SYMBOL = require_symbol_constructor_detection();
+    module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol";
+  }
+});
+
+// node_modules/core-js/internals/is-symbol.js
+var require_is_symbol = __commonJS({
+  "node_modules/core-js/internals/is-symbol.js"(exports, module) {
+    "use strict";
+    var getBuiltIn = require_get_built_in();
+    var isCallable2 = require_is_callable();
+    var isPrototypeOf = require_object_is_prototype_of();
+    var USE_SYMBOL_AS_UID = require_use_symbol_as_uid();
+    var $Object = Object;
+    module.exports = USE_SYMBOL_AS_UID ? function(it) {
+      return typeof it == "symbol";
+    } : function(it) {
+      var $Symbol = getBuiltIn("Symbol");
+      return isCallable2($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
+    };
+  }
+});
+
+// node_modules/core-js/internals/try-to-string.js
+var require_try_to_string = __commonJS({
+  "node_modules/core-js/internals/try-to-string.js"(exports, module) {
+    "use strict";
+    var $String = String;
+    module.exports = function(argument) {
+      try {
+        return $String(argument);
+      } catch (error) {
+        return "Object";
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/a-callable.js
+var require_a_callable = __commonJS({
+  "node_modules/core-js/internals/a-callable.js"(exports, module) {
+    "use strict";
+    var isCallable2 = require_is_callable();
+    var tryToString = require_try_to_string();
+    var $TypeError = TypeError;
+    module.exports = function(argument) {
+      if (isCallable2(argument)) return argument;
+      throw new $TypeError(tryToString(argument) + " is not a function");
+    };
+  }
+});
+
+// node_modules/core-js/internals/get-method.js
+var require_get_method = __commonJS({
+  "node_modules/core-js/internals/get-method.js"(exports, module) {
+    "use strict";
+    var aCallable = require_a_callable();
+    var isNullOrUndefined4 = require_is_null_or_undefined();
+    module.exports = function(V, P) {
+      var func = V[P];
+      return isNullOrUndefined4(func) ? void 0 : aCallable(func);
+    };
+  }
+});
+
+// node_modules/core-js/internals/ordinary-to-primitive.js
+var require_ordinary_to_primitive = __commonJS({
+  "node_modules/core-js/internals/ordinary-to-primitive.js"(exports, module) {
+    "use strict";
+    var call4 = require_function_call();
+    var isCallable2 = require_is_callable();
+    var isObject = require_is_object();
+    var $TypeError = TypeError;
+    module.exports = function(input, pref) {
+      var fn, val;
+      if (pref === "string" && isCallable2(fn = input.toString) && !isObject(val = call4(fn, input))) return val;
+      if (isCallable2(fn = input.valueOf) && !isObject(val = call4(fn, input))) return val;
+      if (pref !== "string" && isCallable2(fn = input.toString) && !isObject(val = call4(fn, input))) return val;
+      throw new $TypeError("Can't convert object to primitive value");
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-pure.js
+var require_is_pure = __commonJS({
+  "node_modules/core-js/internals/is-pure.js"(exports, module) {
+    "use strict";
+    module.exports = false;
+  }
+});
+
+// node_modules/core-js/internals/define-global-property.js
+var require_define_global_property = __commonJS({
+  "node_modules/core-js/internals/define-global-property.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var defineProperty = Object.defineProperty;
+    module.exports = function(key, value) {
+      try {
+        defineProperty(globalThis3, key, { value, configurable: true, writable: true });
+      } catch (error) {
+        globalThis3[key] = value;
+      }
+      return value;
+    };
+  }
+});
+
+// node_modules/core-js/internals/shared-store.js
+var require_shared_store = __commonJS({
+  "node_modules/core-js/internals/shared-store.js"(exports, module) {
+    "use strict";
+    var IS_PURE3 = require_is_pure();
+    var globalThis3 = require_global_this();
+    var defineGlobalProperty = require_define_global_property();
+    var SHARED = "__core-js_shared__";
+    var store = module.exports = globalThis3[SHARED] || defineGlobalProperty(SHARED, {});
+    (store.versions || (store.versions = [])).push({
+      version: "3.39.0",
+      mode: IS_PURE3 ? "pure" : "global",
+      copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)",
+      license: "https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",
+      source: "https://github.com/zloirock/core-js"
+    });
+  }
+});
+
+// node_modules/core-js/internals/shared.js
+var require_shared = __commonJS({
+  "node_modules/core-js/internals/shared.js"(exports, module) {
+    "use strict";
+    var store = require_shared_store();
+    module.exports = function(key, value) {
+      return store[key] || (store[key] = value || {});
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-object.js
+var require_to_object = __commonJS({
+  "node_modules/core-js/internals/to-object.js"(exports, module) {
+    "use strict";
+    var requireObjectCoercible7 = require_require_object_coercible();
+    var $Object = Object;
+    module.exports = function(argument) {
+      return $Object(requireObjectCoercible7(argument));
+    };
+  }
+});
+
+// node_modules/core-js/internals/has-own-property.js
+var require_has_own_property = __commonJS({
+  "node_modules/core-js/internals/has-own-property.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var toObject = require_to_object();
+    var hasOwnProperty = uncurryThis8({}.hasOwnProperty);
+    module.exports = Object.hasOwn || function hasOwn(it, key) {
+      return hasOwnProperty(toObject(it), key);
+    };
+  }
+});
+
+// node_modules/core-js/internals/uid.js
+var require_uid = __commonJS({
+  "node_modules/core-js/internals/uid.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var id = 0;
+    var postfix = Math.random();
+    var toString7 = uncurryThis8(1 .toString);
+    module.exports = function(key) {
+      return "Symbol(" + (key === void 0 ? "" : key) + ")_" + toString7(++id + postfix, 36);
+    };
+  }
+});
+
+// node_modules/core-js/internals/well-known-symbol.js
+var require_well_known_symbol = __commonJS({
+  "node_modules/core-js/internals/well-known-symbol.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var shared = require_shared();
+    var hasOwn = require_has_own_property();
+    var uid = require_uid();
+    var NATIVE_SYMBOL = require_symbol_constructor_detection();
+    var USE_SYMBOL_AS_UID = require_use_symbol_as_uid();
+    var Symbol2 = globalThis3.Symbol;
+    var WellKnownSymbolsStore = shared("wks");
+    var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2["for"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid;
+    module.exports = function(name) {
+      if (!hasOwn(WellKnownSymbolsStore, name)) {
+        WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol2, name) ? Symbol2[name] : createWellKnownSymbol("Symbol." + name);
+      }
+      return WellKnownSymbolsStore[name];
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-primitive.js
+var require_to_primitive = __commonJS({
+  "node_modules/core-js/internals/to-primitive.js"(exports, module) {
+    "use strict";
+    var call4 = require_function_call();
+    var isObject = require_is_object();
+    var isSymbol = require_is_symbol();
+    var getMethod4 = require_get_method();
+    var ordinaryToPrimitive = require_ordinary_to_primitive();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var $TypeError = TypeError;
+    var TO_PRIMITIVE = wellKnownSymbol3("toPrimitive");
+    module.exports = function(input, pref) {
+      if (!isObject(input) || isSymbol(input)) return input;
+      var exoticToPrim = getMethod4(input, TO_PRIMITIVE);
+      var result;
+      if (exoticToPrim) {
+        if (pref === void 0) pref = "default";
+        result = call4(exoticToPrim, input, pref);
+        if (!isObject(result) || isSymbol(result)) return result;
+        throw new $TypeError("Can't convert object to primitive value");
+      }
+      if (pref === void 0) pref = "number";
+      return ordinaryToPrimitive(input, pref);
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-property-key.js
+var require_to_property_key = __commonJS({
+  "node_modules/core-js/internals/to-property-key.js"(exports, module) {
+    "use strict";
+    var toPrimitive2 = require_to_primitive();
+    var isSymbol = require_is_symbol();
+    module.exports = function(argument) {
+      var key = toPrimitive2(argument, "string");
+      return isSymbol(key) ? key : key + "";
+    };
+  }
+});
+
+// node_modules/core-js/internals/document-create-element.js
+var require_document_create_element = __commonJS({
+  "node_modules/core-js/internals/document-create-element.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var isObject = require_is_object();
+    var document2 = globalThis3.document;
+    var EXISTS = isObject(document2) && isObject(document2.createElement);
+    module.exports = function(it) {
+      return EXISTS ? document2.createElement(it) : {};
+    };
+  }
+});
+
+// node_modules/core-js/internals/ie8-dom-define.js
+var require_ie8_dom_define = __commonJS({
+  "node_modules/core-js/internals/ie8-dom-define.js"(exports, module) {
+    "use strict";
+    var DESCRIPTORS = require_descriptors();
+    var fails4 = require_fails();
+    var createElement = require_document_create_element();
+    module.exports = !DESCRIPTORS && !fails4(function() {
+      return Object.defineProperty(createElement("div"), "a", {
+        get: function() {
+          return 7;
+        }
+      }).a !== 7;
+    });
+  }
+});
+
+// node_modules/core-js/internals/object-get-own-property-descriptor.js
+var require_object_get_own_property_descriptor = __commonJS({
+  "node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports) {
+    "use strict";
+    var DESCRIPTORS = require_descriptors();
+    var call4 = require_function_call();
+    var propertyIsEnumerableModule = require_object_property_is_enumerable();
+    var createPropertyDescriptor = require_create_property_descriptor();
+    var toIndexedObject = require_to_indexed_object();
+    var toPropertyKey2 = require_to_property_key();
+    var hasOwn = require_has_own_property();
+    var IE8_DOM_DEFINE = require_ie8_dom_define();
+    var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+    exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor3(O2, P) {
+      O2 = toIndexedObject(O2);
+      P = toPropertyKey2(P);
+      if (IE8_DOM_DEFINE) try {
+        return $getOwnPropertyDescriptor(O2, P);
+      } catch (error) {
+      }
+      if (hasOwn(O2, P)) return createPropertyDescriptor(!call4(propertyIsEnumerableModule.f, O2, P), O2[P]);
+    };
+  }
+});
+
+// node_modules/core-js/internals/v8-prototype-define-bug.js
+var require_v8_prototype_define_bug = __commonJS({
+  "node_modules/core-js/internals/v8-prototype-define-bug.js"(exports, module) {
+    "use strict";
+    var DESCRIPTORS = require_descriptors();
+    var fails4 = require_fails();
+    module.exports = DESCRIPTORS && fails4(function() {
+      return Object.defineProperty(function() {
+      }, "prototype", {
+        value: 42,
+        writable: false
+      }).prototype !== 42;
+    });
+  }
+});
+
+// node_modules/core-js/internals/an-object.js
+var require_an_object = __commonJS({
+  "node_modules/core-js/internals/an-object.js"(exports, module) {
+    "use strict";
+    var isObject = require_is_object();
+    var $String = String;
+    var $TypeError = TypeError;
+    module.exports = function(argument) {
+      if (isObject(argument)) return argument;
+      throw new $TypeError($String(argument) + " is not an object");
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-define-property.js
+var require_object_define_property = __commonJS({
+  "node_modules/core-js/internals/object-define-property.js"(exports) {
+    "use strict";
+    var DESCRIPTORS = require_descriptors();
+    var IE8_DOM_DEFINE = require_ie8_dom_define();
+    var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug();
+    var anObject5 = require_an_object();
+    var toPropertyKey2 = require_to_property_key();
+    var $TypeError = TypeError;
+    var $defineProperty = Object.defineProperty;
+    var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+    var ENUMERABLE = "enumerable";
+    var CONFIGURABLE = "configurable";
+    var WRITABLE = "writable";
+    exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O2, P, Attributes) {
+      anObject5(O2);
+      P = toPropertyKey2(P);
+      anObject5(Attributes);
+      if (typeof O2 === "function" && P === "prototype" && "value" in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
+        var current = $getOwnPropertyDescriptor(O2, P);
+        if (current && current[WRITABLE]) {
+          O2[P] = Attributes.value;
+          Attributes = {
+            configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
+            enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
+            writable: false
+          };
+        }
+      }
+      return $defineProperty(O2, P, Attributes);
+    } : $defineProperty : function defineProperty(O2, P, Attributes) {
+      anObject5(O2);
+      P = toPropertyKey2(P);
+      anObject5(Attributes);
+      if (IE8_DOM_DEFINE) try {
+        return $defineProperty(O2, P, Attributes);
+      } catch (error) {
+      }
+      if ("get" in Attributes || "set" in Attributes) throw new $TypeError("Accessors not supported");
+      if ("value" in Attributes) O2[P] = Attributes.value;
+      return O2;
+    };
+  }
+});
+
+// node_modules/core-js/internals/create-non-enumerable-property.js
+var require_create_non_enumerable_property = __commonJS({
+  "node_modules/core-js/internals/create-non-enumerable-property.js"(exports, module) {
+    "use strict";
+    var DESCRIPTORS = require_descriptors();
+    var definePropertyModule = require_object_define_property();
+    var createPropertyDescriptor = require_create_property_descriptor();
+    module.exports = DESCRIPTORS ? function(object, key, value) {
+      return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
+    } : function(object, key, value) {
+      object[key] = value;
+      return object;
+    };
+  }
+});
+
+// node_modules/core-js/internals/function-name.js
+var require_function_name = __commonJS({
+  "node_modules/core-js/internals/function-name.js"(exports, module) {
+    "use strict";
+    var DESCRIPTORS = require_descriptors();
+    var hasOwn = require_has_own_property();
+    var FunctionPrototype = Function.prototype;
+    var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
+    var EXISTS = hasOwn(FunctionPrototype, "name");
+    var PROPER = EXISTS && (function something() {
+    }).name === "something";
+    var CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, "name").configurable);
+    module.exports = {
+      EXISTS,
+      PROPER,
+      CONFIGURABLE
+    };
+  }
+});
+
+// node_modules/core-js/internals/inspect-source.js
+var require_inspect_source = __commonJS({
+  "node_modules/core-js/internals/inspect-source.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var isCallable2 = require_is_callable();
+    var store = require_shared_store();
+    var functionToString = uncurryThis8(Function.toString);
+    if (!isCallable2(store.inspectSource)) {
+      store.inspectSource = function(it) {
+        return functionToString(it);
+      };
+    }
+    module.exports = store.inspectSource;
+  }
+});
+
+// node_modules/core-js/internals/weak-map-basic-detection.js
+var require_weak_map_basic_detection = __commonJS({
+  "node_modules/core-js/internals/weak-map-basic-detection.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var isCallable2 = require_is_callable();
+    var WeakMap = globalThis3.WeakMap;
+    module.exports = isCallable2(WeakMap) && /native code/.test(String(WeakMap));
+  }
+});
+
+// node_modules/core-js/internals/shared-key.js
+var require_shared_key = __commonJS({
+  "node_modules/core-js/internals/shared-key.js"(exports, module) {
+    "use strict";
+    var shared = require_shared();
+    var uid = require_uid();
+    var keys = shared("keys");
+    module.exports = function(key) {
+      return keys[key] || (keys[key] = uid(key));
+    };
+  }
+});
+
+// node_modules/core-js/internals/hidden-keys.js
+var require_hidden_keys = __commonJS({
+  "node_modules/core-js/internals/hidden-keys.js"(exports, module) {
+    "use strict";
+    module.exports = {};
+  }
+});
+
+// node_modules/core-js/internals/internal-state.js
+var require_internal_state = __commonJS({
+  "node_modules/core-js/internals/internal-state.js"(exports, module) {
+    "use strict";
+    var NATIVE_WEAK_MAP = require_weak_map_basic_detection();
+    var globalThis3 = require_global_this();
+    var isObject = require_is_object();
+    var createNonEnumerableProperty2 = require_create_non_enumerable_property();
+    var hasOwn = require_has_own_property();
+    var shared = require_shared_store();
+    var sharedKey = require_shared_key();
+    var hiddenKeys = require_hidden_keys();
+    var OBJECT_ALREADY_INITIALIZED = "Object already initialized";
+    var TypeError2 = globalThis3.TypeError;
+    var WeakMap = globalThis3.WeakMap;
+    var set;
+    var get;
+    var has;
+    var enforce = function(it) {
+      return has(it) ? get(it) : set(it, {});
+    };
+    var getterFor = function(TYPE) {
+      return function(it) {
+        var state;
+        if (!isObject(it) || (state = get(it)).type !== TYPE) {
+          throw new TypeError2("Incompatible receiver, " + TYPE + " required");
+        }
+        return state;
+      };
+    };
+    if (NATIVE_WEAK_MAP || shared.state) {
+      store = shared.state || (shared.state = new WeakMap());
+      store.get = store.get;
+      store.has = store.has;
+      store.set = store.set;
+      set = function(it, metadata) {
+        if (store.has(it)) throw new TypeError2(OBJECT_ALREADY_INITIALIZED);
+        metadata.facade = it;
+        store.set(it, metadata);
+        return metadata;
+      };
+      get = function(it) {
+        return store.get(it) || {};
+      };
+      has = function(it) {
+        return store.has(it);
+      };
+    } else {
+      STATE = sharedKey("state");
+      hiddenKeys[STATE] = true;
+      set = function(it, metadata) {
+        if (hasOwn(it, STATE)) throw new TypeError2(OBJECT_ALREADY_INITIALIZED);
+        metadata.facade = it;
+        createNonEnumerableProperty2(it, STATE, metadata);
+        return metadata;
+      };
+      get = function(it) {
+        return hasOwn(it, STATE) ? it[STATE] : {};
+      };
+      has = function(it) {
+        return hasOwn(it, STATE);
+      };
+    }
+    var store;
+    var STATE;
+    module.exports = {
+      set,
+      get,
+      has,
+      enforce,
+      getterFor
+    };
+  }
+});
+
+// node_modules/core-js/internals/make-built-in.js
+var require_make_built_in = __commonJS({
+  "node_modules/core-js/internals/make-built-in.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var fails4 = require_fails();
+    var isCallable2 = require_is_callable();
+    var hasOwn = require_has_own_property();
+    var DESCRIPTORS = require_descriptors();
+    var CONFIGURABLE_FUNCTION_NAME = require_function_name().CONFIGURABLE;
+    var inspectSource = require_inspect_source();
+    var InternalStateModule = require_internal_state();
+    var enforceInternalState = InternalStateModule.enforce;
+    var getInternalState = InternalStateModule.get;
+    var $String = String;
+    var defineProperty = Object.defineProperty;
+    var stringSlice4 = uncurryThis8("".slice);
+    var replace = uncurryThis8("".replace);
+    var join = uncurryThis8([].join);
+    var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails4(function() {
+      return defineProperty(function() {
+      }, "length", { value: 8 }).length !== 8;
+    });
+    var TEMPLATE = String(String).split("String");
+    var makeBuiltIn = module.exports = function(value, name, options) {
+      if (stringSlice4($String(name), 0, 7) === "Symbol(") {
+        name = "[" + replace($String(name), /^Symbol\(([^)]*)\).*$/, "$1") + "]";
+      }
+      if (options && options.getter) name = "get " + name;
+      if (options && options.setter) name = "set " + name;
+      if (!hasOwn(value, "name") || CONFIGURABLE_FUNCTION_NAME && value.name !== name) {
+        if (DESCRIPTORS) defineProperty(value, "name", { value: name, configurable: true });
+        else value.name = name;
+      }
+      if (CONFIGURABLE_LENGTH && options && hasOwn(options, "arity") && value.length !== options.arity) {
+        defineProperty(value, "length", { value: options.arity });
+      }
+      try {
+        if (options && hasOwn(options, "constructor") && options.constructor) {
+          if (DESCRIPTORS) defineProperty(value, "prototype", { writable: false });
+        } else if (value.prototype) value.prototype = void 0;
+      } catch (error) {
+      }
+      var state = enforceInternalState(value);
+      if (!hasOwn(state, "source")) {
+        state.source = join(TEMPLATE, typeof name == "string" ? name : "");
+      }
+      return value;
+    };
+    Function.prototype.toString = makeBuiltIn(function toString7() {
+      return isCallable2(this) && getInternalState(this).source || inspectSource(this);
+    }, "toString");
+  }
+});
+
+// node_modules/core-js/internals/define-built-in.js
+var require_define_built_in = __commonJS({
+  "node_modules/core-js/internals/define-built-in.js"(exports, module) {
+    "use strict";
+    var isCallable2 = require_is_callable();
+    var definePropertyModule = require_object_define_property();
+    var makeBuiltIn = require_make_built_in();
+    var defineGlobalProperty = require_define_global_property();
+    module.exports = function(O2, key, value, options) {
+      if (!options) options = {};
+      var simple = options.enumerable;
+      var name = options.name !== void 0 ? options.name : key;
+      if (isCallable2(value)) makeBuiltIn(value, name, options);
+      if (options.global) {
+        if (simple) O2[key] = value;
+        else defineGlobalProperty(key, value);
+      } else {
+        try {
+          if (!options.unsafe) delete O2[key];
+          else if (O2[key]) simple = true;
+        } catch (error) {
+        }
+        if (simple) O2[key] = value;
+        else definePropertyModule.f(O2, key, {
+          value,
+          enumerable: false,
+          configurable: !options.nonConfigurable,
+          writable: !options.nonWritable
+        });
+      }
+      return O2;
+    };
+  }
+});
+
+// node_modules/core-js/internals/math-trunc.js
+var require_math_trunc = __commonJS({
+  "node_modules/core-js/internals/math-trunc.js"(exports, module) {
+    "use strict";
+    var ceil = Math.ceil;
+    var floor = Math.floor;
+    module.exports = Math.trunc || function trunc(x) {
+      var n2 = +x;
+      return (n2 > 0 ? floor : ceil)(n2);
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-integer-or-infinity.js
+var require_to_integer_or_infinity = __commonJS({
+  "node_modules/core-js/internals/to-integer-or-infinity.js"(exports, module) {
+    "use strict";
+    var trunc = require_math_trunc();
+    module.exports = function(argument) {
+      var number = +argument;
+      return number !== number || number === 0 ? 0 : trunc(number);
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-absolute-index.js
+var require_to_absolute_index = __commonJS({
+  "node_modules/core-js/internals/to-absolute-index.js"(exports, module) {
+    "use strict";
+    var toIntegerOrInfinity2 = require_to_integer_or_infinity();
+    var max2 = Math.max;
+    var min5 = Math.min;
+    module.exports = function(index2, length) {
+      var integer = toIntegerOrInfinity2(index2);
+      return integer < 0 ? max2(integer + length, 0) : min5(integer, length);
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-length.js
+var require_to_length = __commonJS({
+  "node_modules/core-js/internals/to-length.js"(exports, module) {
+    "use strict";
+    var toIntegerOrInfinity2 = require_to_integer_or_infinity();
+    var min5 = Math.min;
+    module.exports = function(argument) {
+      var len = toIntegerOrInfinity2(argument);
+      return len > 0 ? min5(len, 9007199254740991) : 0;
+    };
+  }
+});
+
+// node_modules/core-js/internals/length-of-array-like.js
+var require_length_of_array_like = __commonJS({
+  "node_modules/core-js/internals/length-of-array-like.js"(exports, module) {
+    "use strict";
+    var toLength6 = require_to_length();
+    module.exports = function(obj) {
+      return toLength6(obj.length);
+    };
+  }
+});
+
+// node_modules/core-js/internals/array-includes.js
+var require_array_includes = __commonJS({
+  "node_modules/core-js/internals/array-includes.js"(exports, module) {
+    "use strict";
+    var toIndexedObject = require_to_indexed_object();
+    var toAbsoluteIndex = require_to_absolute_index();
+    var lengthOfArrayLike = require_length_of_array_like();
+    var createMethod = function(IS_INCLUDES) {
+      return function($this, el, fromIndex) {
+        var O2 = toIndexedObject($this);
+        var length = lengthOfArrayLike(O2);
+        if (length === 0) return !IS_INCLUDES && -1;
+        var index2 = toAbsoluteIndex(fromIndex, length);
+        var value;
+        if (IS_INCLUDES && el !== el) while (length > index2) {
+          value = O2[index2++];
+          if (value !== value) return true;
+        }
+        else for (; length > index2; index2++) {
+          if ((IS_INCLUDES || index2 in O2) && O2[index2] === el) return IS_INCLUDES || index2 || 0;
+        }
+        return !IS_INCLUDES && -1;
+      };
+    };
+    module.exports = {
+      // `Array.prototype.includes` method
+      // https://tc39.es/ecma262/#sec-array.prototype.includes
+      includes: createMethod(true),
+      // `Array.prototype.indexOf` method
+      // https://tc39.es/ecma262/#sec-array.prototype.indexof
+      indexOf: createMethod(false)
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-keys-internal.js
+var require_object_keys_internal = __commonJS({
+  "node_modules/core-js/internals/object-keys-internal.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var hasOwn = require_has_own_property();
+    var toIndexedObject = require_to_indexed_object();
+    var indexOf2 = require_array_includes().indexOf;
+    var hiddenKeys = require_hidden_keys();
+    var push3 = uncurryThis8([].push);
+    module.exports = function(object, names) {
+      var O2 = toIndexedObject(object);
+      var i2 = 0;
+      var result = [];
+      var key;
+      for (key in O2) !hasOwn(hiddenKeys, key) && hasOwn(O2, key) && push3(result, key);
+      while (names.length > i2) if (hasOwn(O2, key = names[i2++])) {
+        ~indexOf2(result, key) || push3(result, key);
+      }
+      return result;
+    };
+  }
+});
+
+// node_modules/core-js/internals/enum-bug-keys.js
+var require_enum_bug_keys = __commonJS({
+  "node_modules/core-js/internals/enum-bug-keys.js"(exports, module) {
+    "use strict";
+    module.exports = [
+      "constructor",
+      "hasOwnProperty",
+      "isPrototypeOf",
+      "propertyIsEnumerable",
+      "toLocaleString",
+      "toString",
+      "valueOf"
+    ];
+  }
+});
+
+// node_modules/core-js/internals/object-get-own-property-names.js
+var require_object_get_own_property_names = __commonJS({
+  "node_modules/core-js/internals/object-get-own-property-names.js"(exports) {
+    "use strict";
+    var internalObjectKeys = require_object_keys_internal();
+    var enumBugKeys = require_enum_bug_keys();
+    var hiddenKeys = enumBugKeys.concat("length", "prototype");
+    exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O2) {
+      return internalObjectKeys(O2, hiddenKeys);
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-get-own-property-symbols.js
+var require_object_get_own_property_symbols = __commonJS({
+  "node_modules/core-js/internals/object-get-own-property-symbols.js"(exports) {
+    "use strict";
+    exports.f = Object.getOwnPropertySymbols;
+  }
+});
+
+// node_modules/core-js/internals/own-keys.js
+var require_own_keys = __commonJS({
+  "node_modules/core-js/internals/own-keys.js"(exports, module) {
+    "use strict";
+    var getBuiltIn = require_get_built_in();
+    var uncurryThis8 = require_function_uncurry_this();
+    var getOwnPropertyNamesModule = require_object_get_own_property_names();
+    var getOwnPropertySymbolsModule = require_object_get_own_property_symbols();
+    var anObject5 = require_an_object();
+    var concat2 = uncurryThis8([].concat);
+    module.exports = getBuiltIn("Reflect", "ownKeys") || function ownKeys2(it) {
+      var keys = getOwnPropertyNamesModule.f(anObject5(it));
+      var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+      return getOwnPropertySymbols ? concat2(keys, getOwnPropertySymbols(it)) : keys;
+    };
+  }
+});
+
+// node_modules/core-js/internals/copy-constructor-properties.js
+var require_copy_constructor_properties = __commonJS({
+  "node_modules/core-js/internals/copy-constructor-properties.js"(exports, module) {
+    "use strict";
+    var hasOwn = require_has_own_property();
+    var ownKeys2 = require_own_keys();
+    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
+    var definePropertyModule = require_object_define_property();
+    module.exports = function(target, source, exceptions) {
+      var keys = ownKeys2(source);
+      var defineProperty = definePropertyModule.f;
+      var getOwnPropertyDescriptor3 = getOwnPropertyDescriptorModule.f;
+      for (var i2 = 0; i2 < keys.length; i2++) {
+        var key = keys[i2];
+        if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
+          defineProperty(target, key, getOwnPropertyDescriptor3(source, key));
+        }
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-forced.js
+var require_is_forced = __commonJS({
+  "node_modules/core-js/internals/is-forced.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    var isCallable2 = require_is_callable();
+    var replacement = /#|\.prototype\./;
+    var isForced = function(feature, detection) {
+      var value = data[normalize(feature)];
+      return value === POLYFILL ? true : value === NATIVE ? false : isCallable2(detection) ? fails4(detection) : !!detection;
+    };
+    var normalize = isForced.normalize = function(string) {
+      return String(string).replace(replacement, ".").toLowerCase();
+    };
+    var data = isForced.data = {};
+    var NATIVE = isForced.NATIVE = "N";
+    var POLYFILL = isForced.POLYFILL = "P";
+    module.exports = isForced;
+  }
+});
+
+// node_modules/core-js/internals/export.js
+var require_export = __commonJS({
+  "node_modules/core-js/internals/export.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var getOwnPropertyDescriptor3 = require_object_get_own_property_descriptor().f;
+    var createNonEnumerableProperty2 = require_create_non_enumerable_property();
+    var defineBuiltIn2 = require_define_built_in();
+    var defineGlobalProperty = require_define_global_property();
+    var copyConstructorProperties = require_copy_constructor_properties();
+    var isForced = require_is_forced();
+    module.exports = function(options, source) {
+      var TARGET = options.target;
+      var GLOBAL = options.global;
+      var STATIC = options.stat;
+      var FORCED3, target, key, targetProperty, sourceProperty, descriptor;
+      if (GLOBAL) {
+        target = globalThis3;
+      } else if (STATIC) {
+        target = globalThis3[TARGET] || defineGlobalProperty(TARGET, {});
+      } else {
+        target = globalThis3[TARGET] && globalThis3[TARGET].prototype;
+      }
+      if (target) for (key in source) {
+        sourceProperty = source[key];
+        if (options.dontCallGetSet) {
+          descriptor = getOwnPropertyDescriptor3(target, key);
+          targetProperty = descriptor && descriptor.value;
+        } else targetProperty = target[key];
+        FORCED3 = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced);
+        if (!FORCED3 && targetProperty !== void 0) {
+          if (typeof sourceProperty == typeof targetProperty) continue;
+          copyConstructorProperties(sourceProperty, targetProperty);
+        }
+        if (options.sham || targetProperty && targetProperty.sham) {
+          createNonEnumerableProperty2(sourceProperty, "sham", true);
+        }
+        defineBuiltIn2(target, key, sourceProperty, options);
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/environment.js
+var require_environment = __commonJS({
+  "node_modules/core-js/internals/environment.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var userAgent = require_environment_user_agent();
+    var classof = require_classof_raw();
+    var userAgentStartsWith = function(string) {
+      return userAgent.slice(0, string.length) === string;
+    };
+    module.exports = function() {
+      if (userAgentStartsWith("Bun/")) return "BUN";
+      if (userAgentStartsWith("Cloudflare-Workers")) return "CLOUDFLARE";
+      if (userAgentStartsWith("Deno/")) return "DENO";
+      if (userAgentStartsWith("Node.js/")) return "NODE";
+      if (globalThis3.Bun && typeof Bun.version == "string") return "BUN";
+      if (globalThis3.Deno && typeof Deno.version == "object") return "DENO";
+      if (classof(globalThis3.process) === "process") return "NODE";
+      if (globalThis3.window && globalThis3.document) return "BROWSER";
+      return "REST";
+    }();
+  }
+});
+
+// node_modules/core-js/internals/environment-is-node.js
+var require_environment_is_node = __commonJS({
+  "node_modules/core-js/internals/environment-is-node.js"(exports, module) {
+    "use strict";
+    var ENVIRONMENT = require_environment();
+    module.exports = ENVIRONMENT === "NODE";
+  }
+});
+
+// node_modules/core-js/internals/function-uncurry-this-accessor.js
+var require_function_uncurry_this_accessor = __commonJS({
+  "node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var aCallable = require_a_callable();
+    module.exports = function(object, key, method) {
+      try {
+        return uncurryThis8(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
+      } catch (error) {
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-possible-prototype.js
+var require_is_possible_prototype = __commonJS({
+  "node_modules/core-js/internals/is-possible-prototype.js"(exports, module) {
+    "use strict";
+    var isObject = require_is_object();
+    module.exports = function(argument) {
+      return isObject(argument) || argument === null;
+    };
+  }
+});
+
+// node_modules/core-js/internals/a-possible-prototype.js
+var require_a_possible_prototype = __commonJS({
+  "node_modules/core-js/internals/a-possible-prototype.js"(exports, module) {
+    "use strict";
+    var isPossiblePrototype = require_is_possible_prototype();
+    var $String = String;
+    var $TypeError = TypeError;
+    module.exports = function(argument) {
+      if (isPossiblePrototype(argument)) return argument;
+      throw new $TypeError("Can't set " + $String(argument) + " as a prototype");
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-set-prototype-of.js
+var require_object_set_prototype_of = __commonJS({
+  "node_modules/core-js/internals/object-set-prototype-of.js"(exports, module) {
+    "use strict";
+    var uncurryThisAccessor = require_function_uncurry_this_accessor();
+    var isObject = require_is_object();
+    var requireObjectCoercible7 = require_require_object_coercible();
+    var aPossiblePrototype = require_a_possible_prototype();
+    module.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() {
+      var CORRECT_SETTER = false;
+      var test2 = {};
+      var setter;
+      try {
+        setter = uncurryThisAccessor(Object.prototype, "__proto__", "set");
+        setter(test2, []);
+        CORRECT_SETTER = test2 instanceof Array;
+      } catch (error) {
+      }
+      return function setPrototypeOf(O2, proto) {
+        requireObjectCoercible7(O2);
+        aPossiblePrototype(proto);
+        if (!isObject(O2)) return O2;
+        if (CORRECT_SETTER) setter(O2, proto);
+        else O2.__proto__ = proto;
+        return O2;
+      };
+    }() : void 0);
+  }
+});
+
+// node_modules/core-js/internals/set-to-string-tag.js
+var require_set_to_string_tag = __commonJS({
+  "node_modules/core-js/internals/set-to-string-tag.js"(exports, module) {
+    "use strict";
+    var defineProperty = require_object_define_property().f;
+    var hasOwn = require_has_own_property();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var TO_STRING_TAG = wellKnownSymbol3("toStringTag");
+    module.exports = function(target, TAG, STATIC) {
+      if (target && !STATIC) target = target.prototype;
+      if (target && !hasOwn(target, TO_STRING_TAG)) {
+        defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/define-built-in-accessor.js
+var require_define_built_in_accessor = __commonJS({
+  "node_modules/core-js/internals/define-built-in-accessor.js"(exports, module) {
+    "use strict";
+    var makeBuiltIn = require_make_built_in();
+    var defineProperty = require_object_define_property();
+    module.exports = function(target, name, descriptor) {
+      if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });
+      if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });
+      return defineProperty.f(target, name, descriptor);
+    };
+  }
+});
+
+// node_modules/core-js/internals/set-species.js
+var require_set_species = __commonJS({
+  "node_modules/core-js/internals/set-species.js"(exports, module) {
+    "use strict";
+    var getBuiltIn = require_get_built_in();
+    var defineBuiltInAccessor = require_define_built_in_accessor();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var DESCRIPTORS = require_descriptors();
+    var SPECIES = wellKnownSymbol3("species");
+    module.exports = function(CONSTRUCTOR_NAME) {
+      var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
+      if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
+        defineBuiltInAccessor(Constructor, SPECIES, {
+          configurable: true,
+          get: function() {
+            return this;
+          }
+        });
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/an-instance.js
+var require_an_instance = __commonJS({
+  "node_modules/core-js/internals/an-instance.js"(exports, module) {
+    "use strict";
+    var isPrototypeOf = require_object_is_prototype_of();
+    var $TypeError = TypeError;
+    module.exports = function(it, Prototype) {
+      if (isPrototypeOf(Prototype, it)) return it;
+      throw new $TypeError("Incorrect invocation");
+    };
+  }
+});
+
+// node_modules/core-js/internals/to-string-tag-support.js
+var require_to_string_tag_support = __commonJS({
+  "node_modules/core-js/internals/to-string-tag-support.js"(exports, module) {
+    "use strict";
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var TO_STRING_TAG = wellKnownSymbol3("toStringTag");
+    var test2 = {};
+    test2[TO_STRING_TAG] = "z";
+    module.exports = String(test2) === "[object z]";
+  }
+});
+
+// node_modules/core-js/internals/classof.js
+var require_classof = __commonJS({
+  "node_modules/core-js/internals/classof.js"(exports, module) {
+    "use strict";
+    var TO_STRING_TAG_SUPPORT = require_to_string_tag_support();
+    var isCallable2 = require_is_callable();
+    var classofRaw = require_classof_raw();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var TO_STRING_TAG = wellKnownSymbol3("toStringTag");
+    var $Object = Object;
+    var CORRECT_ARGUMENTS = classofRaw(/* @__PURE__ */ function() {
+      return arguments;
+    }()) === "Arguments";
+    var tryGet = function(it, key) {
+      try {
+        return it[key];
+      } catch (error) {
+      }
+    };
+    module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function(it) {
+      var O2, tag, result;
+      return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O2 = $Object(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O2) : (result = classofRaw(O2)) === "Object" && isCallable2(O2.callee) ? "Arguments" : result;
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-constructor.js
+var require_is_constructor = __commonJS({
+  "node_modules/core-js/internals/is-constructor.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var fails4 = require_fails();
+    var isCallable2 = require_is_callable();
+    var classof = require_classof();
+    var getBuiltIn = require_get_built_in();
+    var inspectSource = require_inspect_source();
+    var noop2 = function() {
+    };
+    var construct = getBuiltIn("Reflect", "construct");
+    var constructorRegExp = /^\s*(?:class|function)\b/;
+    var exec = uncurryThis8(constructorRegExp.exec);
+    var INCORRECT_TO_STRING = !constructorRegExp.test(noop2);
+    var isConstructorModern = function isConstructor(argument) {
+      if (!isCallable2(argument)) return false;
+      try {
+        construct(noop2, [], argument);
+        return true;
+      } catch (error) {
+        return false;
+      }
+    };
+    var isConstructorLegacy = function isConstructor(argument) {
+      if (!isCallable2(argument)) return false;
+      switch (classof(argument)) {
+        case "AsyncFunction":
+        case "GeneratorFunction":
+        case "AsyncGeneratorFunction":
+          return false;
+      }
+      try {
+        return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
+      } catch (error) {
+        return true;
+      }
+    };
+    isConstructorLegacy.sham = true;
+    module.exports = !construct || fails4(function() {
+      var called;
+      return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function() {
+        called = true;
+      }) || called;
+    }) ? isConstructorLegacy : isConstructorModern;
+  }
+});
+
+// node_modules/core-js/internals/a-constructor.js
+var require_a_constructor = __commonJS({
+  "node_modules/core-js/internals/a-constructor.js"(exports, module) {
+    "use strict";
+    var isConstructor = require_is_constructor();
+    var tryToString = require_try_to_string();
+    var $TypeError = TypeError;
+    module.exports = function(argument) {
+      if (isConstructor(argument)) return argument;
+      throw new $TypeError(tryToString(argument) + " is not a constructor");
+    };
+  }
+});
+
+// node_modules/core-js/internals/species-constructor.js
+var require_species_constructor = __commonJS({
+  "node_modules/core-js/internals/species-constructor.js"(exports, module) {
+    "use strict";
+    var anObject5 = require_an_object();
+    var aConstructor = require_a_constructor();
+    var isNullOrUndefined4 = require_is_null_or_undefined();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var SPECIES = wellKnownSymbol3("species");
+    module.exports = function(O2, defaultConstructor) {
+      var C = anObject5(O2).constructor;
+      var S;
+      return C === void 0 || isNullOrUndefined4(S = anObject5(C)[SPECIES]) ? defaultConstructor : aConstructor(S);
+    };
+  }
+});
+
+// node_modules/core-js/internals/function-apply.js
+var require_function_apply = __commonJS({
+  "node_modules/core-js/internals/function-apply.js"(exports, module) {
+    "use strict";
+    var NATIVE_BIND = require_function_bind_native();
+    var FunctionPrototype = Function.prototype;
+    var apply2 = FunctionPrototype.apply;
+    var call4 = FunctionPrototype.call;
+    module.exports = typeof Reflect == "object" && Reflect.apply || (NATIVE_BIND ? call4.bind(apply2) : function() {
+      return call4.apply(apply2, arguments);
+    });
+  }
+});
+
+// node_modules/core-js/internals/function-uncurry-this-clause.js
+var require_function_uncurry_this_clause = __commonJS({
+  "node_modules/core-js/internals/function-uncurry-this-clause.js"(exports, module) {
+    "use strict";
+    var classofRaw = require_classof_raw();
+    var uncurryThis8 = require_function_uncurry_this();
+    module.exports = function(fn) {
+      if (classofRaw(fn) === "Function") return uncurryThis8(fn);
+    };
+  }
+});
+
+// node_modules/core-js/internals/function-bind-context.js
+var require_function_bind_context = __commonJS({
+  "node_modules/core-js/internals/function-bind-context.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this_clause();
+    var aCallable = require_a_callable();
+    var NATIVE_BIND = require_function_bind_native();
+    var bind = uncurryThis8(uncurryThis8.bind);
+    module.exports = function(fn, that) {
+      aCallable(fn);
+      return that === void 0 ? fn : NATIVE_BIND ? bind(fn, that) : function() {
+        return fn.apply(that, arguments);
+      };
+    };
+  }
+});
+
+// node_modules/core-js/internals/html.js
+var require_html = __commonJS({
+  "node_modules/core-js/internals/html.js"(exports, module) {
+    "use strict";
+    var getBuiltIn = require_get_built_in();
+    module.exports = getBuiltIn("document", "documentElement");
+  }
+});
+
+// node_modules/core-js/internals/array-slice.js
+var require_array_slice = __commonJS({
+  "node_modules/core-js/internals/array-slice.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    module.exports = uncurryThis8([].slice);
+  }
+});
+
+// node_modules/core-js/internals/validate-arguments-length.js
+var require_validate_arguments_length = __commonJS({
+  "node_modules/core-js/internals/validate-arguments-length.js"(exports, module) {
+    "use strict";
+    var $TypeError = TypeError;
+    module.exports = function(passed, required) {
+      if (passed < required) throw new $TypeError("Not enough arguments");
+      return passed;
+    };
+  }
+});
+
+// node_modules/core-js/internals/environment-is-ios.js
+var require_environment_is_ios = __commonJS({
+  "node_modules/core-js/internals/environment-is-ios.js"(exports, module) {
+    "use strict";
+    var userAgent = require_environment_user_agent();
+    module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);
+  }
+});
+
+// node_modules/core-js/internals/task.js
+var require_task = __commonJS({
+  "node_modules/core-js/internals/task.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var apply2 = require_function_apply();
+    var bind = require_function_bind_context();
+    var isCallable2 = require_is_callable();
+    var hasOwn = require_has_own_property();
+    var fails4 = require_fails();
+    var html = require_html();
+    var arraySlice = require_array_slice();
+    var createElement = require_document_create_element();
+    var validateArgumentsLength = require_validate_arguments_length();
+    var IS_IOS = require_environment_is_ios();
+    var IS_NODE2 = require_environment_is_node();
+    var set = globalThis3.setImmediate;
+    var clear = globalThis3.clearImmediate;
+    var process2 = globalThis3.process;
+    var Dispatch = globalThis3.Dispatch;
+    var Function2 = globalThis3.Function;
+    var MessageChannel = globalThis3.MessageChannel;
+    var String2 = globalThis3.String;
+    var counter = 0;
+    var queue = {};
+    var ONREADYSTATECHANGE = "onreadystatechange";
+    var $location;
+    var defer;
+    var channel;
+    var port;
+    fails4(function() {
+      $location = globalThis3.location;
+    });
+    var run = function(id) {
+      if (hasOwn(queue, id)) {
+        var fn = queue[id];
+        delete queue[id];
+        fn();
+      }
+    };
+    var runner = function(id) {
+      return function() {
+        run(id);
+      };
+    };
+    var eventListener = function(event) {
+      run(event.data);
+    };
+    var globalPostMessageDefer = function(id) {
+      globalThis3.postMessage(String2(id), $location.protocol + "//" + $location.host);
+    };
+    if (!set || !clear) {
+      set = function setImmediate(handler) {
+        validateArgumentsLength(arguments.length, 1);
+        var fn = isCallable2(handler) ? handler : Function2(handler);
+        var args = arraySlice(arguments, 1);
+        queue[++counter] = function() {
+          apply2(fn, void 0, args);
+        };
+        defer(counter);
+        return counter;
+      };
+      clear = function clearImmediate(id) {
+        delete queue[id];
+      };
+      if (IS_NODE2) {
+        defer = function(id) {
+          process2.nextTick(runner(id));
+        };
+      } else if (Dispatch && Dispatch.now) {
+        defer = function(id) {
+          Dispatch.now(runner(id));
+        };
+      } else if (MessageChannel && !IS_IOS) {
+        channel = new MessageChannel();
+        port = channel.port2;
+        channel.port1.onmessage = eventListener;
+        defer = bind(port.postMessage, port);
+      } else if (globalThis3.addEventListener && isCallable2(globalThis3.postMessage) && !globalThis3.importScripts && $location && $location.protocol !== "file:" && !fails4(globalPostMessageDefer)) {
+        defer = globalPostMessageDefer;
+        globalThis3.addEventListener("message", eventListener, false);
+      } else if (ONREADYSTATECHANGE in createElement("script")) {
+        defer = function(id) {
+          html.appendChild(createElement("script"))[ONREADYSTATECHANGE] = function() {
+            html.removeChild(this);
+            run(id);
+          };
+        };
+      } else {
+        defer = function(id) {
+          setTimeout(runner(id), 0);
+        };
+      }
+    }
+    module.exports = {
+      set,
+      clear
+    };
+  }
+});
+
+// node_modules/core-js/internals/safe-get-built-in.js
+var require_safe_get_built_in = __commonJS({
+  "node_modules/core-js/internals/safe-get-built-in.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var DESCRIPTORS = require_descriptors();
+    var getOwnPropertyDescriptor3 = Object.getOwnPropertyDescriptor;
+    module.exports = function(name) {
+      if (!DESCRIPTORS) return globalThis3[name];
+      var descriptor = getOwnPropertyDescriptor3(globalThis3, name);
+      return descriptor && descriptor.value;
+    };
+  }
+});
+
+// node_modules/core-js/internals/queue.js
+var require_queue = __commonJS({
+  "node_modules/core-js/internals/queue.js"(exports, module) {
+    "use strict";
+    var Queue = function() {
+      this.head = null;
+      this.tail = null;
+    };
+    Queue.prototype = {
+      add: function(item) {
+        var entry = { item, next: null };
+        var tail = this.tail;
+        if (tail) tail.next = entry;
+        else this.head = entry;
+        this.tail = entry;
+      },
+      get: function() {
+        var entry = this.head;
+        if (entry) {
+          var next = this.head = entry.next;
+          if (next === null) this.tail = null;
+          return entry.item;
+        }
+      }
+    };
+    module.exports = Queue;
+  }
+});
+
+// node_modules/core-js/internals/environment-is-ios-pebble.js
+var require_environment_is_ios_pebble = __commonJS({
+  "node_modules/core-js/internals/environment-is-ios-pebble.js"(exports, module) {
+    "use strict";
+    var userAgent = require_environment_user_agent();
+    module.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != "undefined";
+  }
+});
+
+// node_modules/core-js/internals/environment-is-webos-webkit.js
+var require_environment_is_webos_webkit = __commonJS({
+  "node_modules/core-js/internals/environment-is-webos-webkit.js"(exports, module) {
+    "use strict";
+    var userAgent = require_environment_user_agent();
+    module.exports = /web0s(?!.*chrome)/i.test(userAgent);
+  }
+});
+
+// node_modules/core-js/internals/microtask.js
+var require_microtask = __commonJS({
+  "node_modules/core-js/internals/microtask.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var safeGetBuiltIn = require_safe_get_built_in();
+    var bind = require_function_bind_context();
+    var macrotask = require_task().set;
+    var Queue = require_queue();
+    var IS_IOS = require_environment_is_ios();
+    var IS_IOS_PEBBLE = require_environment_is_ios_pebble();
+    var IS_WEBOS_WEBKIT = require_environment_is_webos_webkit();
+    var IS_NODE2 = require_environment_is_node();
+    var MutationObserver = globalThis3.MutationObserver || globalThis3.WebKitMutationObserver;
+    var document2 = globalThis3.document;
+    var process2 = globalThis3.process;
+    var Promise2 = globalThis3.Promise;
+    var microtask = safeGetBuiltIn("queueMicrotask");
+    var notify;
+    var toggle;
+    var node2;
+    var promise;
+    var then;
+    if (!microtask) {
+      queue = new Queue();
+      flush = function() {
+        var parent, fn;
+        if (IS_NODE2 && (parent = process2.domain)) parent.exit();
+        while (fn = queue.get()) try {
+          fn();
+        } catch (error) {
+          if (queue.head) notify();
+          throw error;
+        }
+        if (parent) parent.enter();
+      };
+      if (!IS_IOS && !IS_NODE2 && !IS_WEBOS_WEBKIT && MutationObserver && document2) {
+        toggle = true;
+        node2 = document2.createTextNode("");
+        new MutationObserver(flush).observe(node2, { characterData: true });
+        notify = function() {
+          node2.data = toggle = !toggle;
+        };
+      } else if (!IS_IOS_PEBBLE && Promise2 && Promise2.resolve) {
+        promise = Promise2.resolve(void 0);
+        promise.constructor = Promise2;
+        then = bind(promise.then, promise);
+        notify = function() {
+          then(flush);
+        };
+      } else if (IS_NODE2) {
+        notify = function() {
+          process2.nextTick(flush);
+        };
+      } else {
+        macrotask = bind(macrotask, globalThis3);
+        notify = function() {
+          macrotask(flush);
+        };
+      }
+      microtask = function(fn) {
+        if (!queue.head) notify();
+        queue.add(fn);
+      };
+    }
+    var queue;
+    var flush;
+    module.exports = microtask;
+  }
+});
+
+// node_modules/core-js/internals/host-report-errors.js
+var require_host_report_errors = __commonJS({
+  "node_modules/core-js/internals/host-report-errors.js"(exports, module) {
+    "use strict";
+    module.exports = function(a2, b) {
+      try {
+        arguments.length === 1 ? console.error(a2) : console.error(a2, b);
+      } catch (error) {
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/perform.js
+var require_perform = __commonJS({
+  "node_modules/core-js/internals/perform.js"(exports, module) {
+    "use strict";
+    module.exports = function(exec) {
+      try {
+        return { error: false, value: exec() };
+      } catch (error) {
+        return { error: true, value: error };
+      }
+    };
+  }
+});
+
+// node_modules/core-js/internals/promise-native-constructor.js
+var require_promise_native_constructor = __commonJS({
+  "node_modules/core-js/internals/promise-native-constructor.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    module.exports = globalThis3.Promise;
+  }
+});
+
+// node_modules/core-js/internals/promise-constructor-detection.js
+var require_promise_constructor_detection = __commonJS({
+  "node_modules/core-js/internals/promise-constructor-detection.js"(exports, module) {
+    "use strict";
+    var globalThis3 = require_global_this();
+    var NativePromiseConstructor = require_promise_native_constructor();
+    var isCallable2 = require_is_callable();
+    var isForced = require_is_forced();
+    var inspectSource = require_inspect_source();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var ENVIRONMENT = require_environment();
+    var IS_PURE3 = require_is_pure();
+    var V8_VERSION = require_environment_v8_version();
+    var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
+    var SPECIES = wellKnownSymbol3("species");
+    var SUBCLASSING = false;
+    var NATIVE_PROMISE_REJECTION_EVENT = isCallable2(globalThis3.PromiseRejectionEvent);
+    var FORCED_PROMISE_CONSTRUCTOR = isForced("Promise", function() {
+      var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);
+      var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);
+      if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
+      if (IS_PURE3 && !(NativePromisePrototype["catch"] && NativePromisePrototype["finally"])) return true;
+      if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {
+        var promise = new NativePromiseConstructor(function(resolve) {
+          resolve(1);
+        });
+        var FakePromise = function(exec) {
+          exec(function() {
+          }, function() {
+          });
+        };
+        var constructor = promise.constructor = {};
+        constructor[SPECIES] = FakePromise;
+        SUBCLASSING = promise.then(function() {
+        }) instanceof FakePromise;
+        if (!SUBCLASSING) return true;
+      }
+      return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === "BROWSER" || ENVIRONMENT === "DENO") && !NATIVE_PROMISE_REJECTION_EVENT;
+    });
+    module.exports = {
+      CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,
+      REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,
+      SUBCLASSING
+    };
+  }
+});
+
+// node_modules/core-js/internals/new-promise-capability.js
+var require_new_promise_capability = __commonJS({
+  "node_modules/core-js/internals/new-promise-capability.js"(exports, module) {
+    "use strict";
+    var aCallable = require_a_callable();
+    var $TypeError = TypeError;
+    var PromiseCapability = function(C) {
+      var resolve, reject;
+      this.promise = new C(function($$resolve, $$reject) {
+        if (resolve !== void 0 || reject !== void 0) throw new $TypeError("Bad Promise constructor");
+        resolve = $$resolve;
+        reject = $$reject;
+      });
+      this.resolve = aCallable(resolve);
+      this.reject = aCallable(reject);
+    };
+    module.exports.f = function(C) {
+      return new PromiseCapability(C);
+    };
+  }
+});
+
+// node_modules/core-js/modules/es.promise.constructor.js
+var require_es_promise_constructor = __commonJS({
+  "node_modules/core-js/modules/es.promise.constructor.js"() {
+    "use strict";
+    var $8 = require_export();
+    var IS_PURE3 = require_is_pure();
+    var IS_NODE2 = require_environment_is_node();
+    var globalThis3 = require_global_this();
+    var call4 = require_function_call();
+    var defineBuiltIn2 = require_define_built_in();
+    var setPrototypeOf = require_object_set_prototype_of();
+    var setToStringTag2 = require_set_to_string_tag();
+    var setSpecies = require_set_species();
+    var aCallable = require_a_callable();
+    var isCallable2 = require_is_callable();
+    var isObject = require_is_object();
+    var anInstance = require_an_instance();
+    var speciesConstructor2 = require_species_constructor();
+    var task = require_task().set;
+    var microtask = require_microtask();
+    var hostReportErrors = require_host_report_errors();
+    var perform = require_perform();
+    var Queue = require_queue();
+    var InternalStateModule = require_internal_state();
+    var NativePromiseConstructor = require_promise_native_constructor();
+    var PromiseConstructorDetection = require_promise_constructor_detection();
+    var newPromiseCapabilityModule = require_new_promise_capability();
+    var PROMISE = "Promise";
+    var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;
+    var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;
+    var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;
+    var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
+    var setInternalState = InternalStateModule.set;
+    var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
+    var PromiseConstructor = NativePromiseConstructor;
+    var PromisePrototype = NativePromisePrototype;
+    var TypeError2 = globalThis3.TypeError;
+    var document2 = globalThis3.document;
+    var process2 = globalThis3.process;
+    var newPromiseCapability = newPromiseCapabilityModule.f;
+    var newGenericPromiseCapability = newPromiseCapability;
+    var DISPATCH_EVENT = !!(document2 && document2.createEvent && globalThis3.dispatchEvent);
+    var UNHANDLED_REJECTION = "unhandledrejection";
+    var REJECTION_HANDLED = "rejectionhandled";
+    var PENDING = 0;
+    var FULFILLED = 1;
+    var REJECTED = 2;
+    var HANDLED = 1;
+    var UNHANDLED = 2;
+    var Internal;
+    var OwnPromiseCapability;
+    var PromiseWrapper;
+    var nativeThen;
+    var isThenable = function(it) {
+      var then;
+      return isObject(it) && isCallable2(then = it.then) ? then : false;
+    };
+    var callReaction = function(reaction, state) {
+      var value = state.value;
+      var ok = state.state === FULFILLED;
+      var handler = ok ? reaction.ok : reaction.fail;
+      var resolve = reaction.resolve;
+      var reject = reaction.reject;
+      var domain = reaction.domain;
+      var result, then, exited;
+      try {
+        if (handler) {
+          if (!ok) {
+            if (state.rejection === UNHANDLED) onHandleUnhandled(state);
+            state.rejection = HANDLED;
+          }
+          if (handler === true) result = value;
+          else {
+            if (domain) domain.enter();
+            result = handler(value);
+            if (domain) {
+              domain.exit();
+              exited = true;
+            }
+          }
+          if (result === reaction.promise) {
+            reject(new TypeError2("Promise-chain cycle"));
+          } else if (then = isThenable(result)) {
+            call4(then, result, resolve, reject);
+          } else resolve(result);
+        } else reject(value);
+      } catch (error) {
+        if (domain && !exited) domain.exit();
+        reject(error);
+      }
+    };
+    var notify = function(state, isReject) {
+      if (state.notified) return;
+      state.notified = true;
+      microtask(function() {
+        var reactions = state.reactions;
+        var reaction;
+        while (reaction = reactions.get()) {
+          callReaction(reaction, state);
+        }
+        state.notified = false;
+        if (isReject && !state.rejection) onUnhandled(state);
+      });
+    };
+    var dispatchEvent = function(name, promise, reason) {
+      var event, handler;
+      if (DISPATCH_EVENT) {
+        event = document2.createEvent("Event");
+        event.promise = promise;
+        event.reason = reason;
+        event.initEvent(name, false, true);
+        globalThis3.dispatchEvent(event);
+      } else event = { promise, reason };
+      if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis3["on" + name])) handler(event);
+      else if (name === UNHANDLED_REJECTION) hostReportErrors("Unhandled promise rejection", reason);
+    };
+    var onUnhandled = function(state) {
+      call4(task, globalThis3, function() {
+        var promise = state.facade;
+        var value = state.value;
+        var IS_UNHANDLED = isUnhandled(state);
+        var result;
+        if (IS_UNHANDLED) {
+          result = perform(function() {
+            if (IS_NODE2) {
+              process2.emit("unhandledRejection", value, promise);
+            } else dispatchEvent(UNHANDLED_REJECTION, promise, value);
+          });
+          state.rejection = IS_NODE2 || isUnhandled(state) ? UNHANDLED : HANDLED;
+          if (result.error) throw result.value;
+        }
+      });
+    };
+    var isUnhandled = function(state) {
+      return state.rejection !== HANDLED && !state.parent;
+    };
+    var onHandleUnhandled = function(state) {
+      call4(task, globalThis3, function() {
+        var promise = state.facade;
+        if (IS_NODE2) {
+          process2.emit("rejectionHandled", promise);
+        } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
+      });
+    };
+    var bind = function(fn, state, unwrap) {
+      return function(value) {
+        fn(state, value, unwrap);
+      };
+    };
+    var internalReject = function(state, value, unwrap) {
+      if (state.done) return;
+      state.done = true;
+      if (unwrap) state = unwrap;
+      state.value = value;
+      state.state = REJECTED;
+      notify(state, true);
+    };
+    var internalResolve = function(state, value, unwrap) {
+      if (state.done) return;
+      state.done = true;
+      if (unwrap) state = unwrap;
+      try {
+        if (state.facade === value) throw new TypeError2("Promise can't be resolved itself");
+        var then = isThenable(value);
+        if (then) {
+          microtask(function() {
+            var wrapper = { done: false };
+            try {
+              call4(
+                then,
+                value,
+                bind(internalResolve, wrapper, state),
+                bind(internalReject, wrapper, state)
+              );
+            } catch (error) {
+              internalReject(wrapper, error, state);
+            }
+          });
+        } else {
+          state.value = value;
+          state.state = FULFILLED;
+          notify(state, false);
+        }
+      } catch (error) {
+        internalReject({ done: false }, error, state);
+      }
+    };
+    if (FORCED_PROMISE_CONSTRUCTOR) {
+      PromiseConstructor = function Promise2(executor) {
+        anInstance(this, PromisePrototype);
+        aCallable(executor);
+        call4(Internal, this);
+        var state = getInternalPromiseState(this);
+        try {
+          executor(bind(internalResolve, state), bind(internalReject, state));
+        } catch (error) {
+          internalReject(state, error);
+        }
+      };
+      PromisePrototype = PromiseConstructor.prototype;
+      Internal = function Promise2(executor) {
+        setInternalState(this, {
+          type: PROMISE,
+          done: false,
+          notified: false,
+          parent: false,
+          reactions: new Queue(),
+          rejection: false,
+          state: PENDING,
+          value: null
+        });
+      };
+      Internal.prototype = defineBuiltIn2(PromisePrototype, "then", function then(onFulfilled, onRejected) {
+        var state = getInternalPromiseState(this);
+        var reaction = newPromiseCapability(speciesConstructor2(this, PromiseConstructor));
+        state.parent = true;
+        reaction.ok = isCallable2(onFulfilled) ? onFulfilled : true;
+        reaction.fail = isCallable2(onRejected) && onRejected;
+        reaction.domain = IS_NODE2 ? process2.domain : void 0;
+        if (state.state === PENDING) state.reactions.add(reaction);
+        else microtask(function() {
+          callReaction(reaction, state);
+        });
+        return reaction.promise;
+      });
+      OwnPromiseCapability = function() {
+        var promise = new Internal();
+        var state = getInternalPromiseState(promise);
+        this.promise = promise;
+        this.resolve = bind(internalResolve, state);
+        this.reject = bind(internalReject, state);
+      };
+      newPromiseCapabilityModule.f = newPromiseCapability = function(C) {
+        return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
+      };
+      if (!IS_PURE3 && isCallable2(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {
+        nativeThen = NativePromisePrototype.then;
+        if (!NATIVE_PROMISE_SUBCLASSING) {
+          defineBuiltIn2(NativePromisePrototype, "then", function then(onFulfilled, onRejected) {
+            var that = this;
+            return new PromiseConstructor(function(resolve, reject) {
+              call4(nativeThen, that, resolve, reject);
+            }).then(onFulfilled, onRejected);
+          }, { unsafe: true });
+        }
+        try {
+          delete NativePromisePrototype.constructor;
+        } catch (error) {
+        }
+        if (setPrototypeOf) {
+          setPrototypeOf(NativePromisePrototype, PromisePrototype);
+        }
+      }
+    }
+    $8({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
+      Promise: PromiseConstructor
+    });
+    setToStringTag2(PromiseConstructor, PROMISE, false, true);
+    setSpecies(PROMISE);
+  }
+});
+
+// node_modules/core-js/internals/iterators.js
+var require_iterators = __commonJS({
+  "node_modules/core-js/internals/iterators.js"(exports, module) {
+    "use strict";
+    module.exports = {};
+  }
+});
+
+// node_modules/core-js/internals/is-array-iterator-method.js
+var require_is_array_iterator_method = __commonJS({
+  "node_modules/core-js/internals/is-array-iterator-method.js"(exports, module) {
+    "use strict";
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var Iterators = require_iterators();
+    var ITERATOR2 = wellKnownSymbol3("iterator");
+    var ArrayPrototype = Array.prototype;
+    module.exports = function(it) {
+      return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR2] === it);
+    };
+  }
+});
+
+// node_modules/core-js/internals/get-iterator-method.js
+var require_get_iterator_method = __commonJS({
+  "node_modules/core-js/internals/get-iterator-method.js"(exports, module) {
+    "use strict";
+    var classof = require_classof();
+    var getMethod4 = require_get_method();
+    var isNullOrUndefined4 = require_is_null_or_undefined();
+    var Iterators = require_iterators();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var ITERATOR2 = wellKnownSymbol3("iterator");
+    module.exports = function(it) {
+      if (!isNullOrUndefined4(it)) return getMethod4(it, ITERATOR2) || getMethod4(it, "@@iterator") || Iterators[classof(it)];
+    };
+  }
+});
+
+// node_modules/core-js/internals/get-iterator.js
+var require_get_iterator = __commonJS({
+  "node_modules/core-js/internals/get-iterator.js"(exports, module) {
+    "use strict";
+    var call4 = require_function_call();
+    var aCallable = require_a_callable();
+    var anObject5 = require_an_object();
+    var tryToString = require_try_to_string();
+    var getIteratorMethod = require_get_iterator_method();
+    var $TypeError = TypeError;
+    module.exports = function(argument, usingIterator) {
+      var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;
+      if (aCallable(iteratorMethod)) return anObject5(call4(iteratorMethod, argument));
+      throw new $TypeError(tryToString(argument) + " is not iterable");
+    };
+  }
+});
+
+// node_modules/core-js/internals/iterator-close.js
+var require_iterator_close = __commonJS({
+  "node_modules/core-js/internals/iterator-close.js"(exports, module) {
+    "use strict";
+    var call4 = require_function_call();
+    var anObject5 = require_an_object();
+    var getMethod4 = require_get_method();
+    module.exports = function(iterator, kind, value) {
+      var innerResult, innerError;
+      anObject5(iterator);
+      try {
+        innerResult = getMethod4(iterator, "return");
+        if (!innerResult) {
+          if (kind === "throw") throw value;
+          return value;
+        }
+        innerResult = call4(innerResult, iterator);
+      } catch (error) {
+        innerError = true;
+        innerResult = error;
+      }
+      if (kind === "throw") throw value;
+      if (innerError) throw innerResult;
+      anObject5(innerResult);
+      return value;
+    };
+  }
+});
+
+// node_modules/core-js/internals/iterate.js
+var require_iterate = __commonJS({
+  "node_modules/core-js/internals/iterate.js"(exports, module) {
+    "use strict";
+    var bind = require_function_bind_context();
+    var call4 = require_function_call();
+    var anObject5 = require_an_object();
+    var tryToString = require_try_to_string();
+    var isArrayIteratorMethod = require_is_array_iterator_method();
+    var lengthOfArrayLike = require_length_of_array_like();
+    var isPrototypeOf = require_object_is_prototype_of();
+    var getIterator = require_get_iterator();
+    var getIteratorMethod = require_get_iterator_method();
+    var iteratorClose = require_iterator_close();
+    var $TypeError = TypeError;
+    var Result = function(stopped, result) {
+      this.stopped = stopped;
+      this.result = result;
+    };
+    var ResultPrototype = Result.prototype;
+    module.exports = function(iterable, unboundFunction, options) {
+      var that = options && options.that;
+      var AS_ENTRIES = !!(options && options.AS_ENTRIES);
+      var IS_RECORD = !!(options && options.IS_RECORD);
+      var IS_ITERATOR = !!(options && options.IS_ITERATOR);
+      var INTERRUPTED = !!(options && options.INTERRUPTED);
+      var fn = bind(unboundFunction, that);
+      var iterator, iterFn, index2, length, result, next, step;
+      var stop = function(condition) {
+        if (iterator) iteratorClose(iterator, "normal", condition);
+        return new Result(true, condition);
+      };
+      var callFn = function(value) {
+        if (AS_ENTRIES) {
+          anObject5(value);
+          return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
+        }
+        return INTERRUPTED ? fn(value, stop) : fn(value);
+      };
+      if (IS_RECORD) {
+        iterator = iterable.iterator;
+      } else if (IS_ITERATOR) {
+        iterator = iterable;
+      } else {
+        iterFn = getIteratorMethod(iterable);
+        if (!iterFn) throw new $TypeError(tryToString(iterable) + " is not iterable");
+        if (isArrayIteratorMethod(iterFn)) {
+          for (index2 = 0, length = lengthOfArrayLike(iterable); length > index2; index2++) {
+            result = callFn(iterable[index2]);
+            if (result && isPrototypeOf(ResultPrototype, result)) return result;
+          }
+          return new Result(false);
+        }
+        iterator = getIterator(iterable, iterFn);
+      }
+      next = IS_RECORD ? iterable.next : iterator.next;
+      while (!(step = call4(next, iterator)).done) {
+        try {
+          result = callFn(step.value);
+        } catch (error) {
+          iteratorClose(iterator, "throw", error);
+        }
+        if (typeof result == "object" && result && isPrototypeOf(ResultPrototype, result)) return result;
+      }
+      return new Result(false);
+    };
+  }
+});
+
+// node_modules/core-js/internals/check-correctness-of-iteration.js
+var require_check_correctness_of_iteration = __commonJS({
+  "node_modules/core-js/internals/check-correctness-of-iteration.js"(exports, module) {
+    "use strict";
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var ITERATOR2 = wellKnownSymbol3("iterator");
+    var SAFE_CLOSING = false;
+    try {
+      called = 0;
+      iteratorWithReturn = {
+        next: function() {
+          return { done: !!called++ };
+        },
+        "return": function() {
+          SAFE_CLOSING = true;
+        }
+      };
+      iteratorWithReturn[ITERATOR2] = function() {
+        return this;
+      };
+      Array.from(iteratorWithReturn, function() {
+        throw 2;
+      });
+    } catch (error) {
+    }
+    var called;
+    var iteratorWithReturn;
+    module.exports = function(exec, SKIP_CLOSING) {
+      try {
+        if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
+      } catch (error) {
+        return false;
+      }
+      var ITERATION_SUPPORT = false;
+      try {
+        var object = {};
+        object[ITERATOR2] = function() {
+          return {
+            next: function() {
+              return { done: ITERATION_SUPPORT = true };
+            }
+          };
+        };
+        exec(object);
+      } catch (error) {
+      }
+      return ITERATION_SUPPORT;
+    };
+  }
+});
+
+// node_modules/core-js/internals/promise-statics-incorrect-iteration.js
+var require_promise_statics_incorrect_iteration = __commonJS({
+  "node_modules/core-js/internals/promise-statics-incorrect-iteration.js"(exports, module) {
+    "use strict";
+    var NativePromiseConstructor = require_promise_native_constructor();
+    var checkCorrectnessOfIteration = require_check_correctness_of_iteration();
+    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
+    module.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function(iterable) {
+      NativePromiseConstructor.all(iterable).then(void 0, function() {
+      });
+    });
+  }
+});
+
+// node_modules/core-js/modules/es.promise.all.js
+var require_es_promise_all = __commonJS({
+  "node_modules/core-js/modules/es.promise.all.js"() {
+    "use strict";
+    var $8 = require_export();
+    var call4 = require_function_call();
+    var aCallable = require_a_callable();
+    var newPromiseCapabilityModule = require_new_promise_capability();
+    var perform = require_perform();
+    var iterate = require_iterate();
+    var PROMISE_STATICS_INCORRECT_ITERATION = require_promise_statics_incorrect_iteration();
+    $8({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
+      all: function all(iterable) {
+        var C = this;
+        var capability = newPromiseCapabilityModule.f(C);
+        var resolve = capability.resolve;
+        var reject = capability.reject;
+        var result = perform(function() {
+          var $promiseResolve = aCallable(C.resolve);
+          var values = [];
+          var counter = 0;
+          var remaining = 1;
+          iterate(iterable, function(promise) {
+            var index2 = counter++;
+            var alreadyCalled = false;
+            remaining++;
+            call4($promiseResolve, C, promise).then(function(value) {
+              if (alreadyCalled) return;
+              alreadyCalled = true;
+              values[index2] = value;
+              --remaining || resolve(values);
+            }, reject);
+          });
+          --remaining || resolve(values);
+        });
+        if (result.error) reject(result.value);
+        return capability.promise;
+      }
+    });
+  }
+});
+
+// node_modules/core-js/modules/es.promise.catch.js
+var require_es_promise_catch = __commonJS({
+  "node_modules/core-js/modules/es.promise.catch.js"() {
+    "use strict";
+    var $8 = require_export();
+    var IS_PURE3 = require_is_pure();
+    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
+    var NativePromiseConstructor = require_promise_native_constructor();
+    var getBuiltIn = require_get_built_in();
+    var isCallable2 = require_is_callable();
+    var defineBuiltIn2 = require_define_built_in();
+    var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
+    $8({ target: "Promise", proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {
+      "catch": function(onRejected) {
+        return this.then(void 0, onRejected);
+      }
+    });
+    if (!IS_PURE3 && isCallable2(NativePromiseConstructor)) {
+      method = getBuiltIn("Promise").prototype["catch"];
+      if (NativePromisePrototype["catch"] !== method) {
+        defineBuiltIn2(NativePromisePrototype, "catch", method, { unsafe: true });
+      }
+    }
+    var method;
+  }
+});
+
+// node_modules/core-js/modules/es.promise.race.js
+var require_es_promise_race = __commonJS({
+  "node_modules/core-js/modules/es.promise.race.js"() {
+    "use strict";
+    var $8 = require_export();
+    var call4 = require_function_call();
+    var aCallable = require_a_callable();
+    var newPromiseCapabilityModule = require_new_promise_capability();
+    var perform = require_perform();
+    var iterate = require_iterate();
+    var PROMISE_STATICS_INCORRECT_ITERATION = require_promise_statics_incorrect_iteration();
+    $8({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
+      race: function race(iterable) {
+        var C = this;
+        var capability = newPromiseCapabilityModule.f(C);
+        var reject = capability.reject;
+        var result = perform(function() {
+          var $promiseResolve = aCallable(C.resolve);
+          iterate(iterable, function(promise) {
+            call4($promiseResolve, C, promise).then(capability.resolve, reject);
+          });
+        });
+        if (result.error) reject(result.value);
+        return capability.promise;
+      }
+    });
+  }
+});
+
+// node_modules/core-js/modules/es.promise.reject.js
+var require_es_promise_reject = __commonJS({
+  "node_modules/core-js/modules/es.promise.reject.js"() {
+    "use strict";
+    var $8 = require_export();
+    var newPromiseCapabilityModule = require_new_promise_capability();
+    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
+    $8({ target: "Promise", stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
+      reject: function reject(r2) {
+        var capability = newPromiseCapabilityModule.f(this);
+        var capabilityReject = capability.reject;
+        capabilityReject(r2);
+        return capability.promise;
+      }
+    });
+  }
+});
+
+// node_modules/core-js/internals/promise-resolve.js
+var require_promise_resolve = __commonJS({
+  "node_modules/core-js/internals/promise-resolve.js"(exports, module) {
+    "use strict";
+    var anObject5 = require_an_object();
+    var isObject = require_is_object();
+    var newPromiseCapability = require_new_promise_capability();
+    module.exports = function(C, x) {
+      anObject5(C);
+      if (isObject(x) && x.constructor === C) return x;
+      var promiseCapability = newPromiseCapability.f(C);
+      var resolve = promiseCapability.resolve;
+      resolve(x);
+      return promiseCapability.promise;
+    };
+  }
+});
+
+// node_modules/core-js/modules/es.promise.resolve.js
+var require_es_promise_resolve = __commonJS({
+  "node_modules/core-js/modules/es.promise.resolve.js"() {
+    "use strict";
+    var $8 = require_export();
+    var getBuiltIn = require_get_built_in();
+    var IS_PURE3 = require_is_pure();
+    var NativePromiseConstructor = require_promise_native_constructor();
+    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
+    var promiseResolve = require_promise_resolve();
+    var PromiseConstructorWrapper = getBuiltIn("Promise");
+    var CHECK_WRAPPER = IS_PURE3 && !FORCED_PROMISE_CONSTRUCTOR;
+    $8({ target: "Promise", stat: true, forced: IS_PURE3 || FORCED_PROMISE_CONSTRUCTOR }, {
+      resolve: function resolve(x) {
+        return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);
+      }
+    });
+  }
+});
+
+// node_modules/core-js/internals/to-string.js
+var require_to_string = __commonJS({
+  "node_modules/core-js/internals/to-string.js"(exports, module) {
+    "use strict";
+    var classof = require_classof();
+    var $String = String;
+    module.exports = function(argument) {
+      if (classof(argument) === "Symbol") throw new TypeError("Cannot convert a Symbol value to a string");
+      return $String(argument);
+    };
+  }
+});
+
+// node_modules/core-js/internals/regexp-flags.js
+var require_regexp_flags = __commonJS({
+  "node_modules/core-js/internals/regexp-flags.js"(exports, module) {
+    "use strict";
+    var anObject5 = require_an_object();
+    module.exports = function() {
+      var that = anObject5(this);
+      var result = "";
+      if (that.hasIndices) result += "d";
+      if (that.global) result += "g";
+      if (that.ignoreCase) result += "i";
+      if (that.multiline) result += "m";
+      if (that.dotAll) result += "s";
+      if (that.unicode) result += "u";
+      if (that.unicodeSets) result += "v";
+      if (that.sticky) result += "y";
+      return result;
+    };
+  }
+});
+
+// node_modules/core-js/internals/regexp-sticky-helpers.js
+var require_regexp_sticky_helpers = __commonJS({
+  "node_modules/core-js/internals/regexp-sticky-helpers.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    var globalThis3 = require_global_this();
+    var $RegExp = globalThis3.RegExp;
+    var UNSUPPORTED_Y2 = fails4(function() {
+      var re = $RegExp("a", "y");
+      re.lastIndex = 2;
+      return re.exec("abcd") !== null;
+    });
+    var MISSED_STICKY = UNSUPPORTED_Y2 || fails4(function() {
+      return !$RegExp("a", "y").sticky;
+    });
+    var BROKEN_CARET = UNSUPPORTED_Y2 || fails4(function() {
+      var re = $RegExp("^r", "gy");
+      re.lastIndex = 2;
+      return re.exec("str") !== null;
+    });
+    module.exports = {
+      BROKEN_CARET,
+      MISSED_STICKY,
+      UNSUPPORTED_Y: UNSUPPORTED_Y2
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-keys.js
+var require_object_keys = __commonJS({
+  "node_modules/core-js/internals/object-keys.js"(exports, module) {
+    "use strict";
+    var internalObjectKeys = require_object_keys_internal();
+    var enumBugKeys = require_enum_bug_keys();
+    module.exports = Object.keys || function keys(O2) {
+      return internalObjectKeys(O2, enumBugKeys);
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-define-properties.js
+var require_object_define_properties = __commonJS({
+  "node_modules/core-js/internals/object-define-properties.js"(exports) {
+    "use strict";
+    var DESCRIPTORS = require_descriptors();
+    var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug();
+    var definePropertyModule = require_object_define_property();
+    var anObject5 = require_an_object();
+    var toIndexedObject = require_to_indexed_object();
+    var objectKeys = require_object_keys();
+    exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O2, Properties) {
+      anObject5(O2);
+      var props = toIndexedObject(Properties);
+      var keys = objectKeys(Properties);
+      var length = keys.length;
+      var index2 = 0;
+      var key;
+      while (length > index2) definePropertyModule.f(O2, key = keys[index2++], props[key]);
+      return O2;
+    };
+  }
+});
+
+// node_modules/core-js/internals/object-create.js
+var require_object_create = __commonJS({
+  "node_modules/core-js/internals/object-create.js"(exports, module) {
+    "use strict";
+    var anObject5 = require_an_object();
+    var definePropertiesModule = require_object_define_properties();
+    var enumBugKeys = require_enum_bug_keys();
+    var hiddenKeys = require_hidden_keys();
+    var html = require_html();
+    var documentCreateElement = require_document_create_element();
+    var sharedKey = require_shared_key();
+    var GT = ">";
+    var LT = "<";
+    var PROTOTYPE = "prototype";
+    var SCRIPT = "script";
+    var IE_PROTO = sharedKey("IE_PROTO");
+    var EmptyConstructor = function() {
+    };
+    var scriptTag = function(content) {
+      return LT + SCRIPT + GT + content + LT + "/" + SCRIPT + GT;
+    };
+    var NullProtoObjectViaActiveX = function(activeXDocument2) {
+      activeXDocument2.write(scriptTag(""));
+      activeXDocument2.close();
+      var temp = activeXDocument2.parentWindow.Object;
+      activeXDocument2 = null;
+      return temp;
+    };
+    var NullProtoObjectViaIFrame = function() {
+      var iframe = documentCreateElement("iframe");
+      var JS = "java" + SCRIPT + ":";
+      var iframeDocument;
+      iframe.style.display = "none";
+      html.appendChild(iframe);
+      iframe.src = String(JS);
+      iframeDocument = iframe.contentWindow.document;
+      iframeDocument.open();
+      iframeDocument.write(scriptTag("document.F=Object"));
+      iframeDocument.close();
+      return iframeDocument.F;
+    };
+    var activeXDocument;
+    var NullProtoObject = function() {
+      try {
+        activeXDocument = new ActiveXObject("htmlfile");
+      } catch (error) {
+      }
+      NullProtoObject = typeof document != "undefined" ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument);
+      var length = enumBugKeys.length;
+      while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
+      return NullProtoObject();
+    };
+    hiddenKeys[IE_PROTO] = true;
+    module.exports = Object.create || function create(O2, Properties) {
+      var result;
+      if (O2 !== null) {
+        EmptyConstructor[PROTOTYPE] = anObject5(O2);
+        result = new EmptyConstructor();
+        EmptyConstructor[PROTOTYPE] = null;
+        result[IE_PROTO] = O2;
+      } else result = NullProtoObject();
+      return Properties === void 0 ? result : definePropertiesModule.f(result, Properties);
+    };
+  }
+});
+
+// node_modules/core-js/internals/regexp-unsupported-dot-all.js
+var require_regexp_unsupported_dot_all = __commonJS({
+  "node_modules/core-js/internals/regexp-unsupported-dot-all.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    var globalThis3 = require_global_this();
+    var $RegExp = globalThis3.RegExp;
+    module.exports = fails4(function() {
+      var re = $RegExp(".", "s");
+      return !(re.dotAll && re.test("\n") && re.flags === "s");
+    });
+  }
+});
+
+// node_modules/core-js/internals/regexp-unsupported-ncg.js
+var require_regexp_unsupported_ncg = __commonJS({
+  "node_modules/core-js/internals/regexp-unsupported-ncg.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    var globalThis3 = require_global_this();
+    var $RegExp = globalThis3.RegExp;
+    module.exports = fails4(function() {
+      var re = $RegExp("(?<a>b)", "g");
+      return re.exec("b").groups.a !== "b" || "b".replace(re, "$<a>c") !== "bc";
+    });
+  }
+});
+
+// node_modules/core-js/internals/regexp-exec.js
+var require_regexp_exec = __commonJS({
+  "node_modules/core-js/internals/regexp-exec.js"(exports, module) {
+    "use strict";
+    var call4 = require_function_call();
+    var uncurryThis8 = require_function_uncurry_this();
+    var toString7 = require_to_string();
+    var regexpFlags = require_regexp_flags();
+    var stickyHelpers2 = require_regexp_sticky_helpers();
+    var shared = require_shared();
+    var create = require_object_create();
+    var getInternalState = require_internal_state().get;
+    var UNSUPPORTED_DOT_ALL = require_regexp_unsupported_dot_all();
+    var UNSUPPORTED_NCG = require_regexp_unsupported_ncg();
+    var nativeReplace = shared("native-string-replace", String.prototype.replace);
+    var nativeExec = RegExp.prototype.exec;
+    var patchedExec = nativeExec;
+    var charAt = uncurryThis8("".charAt);
+    var indexOf2 = uncurryThis8("".indexOf);
+    var replace = uncurryThis8("".replace);
+    var stringSlice4 = uncurryThis8("".slice);
+    var UPDATES_LAST_INDEX_WRONG = function() {
+      var re1 = /a/;
+      var re2 = /b*/g;
+      call4(nativeExec, re1, "a");
+      call4(nativeExec, re2, "a");
+      return re1.lastIndex !== 0 || re2.lastIndex !== 0;
+    }();
+    var UNSUPPORTED_Y2 = stickyHelpers2.BROKEN_CARET;
+    var NPCG_INCLUDED = /()??/.exec("")[1] !== void 0;
+    var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y2 || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
+    if (PATCH) {
+      patchedExec = function exec(string) {
+        var re = this;
+        var state = getInternalState(re);
+        var str = toString7(string);
+        var raw = state.raw;
+        var result, reCopy, lastIndex, match, i2, object, group;
+        if (raw) {
+          raw.lastIndex = re.lastIndex;
+          result = call4(patchedExec, raw, str);
+          re.lastIndex = raw.lastIndex;
+          return result;
+        }
+        var groups = state.groups;
+        var sticky = UNSUPPORTED_Y2 && re.sticky;
+        var flags = call4(regexpFlags, re);
+        var source = re.source;
+        var charsAdded = 0;
+        var strCopy = str;
+        if (sticky) {
+          flags = replace(flags, "y", "");
+          if (indexOf2(flags, "g") === -1) {
+            flags += "g";
+          }
+          strCopy = stringSlice4(str, re.lastIndex);
+          if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== "\n")) {
+            source = "(?: " + source + ")";
+            strCopy = " " + strCopy;
+            charsAdded++;
+          }
+          reCopy = new RegExp("^(?:" + source + ")", flags);
+        }
+        if (NPCG_INCLUDED) {
+          reCopy = new RegExp("^" + source + "$(?!\\s)", flags);
+        }
+        if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
+        match = call4(nativeExec, sticky ? reCopy : re, strCopy);
+        if (sticky) {
+          if (match) {
+            match.input = stringSlice4(match.input, charsAdded);
+            match[0] = stringSlice4(match[0], charsAdded);
+            match.index = re.lastIndex;
+            re.lastIndex += match[0].length;
+          } else re.lastIndex = 0;
+        } else if (UPDATES_LAST_INDEX_WRONG && match) {
+          re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
+        }
+        if (NPCG_INCLUDED && match && match.length > 1) {
+          call4(nativeReplace, match[0], reCopy, function() {
+            for (i2 = 1; i2 < arguments.length - 2; i2++) {
+              if (arguments[i2] === void 0) match[i2] = void 0;
+            }
+          });
+        }
+        if (match && groups) {
+          match.groups = object = create(null);
+          for (i2 = 0; i2 < groups.length; i2++) {
+            group = groups[i2];
+            object[group[0]] = match[group[1]];
+          }
+        }
+        return match;
+      };
+    }
+    module.exports = patchedExec;
+  }
+});
+
+// node_modules/core-js/modules/es.regexp.exec.js
+var require_es_regexp_exec = __commonJS({
+  "node_modules/core-js/modules/es.regexp.exec.js"() {
+    "use strict";
+    var $8 = require_export();
+    var exec = require_regexp_exec();
+    $8({ target: "RegExp", proto: true, forced: /./.exec !== exec }, {
+      exec
+    });
+  }
+});
+
+// node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js
+var require_fix_regexp_well_known_symbol_logic = __commonJS({
+  "node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"(exports, module) {
+    "use strict";
+    require_es_regexp_exec();
+    var call4 = require_function_call();
+    var defineBuiltIn2 = require_define_built_in();
+    var regexpExec = require_regexp_exec();
+    var fails4 = require_fails();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var createNonEnumerableProperty2 = require_create_non_enumerable_property();
+    var SPECIES = wellKnownSymbol3("species");
+    var RegExpPrototype2 = RegExp.prototype;
+    module.exports = function(KEY, exec, FORCED3, SHAM) {
+      var SYMBOL = wellKnownSymbol3(KEY);
+      var DELEGATES_TO_SYMBOL = !fails4(function() {
+        var O2 = {};
+        O2[SYMBOL] = function() {
+          return 7;
+        };
+        return ""[KEY](O2) !== 7;
+      });
+      var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails4(function() {
+        var execCalled = false;
+        var re = /a/;
+        if (KEY === "split") {
+          re = {};
+          re.constructor = {};
+          re.constructor[SPECIES] = function() {
+            return re;
+          };
+          re.flags = "";
+          re[SYMBOL] = /./[SYMBOL];
+        }
+        re.exec = function() {
+          execCalled = true;
+          return null;
+        };
+        re[SYMBOL]("");
+        return !execCalled;
+      });
+      if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || FORCED3) {
+        var nativeRegExpMethod = /./[SYMBOL];
+        var methods = exec(SYMBOL, ""[KEY], function(nativeMethod, regexp, str, arg2, forceStringMethod) {
+          var $exec = regexp.exec;
+          if ($exec === regexpExec || $exec === RegExpPrototype2.exec) {
+            if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
+              return { done: true, value: call4(nativeRegExpMethod, regexp, str, arg2) };
+            }
+            return { done: true, value: call4(nativeMethod, str, regexp, arg2) };
+          }
+          return { done: false };
+        });
+        defineBuiltIn2(String.prototype, KEY, methods[0]);
+        defineBuiltIn2(RegExpPrototype2, SYMBOL, methods[1]);
+      }
+      if (SHAM) createNonEnumerableProperty2(RegExpPrototype2[SYMBOL], "sham", true);
+    };
+  }
+});
+
+// node_modules/core-js/internals/string-multibyte.js
+var require_string_multibyte = __commonJS({
+  "node_modules/core-js/internals/string-multibyte.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var toIntegerOrInfinity2 = require_to_integer_or_infinity();
+    var toString7 = require_to_string();
+    var requireObjectCoercible7 = require_require_object_coercible();
+    var charAt = uncurryThis8("".charAt);
+    var charCodeAt = uncurryThis8("".charCodeAt);
+    var stringSlice4 = uncurryThis8("".slice);
+    var createMethod = function(CONVERT_TO_STRING) {
+      return function($this, pos) {
+        var S = toString7(requireObjectCoercible7($this));
+        var position = toIntegerOrInfinity2(pos);
+        var size = S.length;
+        var first, second;
+        if (position < 0 || position >= size) return CONVERT_TO_STRING ? "" : void 0;
+        first = charCodeAt(S, position);
+        return first < 55296 || first > 56319 || position + 1 === size || (second = charCodeAt(S, position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? charAt(S, position) : first : CONVERT_TO_STRING ? stringSlice4(S, position, position + 2) : (first - 55296 << 10) + (second - 56320) + 65536;
+      };
+    };
+    module.exports = {
+      // `String.prototype.codePointAt` method
+      // https://tc39.es/ecma262/#sec-string.prototype.codepointat
+      codeAt: createMethod(false),
+      // `String.prototype.at` method
+      // https://github.com/mathiasbynens/String.prototype.at
+      charAt: createMethod(true)
+    };
+  }
+});
+
+// node_modules/core-js/internals/advance-string-index.js
+var require_advance_string_index = __commonJS({
+  "node_modules/core-js/internals/advance-string-index.js"(exports, module) {
+    "use strict";
+    var charAt = require_string_multibyte().charAt;
+    module.exports = function(S, index2, unicode) {
+      return index2 + (unicode ? charAt(S, index2).length : 1);
+    };
+  }
+});
+
+// node_modules/core-js/internals/regexp-exec-abstract.js
+var require_regexp_exec_abstract = __commonJS({
+  "node_modules/core-js/internals/regexp-exec-abstract.js"(exports, module) {
+    "use strict";
+    var call4 = require_function_call();
+    var anObject5 = require_an_object();
+    var isCallable2 = require_is_callable();
+    var classof = require_classof_raw();
+    var regexpExec = require_regexp_exec();
+    var $TypeError = TypeError;
+    module.exports = function(R, S) {
+      var exec = R.exec;
+      if (isCallable2(exec)) {
+        var result = call4(exec, R, S);
+        if (result !== null) anObject5(result);
+        return result;
+      }
+      if (classof(R) === "RegExp") return call4(regexpExec, R, S);
+      throw new $TypeError("RegExp#exec called on incompatible receiver");
+    };
+  }
+});
+
+// node_modules/core-js/internals/get-substitution.js
+var require_get_substitution = __commonJS({
+  "node_modules/core-js/internals/get-substitution.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var toObject = require_to_object();
+    var floor = Math.floor;
+    var charAt = uncurryThis8("".charAt);
+    var replace = uncurryThis8("".replace);
+    var stringSlice4 = uncurryThis8("".slice);
+    var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
+    var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
+    module.exports = function(matched, str, position, captures, namedCaptures, replacement) {
+      var tailPos = position + matched.length;
+      var m3 = captures.length;
+      var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
+      if (namedCaptures !== void 0) {
+        namedCaptures = toObject(namedCaptures);
+        symbols = SUBSTITUTION_SYMBOLS;
+      }
+      return replace(replacement, symbols, function(match, ch) {
+        var capture;
+        switch (charAt(ch, 0)) {
+          case "$":
+            return "$";
+          case "&":
+            return matched;
+          case "`":
+            return stringSlice4(str, 0, position);
+          case "'":
+            return stringSlice4(str, tailPos);
+          case "<":
+            capture = namedCaptures[stringSlice4(ch, 1, -1)];
+            break;
+          default:
+            var n2 = +ch;
+            if (n2 === 0) return match;
+            if (n2 > m3) {
+              var f2 = floor(n2 / 10);
+              if (f2 === 0) return match;
+              if (f2 <= m3) return captures[f2 - 1] === void 0 ? charAt(ch, 1) : captures[f2 - 1] + charAt(ch, 1);
+              return match;
+            }
+            capture = captures[n2 - 1];
+        }
+        return capture === void 0 ? "" : capture;
+      });
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-regexp.js
+var require_is_regexp = __commonJS({
+  "node_modules/core-js/internals/is-regexp.js"(exports, module) {
+    "use strict";
+    var isObject = require_is_object();
+    var classof = require_classof_raw();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var MATCH = wellKnownSymbol3("match");
+    module.exports = function(it) {
+      var isRegExp;
+      return isObject(it) && ((isRegExp = it[MATCH]) !== void 0 ? !!isRegExp : classof(it) === "RegExp");
+    };
+  }
+});
+
+// node_modules/core-js/internals/not-a-regexp.js
+var require_not_a_regexp = __commonJS({
+  "node_modules/core-js/internals/not-a-regexp.js"(exports, module) {
+    "use strict";
+    var isRegExp = require_is_regexp();
+    var $TypeError = TypeError;
+    module.exports = function(it) {
+      if (isRegExp(it)) {
+        throw new $TypeError("The method doesn't accept regular expressions");
+      }
+      return it;
+    };
+  }
+});
+
+// node_modules/core-js/internals/correct-is-regexp-logic.js
+var require_correct_is_regexp_logic = __commonJS({
+  "node_modules/core-js/internals/correct-is-regexp-logic.js"(exports, module) {
+    "use strict";
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var MATCH = wellKnownSymbol3("match");
+    module.exports = function(METHOD_NAME) {
+      var regexp = /./;
+      try {
+        "/./"[METHOD_NAME](regexp);
+      } catch (error1) {
+        try {
+          regexp[MATCH] = false;
+          return "/./"[METHOD_NAME](regexp);
+        } catch (error2) {
+        }
+      }
+      return false;
+    };
+  }
+});
+
+// node_modules/core-js/internals/add-to-unscopables.js
+var require_add_to_unscopables = __commonJS({
+  "node_modules/core-js/internals/add-to-unscopables.js"(exports, module) {
+    "use strict";
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var create = require_object_create();
+    var defineProperty = require_object_define_property().f;
+    var UNSCOPABLES = wellKnownSymbol3("unscopables");
+    var ArrayPrototype = Array.prototype;
+    if (ArrayPrototype[UNSCOPABLES] === void 0) {
+      defineProperty(ArrayPrototype, UNSCOPABLES, {
+        configurable: true,
+        value: create(null)
+      });
+    }
+    module.exports = function(key) {
+      ArrayPrototype[UNSCOPABLES][key] = true;
+    };
+  }
+});
+
+// node_modules/core-js/internals/correct-prototype-getter.js
+var require_correct_prototype_getter = __commonJS({
+  "node_modules/core-js/internals/correct-prototype-getter.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    module.exports = !fails4(function() {
+      function F() {
+      }
+      F.prototype.constructor = null;
+      return Object.getPrototypeOf(new F()) !== F.prototype;
+    });
+  }
+});
+
+// node_modules/core-js/internals/object-get-prototype-of.js
+var require_object_get_prototype_of = __commonJS({
+  "node_modules/core-js/internals/object-get-prototype-of.js"(exports, module) {
+    "use strict";
+    var hasOwn = require_has_own_property();
+    var isCallable2 = require_is_callable();
+    var toObject = require_to_object();
+    var sharedKey = require_shared_key();
+    var CORRECT_PROTOTYPE_GETTER = require_correct_prototype_getter();
+    var IE_PROTO = sharedKey("IE_PROTO");
+    var $Object = Object;
+    var ObjectPrototype = $Object.prototype;
+    module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O2) {
+      var object = toObject(O2);
+      if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
+      var constructor = object.constructor;
+      if (isCallable2(constructor) && object instanceof constructor) {
+        return constructor.prototype;
+      }
+      return object instanceof $Object ? ObjectPrototype : null;
+    };
+  }
+});
+
+// node_modules/core-js/internals/iterators-core.js
+var require_iterators_core = __commonJS({
+  "node_modules/core-js/internals/iterators-core.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    var isCallable2 = require_is_callable();
+    var isObject = require_is_object();
+    var create = require_object_create();
+    var getPrototypeOf = require_object_get_prototype_of();
+    var defineBuiltIn2 = require_define_built_in();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var IS_PURE3 = require_is_pure();
+    var ITERATOR2 = wellKnownSymbol3("iterator");
+    var BUGGY_SAFARI_ITERATORS = false;
+    var IteratorPrototype;
+    var PrototypeOfArrayIteratorPrototype;
+    var arrayIterator;
+    if ([].keys) {
+      arrayIterator = [].keys();
+      if (!("next" in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
+      else {
+        PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
+        if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
+      }
+    }
+    var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails4(function() {
+      var test2 = {};
+      return IteratorPrototype[ITERATOR2].call(test2) !== test2;
+    });
+    if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
+    else if (IS_PURE3) IteratorPrototype = create(IteratorPrototype);
+    if (!isCallable2(IteratorPrototype[ITERATOR2])) {
+      defineBuiltIn2(IteratorPrototype, ITERATOR2, function() {
+        return this;
+      });
+    }
+    module.exports = {
+      IteratorPrototype,
+      BUGGY_SAFARI_ITERATORS
+    };
+  }
+});
+
+// node_modules/core-js/internals/iterator-create-constructor.js
+var require_iterator_create_constructor = __commonJS({
+  "node_modules/core-js/internals/iterator-create-constructor.js"(exports, module) {
+    "use strict";
+    var IteratorPrototype = require_iterators_core().IteratorPrototype;
+    var create = require_object_create();
+    var createPropertyDescriptor = require_create_property_descriptor();
+    var setToStringTag2 = require_set_to_string_tag();
+    var Iterators = require_iterators();
+    var returnThis = function() {
+      return this;
+    };
+    module.exports = function(IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {
+      var TO_STRING_TAG = NAME + " Iterator";
+      IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });
+      setToStringTag2(IteratorConstructor, TO_STRING_TAG, false, true);
+      Iterators[TO_STRING_TAG] = returnThis;
+      return IteratorConstructor;
+    };
+  }
+});
+
+// node_modules/core-js/internals/iterator-define.js
+var require_iterator_define = __commonJS({
+  "node_modules/core-js/internals/iterator-define.js"(exports, module) {
+    "use strict";
+    var $8 = require_export();
+    var call4 = require_function_call();
+    var IS_PURE3 = require_is_pure();
+    var FunctionName = require_function_name();
+    var isCallable2 = require_is_callable();
+    var createIteratorConstructor = require_iterator_create_constructor();
+    var getPrototypeOf = require_object_get_prototype_of();
+    var setPrototypeOf = require_object_set_prototype_of();
+    var setToStringTag2 = require_set_to_string_tag();
+    var createNonEnumerableProperty2 = require_create_non_enumerable_property();
+    var defineBuiltIn2 = require_define_built_in();
+    var wellKnownSymbol3 = require_well_known_symbol();
+    var Iterators = require_iterators();
+    var IteratorsCore = require_iterators_core();
+    var PROPER_FUNCTION_NAME2 = FunctionName.PROPER;
+    var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
+    var IteratorPrototype = IteratorsCore.IteratorPrototype;
+    var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
+    var ITERATOR2 = wellKnownSymbol3("iterator");
+    var KEYS = "keys";
+    var VALUES = "values";
+    var ENTRIES = "entries";
+    var returnThis = function() {
+      return this;
+    };
+    module.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED3) {
+      createIteratorConstructor(IteratorConstructor, NAME, next);
+      var getIterationMethod = function(KIND) {
+        if (KIND === DEFAULT && defaultIterator) return defaultIterator;
+        if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];
+        switch (KIND) {
+          case KEYS:
+            return function keys() {
+              return new IteratorConstructor(this, KIND);
+            };
+          case VALUES:
+            return function values() {
+              return new IteratorConstructor(this, KIND);
+            };
+          case ENTRIES:
+            return function entries() {
+              return new IteratorConstructor(this, KIND);
+            };
+        }
+        return function() {
+          return new IteratorConstructor(this);
+        };
+      };
+      var TO_STRING_TAG = NAME + " Iterator";
+      var INCORRECT_VALUES_NAME = false;
+      var IterablePrototype = Iterable.prototype;
+      var nativeIterator = IterablePrototype[ITERATOR2] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT];
+      var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
+      var anyNativeIterator = NAME === "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator;
+      var CurrentIteratorPrototype, methods, KEY;
+      if (anyNativeIterator) {
+        CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
+        if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
+          if (!IS_PURE3 && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
+            if (setPrototypeOf) {
+              setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
+            } else if (!isCallable2(CurrentIteratorPrototype[ITERATOR2])) {
+              defineBuiltIn2(CurrentIteratorPrototype, ITERATOR2, returnThis);
+            }
+          }
+          setToStringTag2(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
+          if (IS_PURE3) Iterators[TO_STRING_TAG] = returnThis;
+        }
+      }
+      if (PROPER_FUNCTION_NAME2 && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {
+        if (!IS_PURE3 && CONFIGURABLE_FUNCTION_NAME) {
+          createNonEnumerableProperty2(IterablePrototype, "name", VALUES);
+        } else {
+          INCORRECT_VALUES_NAME = true;
+          defaultIterator = function values() {
+            return call4(nativeIterator, this);
+          };
+        }
+      }
+      if (DEFAULT) {
+        methods = {
+          values: getIterationMethod(VALUES),
+          keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
+          entries: getIterationMethod(ENTRIES)
+        };
+        if (FORCED3) for (KEY in methods) {
+          if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
+            defineBuiltIn2(IterablePrototype, KEY, methods[KEY]);
+          }
+        }
+        else $8({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
+      }
+      if ((!IS_PURE3 || FORCED3) && IterablePrototype[ITERATOR2] !== defaultIterator) {
+        defineBuiltIn2(IterablePrototype, ITERATOR2, defaultIterator, { name: DEFAULT });
+      }
+      Iterators[NAME] = defaultIterator;
+      return methods;
+    };
+  }
+});
+
+// node_modules/core-js/internals/create-iter-result-object.js
+var require_create_iter_result_object = __commonJS({
+  "node_modules/core-js/internals/create-iter-result-object.js"(exports, module) {
+    "use strict";
+    module.exports = function(value, done) {
+      return { value, done };
+    };
+  }
+});
+
+// node_modules/core-js/modules/es.array.iterator.js
+var require_es_array_iterator = __commonJS({
+  "node_modules/core-js/modules/es.array.iterator.js"(exports, module) {
+    "use strict";
+    var toIndexedObject = require_to_indexed_object();
+    var addToUnscopables = require_add_to_unscopables();
+    var Iterators = require_iterators();
+    var InternalStateModule = require_internal_state();
+    var defineProperty = require_object_define_property().f;
+    var defineIterator = require_iterator_define();
+    var createIterResultObject = require_create_iter_result_object();
+    var IS_PURE3 = require_is_pure();
+    var DESCRIPTORS = require_descriptors();
+    var ARRAY_ITERATOR = "Array Iterator";
+    var setInternalState = InternalStateModule.set;
+    var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
+    module.exports = defineIterator(Array, "Array", function(iterated, kind) {
+      setInternalState(this, {
+        type: ARRAY_ITERATOR,
+        target: toIndexedObject(iterated),
+        // target
+        index: 0,
+        // next index
+        kind
+        // kind
+      });
+    }, function() {
+      var state = getInternalState(this);
+      var target = state.target;
+      var index2 = state.index++;
+      if (!target || index2 >= target.length) {
+        state.target = null;
+        return createIterResultObject(void 0, true);
+      }
+      switch (state.kind) {
+        case "keys":
+          return createIterResultObject(index2, false);
+        case "values":
+          return createIterResultObject(target[index2], false);
+      }
+      return createIterResultObject([index2, target[index2]], false);
+    }, "values");
+    var values = Iterators.Arguments = Iterators.Array;
+    addToUnscopables("keys");
+    addToUnscopables("values");
+    addToUnscopables("entries");
+    if (!IS_PURE3 && DESCRIPTORS && values.name !== "values") try {
+      defineProperty(values, "name", { value: "values" });
+    } catch (error) {
+    }
+  }
+});
+
+// node_modules/core-js/internals/dom-iterables.js
+var require_dom_iterables = __commonJS({
+  "node_modules/core-js/internals/dom-iterables.js"(exports, module) {
+    "use strict";
+    module.exports = {
+      CSSRuleList: 0,
+      CSSStyleDeclaration: 0,
+      CSSValueList: 0,
+      ClientRectList: 0,
+      DOMRectList: 0,
+      DOMStringList: 0,
+      DOMTokenList: 1,
+      DataTransferItemList: 0,
+      FileList: 0,
+      HTMLAllCollection: 0,
+      HTMLCollection: 0,
+      HTMLFormElement: 0,
+      HTMLSelectElement: 0,
+      MediaList: 0,
+      MimeTypeArray: 0,
+      NamedNodeMap: 0,
+      NodeList: 1,
+      PaintRequestList: 0,
+      Plugin: 0,
+      PluginArray: 0,
+      SVGLengthList: 0,
+      SVGNumberList: 0,
+      SVGPathSegList: 0,
+      SVGPointList: 0,
+      SVGStringList: 0,
+      SVGTransformList: 0,
+      SourceBufferList: 0,
+      StyleSheetList: 0,
+      TextTrackCueList: 0,
+      TextTrackList: 0,
+      TouchList: 0
+    };
+  }
+});
+
+// node_modules/core-js/internals/dom-token-list-prototype.js
+var require_dom_token_list_prototype = __commonJS({
+  "node_modules/core-js/internals/dom-token-list-prototype.js"(exports, module) {
+    "use strict";
+    var documentCreateElement = require_document_create_element();
+    var classList = documentCreateElement("span").classList;
+    var DOMTokenListPrototype2 = classList && classList.constructor && classList.constructor.prototype;
+    module.exports = DOMTokenListPrototype2 === Object.prototype ? void 0 : DOMTokenListPrototype2;
+  }
+});
+
+// node_modules/core-js/internals/array-reduce.js
+var require_array_reduce = __commonJS({
+  "node_modules/core-js/internals/array-reduce.js"(exports, module) {
+    "use strict";
+    var aCallable = require_a_callable();
+    var toObject = require_to_object();
+    var IndexedObject = require_indexed_object();
+    var lengthOfArrayLike = require_length_of_array_like();
+    var $TypeError = TypeError;
+    var REDUCE_EMPTY = "Reduce of empty array with no initial value";
+    var createMethod = function(IS_RIGHT) {
+      return function(that, callbackfn, argumentsLength, memo) {
+        var O2 = toObject(that);
+        var self2 = IndexedObject(O2);
+        var length = lengthOfArrayLike(O2);
+        aCallable(callbackfn);
+        if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);
+        var index2 = IS_RIGHT ? length - 1 : 0;
+        var i2 = IS_RIGHT ? -1 : 1;
+        if (argumentsLength < 2) while (true) {
+          if (index2 in self2) {
+            memo = self2[index2];
+            index2 += i2;
+            break;
+          }
+          index2 += i2;
+          if (IS_RIGHT ? index2 < 0 : length <= index2) {
+            throw new $TypeError(REDUCE_EMPTY);
+          }
+        }
+        for (; IS_RIGHT ? index2 >= 0 : length > index2; index2 += i2) if (index2 in self2) {
+          memo = callbackfn(memo, self2[index2], index2, O2);
+        }
+        return memo;
+      };
+    };
+    module.exports = {
+      // `Array.prototype.reduce` method
+      // https://tc39.es/ecma262/#sec-array.prototype.reduce
+      left: createMethod(false),
+      // `Array.prototype.reduceRight` method
+      // https://tc39.es/ecma262/#sec-array.prototype.reduceright
+      right: createMethod(true)
+    };
+  }
+});
+
+// node_modules/core-js/internals/array-method-is-strict.js
+var require_array_method_is_strict = __commonJS({
+  "node_modules/core-js/internals/array-method-is-strict.js"(exports, module) {
+    "use strict";
+    var fails4 = require_fails();
+    module.exports = function(METHOD_NAME, argument) {
+      var method = [][METHOD_NAME];
+      return !!method && fails4(function() {
+        method.call(null, argument || function() {
+          return 1;
+        }, 1);
+      });
+    };
+  }
+});
+
+// node_modules/performance-now/lib/performance-now.js
+var require_performance_now = __commonJS({
+  "node_modules/performance-now/lib/performance-now.js"(exports, module) {
+    (function() {
+      var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;
+      if (typeof performance !== "undefined" && performance !== null && performance.now) {
+        module.exports = function() {
+          return performance.now();
+        };
+      } else if (typeof process !== "undefined" && process !== null && process.hrtime) {
+        module.exports = function() {
+          return (getNanoSeconds() - nodeLoadTime) / 1e6;
+        };
+        hrtime = process.hrtime;
+        getNanoSeconds = function() {
+          var hr;
+          hr = hrtime();
+          return hr[0] * 1e9 + hr[1];
+        };
+        moduleLoadTime = getNanoSeconds();
+        upTime = process.uptime() * 1e9;
+        nodeLoadTime = moduleLoadTime - upTime;
+      } else if (Date.now) {
+        module.exports = function() {
+          return Date.now() - loadTime;
+        };
+        loadTime = Date.now();
+      } else {
+        module.exports = function() {
+          return (/* @__PURE__ */ new Date()).getTime() - loadTime;
+        };
+        loadTime = (/* @__PURE__ */ new Date()).getTime();
+      }
+    }).call(exports);
+  }
+});
+
+// node_modules/raf/index.js
+var require_raf = __commonJS({
+  "node_modules/raf/index.js"(exports, module) {
+    var now = require_performance_now();
+    var root = typeof window === "undefined" ? global : window;
+    var vendors = ["moz", "webkit"];
+    var suffix = "AnimationFrame";
+    var raf = root["request" + suffix];
+    var caf = root["cancel" + suffix] || root["cancelRequest" + suffix];
+    for (i2 = 0; !raf && i2 < vendors.length; i2++) {
+      raf = root[vendors[i2] + "Request" + suffix];
+      caf = root[vendors[i2] + "Cancel" + suffix] || root[vendors[i2] + "CancelRequest" + suffix];
+    }
+    var i2;
+    if (!raf || !caf) {
+      last = 0, id = 0, queue = [], frameDuration = 1e3 / 60;
+      raf = function(callback) {
+        if (queue.length === 0) {
+          var _now = now(), next = Math.max(0, frameDuration - (_now - last));
+          last = next + _now;
+          setTimeout(function() {
+            var cp = queue.slice(0);
+            queue.length = 0;
+            for (var i3 = 0; i3 < cp.length; i3++) {
+              if (!cp[i3].cancelled) {
+                try {
+                  cp[i3].callback(last);
+                } catch (e2) {
+                  setTimeout(function() {
+                    throw e2;
+                  }, 0);
+                }
+              }
+            }
+          }, Math.round(next));
+        }
+        queue.push({
+          handle: ++id,
+          callback,
+          cancelled: false
+        });
+        return id;
+      };
+      caf = function(handle) {
+        for (var i3 = 0; i3 < queue.length; i3++) {
+          if (queue[i3].handle === handle) {
+            queue[i3].cancelled = true;
+          }
+        }
+      };
+    }
+    var last;
+    var id;
+    var queue;
+    var frameDuration;
+    module.exports = function(fn) {
+      return raf.call(root, fn);
+    };
+    module.exports.cancel = function() {
+      caf.apply(root, arguments);
+    };
+    module.exports.polyfill = function(object) {
+      if (!object) {
+        object = root;
+      }
+      object.requestAnimationFrame = raf;
+      object.cancelAnimationFrame = caf;
+    };
+  }
+});
+
+// node_modules/core-js/internals/whitespaces.js
+var require_whitespaces = __commonJS({
+  "node_modules/core-js/internals/whitespaces.js"(exports, module) {
+    "use strict";
+    module.exports = "	\n\v\f\r                　\u2028\u2029\uFEFF";
+  }
+});
+
+// node_modules/core-js/internals/string-trim.js
+var require_string_trim = __commonJS({
+  "node_modules/core-js/internals/string-trim.js"(exports, module) {
+    "use strict";
+    var uncurryThis8 = require_function_uncurry_this();
+    var requireObjectCoercible7 = require_require_object_coercible();
+    var toString7 = require_to_string();
+    var whitespaces = require_whitespaces();
+    var replace = uncurryThis8("".replace);
+    var ltrim = RegExp("^[" + whitespaces + "]+");
+    var rtrim = RegExp("(^|[^" + whitespaces + "])[" + whitespaces + "]+$");
+    var createMethod = function(TYPE) {
+      return function($this) {
+        var string = toString7(requireObjectCoercible7($this));
+        if (TYPE & 1) string = replace(string, ltrim, "");
+        if (TYPE & 2) string = replace(string, rtrim, "$1");
+        return string;
+      };
+    };
+    module.exports = {
+      // `String.prototype.{ trimLeft, trimStart }` methods
+      // https://tc39.es/ecma262/#sec-string.prototype.trimstart
+      start: createMethod(1),
+      // `String.prototype.{ trimRight, trimEnd }` methods
+      // https://tc39.es/ecma262/#sec-string.prototype.trimend
+      end: createMethod(2),
+      // `String.prototype.trim` method
+      // https://tc39.es/ecma262/#sec-string.prototype.trim
+      trim: createMethod(3)
+    };
+  }
+});
+
+// node_modules/core-js/internals/string-trim-forced.js
+var require_string_trim_forced = __commonJS({
+  "node_modules/core-js/internals/string-trim-forced.js"(exports, module) {
+    "use strict";
+    var PROPER_FUNCTION_NAME2 = require_function_name().PROPER;
+    var fails4 = require_fails();
+    var whitespaces = require_whitespaces();
+    var non = "​
+᠎";
+    module.exports = function(METHOD_NAME) {
+      return fails4(function() {
+        return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() !== non || PROPER_FUNCTION_NAME2 && whitespaces[METHOD_NAME].name !== METHOD_NAME;
+      });
+    };
+  }
+});
+
+// node_modules/rgbcolor/index.js
+var require_rgbcolor = __commonJS({
+  "node_modules/rgbcolor/index.js"(exports, module) {
+    module.exports = function(color_string) {
+      this.ok = false;
+      this.alpha = 1;
+      if (color_string.charAt(0) == "#") {
+        color_string = color_string.substr(1, 6);
+      }
+      color_string = color_string.replace(/ /g, "");
+      color_string = color_string.toLowerCase();
+      var simple_colors = {
+        aliceblue: "f0f8ff",
+        antiquewhite: "faebd7",
+        aqua: "00ffff",
+        aquamarine: "7fffd4",
+        azure: "f0ffff",
+        beige: "f5f5dc",
+        bisque: "ffe4c4",
+        black: "000000",
+        blanchedalmond: "ffebcd",
+        blue: "0000ff",
+        blueviolet: "8a2be2",
+        brown: "a52a2a",
+        burlywood: "deb887",
+        cadetblue: "5f9ea0",
+        chartreuse: "7fff00",
+        chocolate: "d2691e",
+        coral: "ff7f50",
+        cornflowerblue: "6495ed",
+        cornsilk: "fff8dc",
+        crimson: "dc143c",
+        cyan: "00ffff",
+        darkblue: "00008b",
+        darkcyan: "008b8b",
+        darkgoldenrod: "b8860b",
+        darkgray: "a9a9a9",
+        darkgreen: "006400",
+        darkkhaki: "bdb76b",
+        darkmagenta: "8b008b",
+        darkolivegreen: "556b2f",
+        darkorange: "ff8c00",
+        darkorchid: "9932cc",
+        darkred: "8b0000",
+        darksalmon: "e9967a",
+        darkseagreen: "8fbc8f",
+        darkslateblue: "483d8b",
+        darkslategray: "2f4f4f",
+        darkturquoise: "00ced1",
+        darkviolet: "9400d3",
+        deeppink: "ff1493",
+        deepskyblue: "00bfff",
+        dimgray: "696969",
+        dodgerblue: "1e90ff",
+        feldspar: "d19275",
+        firebrick: "b22222",
+        floralwhite: "fffaf0",
+        forestgreen: "228b22",
+        fuchsia: "ff00ff",
+        gainsboro: "dcdcdc",
+        ghostwhite: "f8f8ff",
+        gold: "ffd700",
+        goldenrod: "daa520",
+        gray: "808080",
+        green: "008000",
+        greenyellow: "adff2f",
+        honeydew: "f0fff0",
+        hotpink: "ff69b4",
+        indianred: "cd5c5c",
+        indigo: "4b0082",
+        ivory: "fffff0",
+        khaki: "f0e68c",
+        lavender: "e6e6fa",
+        lavenderblush: "fff0f5",
+        lawngreen: "7cfc00",
+        lemonchiffon: "fffacd",
+        lightblue: "add8e6",
+        lightcoral: "f08080",
+        lightcyan: "e0ffff",
+        lightgoldenrodyellow: "fafad2",
+        lightgrey: "d3d3d3",
+        lightgreen: "90ee90",
+        lightpink: "ffb6c1",
+        lightsalmon: "ffa07a",
+        lightseagreen: "20b2aa",
+        lightskyblue: "87cefa",
+        lightslateblue: "8470ff",
+        lightslategray: "778899",
+        lightsteelblue: "b0c4de",
+        lightyellow: "ffffe0",
+        lime: "00ff00",
+        limegreen: "32cd32",
+        linen: "faf0e6",
+        magenta: "ff00ff",
+        maroon: "800000",
+        mediumaquamarine: "66cdaa",
+        mediumblue: "0000cd",
+        mediumorchid: "ba55d3",
+        mediumpurple: "9370d8",
+        mediumseagreen: "3cb371",
+        mediumslateblue: "7b68ee",
+        mediumspringgreen: "00fa9a",
+        mediumturquoise: "48d1cc",
+        mediumvioletred: "c71585",
+        midnightblue: "191970",
+        mintcream: "f5fffa",
+        mistyrose: "ffe4e1",
+        moccasin: "ffe4b5",
+        navajowhite: "ffdead",
+        navy: "000080",
+        oldlace: "fdf5e6",
+        olive: "808000",
+        olivedrab: "6b8e23",
+        orange: "ffa500",
+        orangered: "ff4500",
+        orchid: "da70d6",
+        palegoldenrod: "eee8aa",
+        palegreen: "98fb98",
+        paleturquoise: "afeeee",
+        palevioletred: "d87093",
+        papayawhip: "ffefd5",
+        peachpuff: "ffdab9",
+        peru: "cd853f",
+        pink: "ffc0cb",
+        plum: "dda0dd",
+        powderblue: "b0e0e6",
+        purple: "800080",
+        rebeccapurple: "663399",
+        red: "ff0000",
+        rosybrown: "bc8f8f",
+        royalblue: "4169e1",
+        saddlebrown: "8b4513",
+        salmon: "fa8072",
+        sandybrown: "f4a460",
+        seagreen: "2e8b57",
+        seashell: "fff5ee",
+        sienna: "a0522d",
+        silver: "c0c0c0",
+        skyblue: "87ceeb",
+        slateblue: "6a5acd",
+        slategray: "708090",
+        snow: "fffafa",
+        springgreen: "00ff7f",
+        steelblue: "4682b4",
+        tan: "d2b48c",
+        teal: "008080",
+        thistle: "d8bfd8",
+        tomato: "ff6347",
+        turquoise: "40e0d0",
+        violet: "ee82ee",
+        violetred: "d02090",
+        wheat: "f5deb3",
+        white: "ffffff",
+        whitesmoke: "f5f5f5",
+        yellow: "ffff00",
+        yellowgreen: "9acd32"
+      };
+      color_string = simple_colors[color_string] || color_string;
+      var color_defs = [
+        {
+          re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,
+          example: ["rgba(123, 234, 45, 0.8)", "rgba(255,234,245,1.0)"],
+          process: function(bits2) {
+            return [
+              parseInt(bits2[1]),
+              parseInt(bits2[2]),
+              parseInt(bits2[3]),
+              parseFloat(bits2[4])
+            ];
+          }
+        },
+        {
+          re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+          example: ["rgb(123, 234, 45)", "rgb(255,234,245)"],
+          process: function(bits2) {
+            return [
+              parseInt(bits2[1]),
+              parseInt(bits2[2]),
+              parseInt(bits2[3])
+            ];
+          }
+        },
+        {
+          re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
+          example: ["#00ff00", "336699"],
+          process: function(bits2) {
+            return [
+              parseInt(bits2[1], 16),
+              parseInt(bits2[2], 16),
+              parseInt(bits2[3], 16)
+            ];
+          }
+        },
+        {
+          re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
+          example: ["#fb0", "f0f"],
+          process: function(bits2) {
+            return [
+              parseInt(bits2[1] + bits2[1], 16),
+              parseInt(bits2[2] + bits2[2], 16),
+              parseInt(bits2[3] + bits2[3], 16)
+            ];
+          }
+        }
+      ];
+      for (var i2 = 0; i2 < color_defs.length; i2++) {
+        var re = color_defs[i2].re;
+        var processor = color_defs[i2].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+          var channels = processor(bits);
+          this.r = channels[0];
+          this.g = channels[1];
+          this.b = channels[2];
+          if (channels.length > 3) {
+            this.alpha = channels[3];
+          }
+          this.ok = true;
+        }
+      }
+      this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r;
+      this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g;
+      this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b;
+      this.alpha = this.alpha < 0 ? 0 : this.alpha > 1 || isNaN(this.alpha) ? 1 : this.alpha;
+      this.toRGB = function() {
+        return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")";
+      };
+      this.toRGBA = function() {
+        return "rgba(" + this.r + ", " + this.g + ", " + this.b + ", " + this.alpha + ")";
+      };
+      this.toHex = function() {
+        var r2 = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r2.length == 1) r2 = "0" + r2;
+        if (g.length == 1) g = "0" + g;
+        if (b.length == 1) b = "0" + b;
+        return "#" + r2 + g + b;
+      };
+      this.getHelpXML = function() {
+        var examples = new Array();
+        for (var i3 = 0; i3 < color_defs.length; i3++) {
+          var example = color_defs[i3].example;
+          for (var j = 0; j < example.length; j++) {
+            examples[examples.length] = example[j];
+          }
+        }
+        for (var sc in simple_colors) {
+          examples[examples.length] = sc;
+        }
+        var xml = document.createElement("ul");
+        xml.setAttribute("id", "rgbcolor-examples");
+        for (var i3 = 0; i3 < examples.length; i3++) {
+          try {
+            var list_item = document.createElement("li");
+            var list_color = new RGBColor(examples[i3]);
+            var example_div = document.createElement("div");
+            example_div.style.cssText = "margin: 3px; border: 1px solid black; background:" + list_color.toHex() + "; color:" + list_color.toHex();
+            example_div.appendChild(document.createTextNode("test"));
+            var list_item_value = document.createTextNode(
+              " " + examples[i3] + " -> " + list_color.toRGB() + " -> " + list_color.toHex()
+            );
+            list_item.appendChild(example_div);
+            list_item.appendChild(list_item_value);
+            xml.appendChild(list_item);
+          } catch (e2) {
+          }
+        }
+        return xml;
+      };
+    };
+  }
+});
+
+// node_modules/core-js/internals/is-array.js
+var require_is_array = __commonJS({
+  "node_modules/core-js/internals/is-array.js"(exports, module) {
+    "use strict";
+    var classof = require_classof_raw();
+    module.exports = Array.isArray || function isArray2(argument) {
+      return classof(argument) === "Array";
+    };
+  }
+});
+
+// node_modules/core-js/internals/regexp-get-flags.js
+var require_regexp_get_flags = __commonJS({
+  "node_modules/core-js/internals/regexp-get-flags.js"(exports, module) {
+    "use strict";
+    var call4 = require_function_call();
+    var hasOwn = require_has_own_property();
+    var isPrototypeOf = require_object_is_prototype_of();
+    var regExpFlags = require_regexp_flags();
+    var RegExpPrototype2 = RegExp.prototype;
+    module.exports = function(R) {
+      var flags = R.flags;
+      return flags === void 0 && !("flags" in RegExpPrototype2) && !hasOwn(R, "flags") && isPrototypeOf(RegExpPrototype2, R) ? call4(regExpFlags, R) : flags;
+    };
+  }
+});
+
+// node_modules/core-js/modules/es.promise.js
+require_es_promise_constructor();
+require_es_promise_all();
+require_es_promise_catch();
+require_es_promise_race();
+require_es_promise_reject();
+require_es_promise_resolve();
+
+// node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
+function asyncGeneratorStep(n2, t2, e2, r2, o2, a2, c3) {
+  try {
+    var i2 = n2[a2](c3), u2 = i2.value;
+  } catch (n3) {
+    return void e2(n3);
+  }
+  i2.done ? t2(u2) : Promise.resolve(u2).then(r2, o2);
+}
+function _asyncToGenerator(n2) {
+  return function() {
+    var t2 = this, e2 = arguments;
+    return new Promise(function(r2, o2) {
+      var a2 = n2.apply(t2, e2);
+      function _next(n3) {
+        asyncGeneratorStep(a2, r2, o2, _next, _throw, "next", n3);
+      }
+      function _throw(n3) {
+        asyncGeneratorStep(a2, r2, o2, _next, _throw, "throw", n3);
+      }
+      _next(void 0);
+    });
+  };
+}
+
+// node_modules/core-js/modules/es.string.match.js
+var call = require_function_call();
+var fixRegExpWellKnownSymbolLogic = require_fix_regexp_well_known_symbol_logic();
+var anObject = require_an_object();
+var isNullOrUndefined = require_is_null_or_undefined();
+var toLength = require_to_length();
+var toString = require_to_string();
+var requireObjectCoercible = require_require_object_coercible();
+var getMethod = require_get_method();
+var advanceStringIndex = require_advance_string_index();
+var regExpExec = require_regexp_exec_abstract();
+fixRegExpWellKnownSymbolLogic("match", function(MATCH, nativeMatch, maybeCallNative) {
+  return [
+    // `String.prototype.match` method
+    // https://tc39.es/ecma262/#sec-string.prototype.match
+    function match(regexp) {
+      var O2 = requireObjectCoercible(this);
+      var matcher = isNullOrUndefined(regexp) ? void 0 : getMethod(regexp, MATCH);
+      return matcher ? call(matcher, regexp, O2) : new RegExp(regexp)[MATCH](toString(O2));
+    },
+    // `RegExp.prototype[@@match]` method
+    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
+    function(string) {
+      var rx = anObject(this);
+      var S = toString(string);
+      var res = maybeCallNative(nativeMatch, rx, S);
+      if (res.done) return res.value;
+      if (!rx.global) return regExpExec(rx, S);
+      var fullUnicode = rx.unicode;
+      rx.lastIndex = 0;
+      var A = [];
+      var n2 = 0;
+      var result;
+      while ((result = regExpExec(rx, S)) !== null) {
+        var matchStr = toString(result[0]);
+        A[n2] = matchStr;
+        if (matchStr === "") rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
+        n2++;
+      }
+      return n2 === 0 ? null : A;
+    }
+  ];
+});
+
+// node_modules/core-js/modules/es.string.replace.js
+var apply = require_function_apply();
+var call2 = require_function_call();
+var uncurryThis = require_function_uncurry_this();
+var fixRegExpWellKnownSymbolLogic2 = require_fix_regexp_well_known_symbol_logic();
+var fails = require_fails();
+var anObject2 = require_an_object();
+var isCallable = require_is_callable();
+var isNullOrUndefined2 = require_is_null_or_undefined();
+var toIntegerOrInfinity = require_to_integer_or_infinity();
+var toLength2 = require_to_length();
+var toString2 = require_to_string();
+var requireObjectCoercible2 = require_require_object_coercible();
+var advanceStringIndex2 = require_advance_string_index();
+var getMethod2 = require_get_method();
+var getSubstitution = require_get_substitution();
+var regExpExec2 = require_regexp_exec_abstract();
+var wellKnownSymbol = require_well_known_symbol();
+var REPLACE = wellKnownSymbol("replace");
+var max = Math.max;
+var min = Math.min;
+var concat = uncurryThis([].concat);
+var push = uncurryThis([].push);
+var stringIndexOf = uncurryThis("".indexOf);
+var stringSlice = uncurryThis("".slice);
+var maybeToString = function(it) {
+  return it === void 0 ? it : String(it);
+};
+var REPLACE_KEEPS_$0 = function() {
+  return "a".replace(/./, "$0") === "$0";
+}();
+var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function() {
+  if (/./[REPLACE]) {
+    return /./[REPLACE]("a", "$0") === "";
+  }
+  return false;
+}();
+var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function() {
+  var re = /./;
+  re.exec = function() {
+    var result = [];
+    result.groups = { a: "7" };
+    return result;
+  };
+  return "".replace(re, "$<a>") !== "7";
+});
+fixRegExpWellKnownSymbolLogic2("replace", function(_2, nativeReplace, maybeCallNative) {
+  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? "$" : "$0";
+  return [
+    // `String.prototype.replace` method
+    // https://tc39.es/ecma262/#sec-string.prototype.replace
+    function replace(searchValue, replaceValue) {
+      var O2 = requireObjectCoercible2(this);
+      var replacer = isNullOrUndefined2(searchValue) ? void 0 : getMethod2(searchValue, REPLACE);
+      return replacer ? call2(replacer, searchValue, O2, replaceValue) : call2(nativeReplace, toString2(O2), searchValue, replaceValue);
+    },
+    // `RegExp.prototype[@@replace]` method
+    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
+    function(string, replaceValue) {
+      var rx = anObject2(this);
+      var S = toString2(string);
+      if (typeof replaceValue == "string" && stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && stringIndexOf(replaceValue, "$<") === -1) {
+        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
+        if (res.done) return res.value;
+      }
+      var functionalReplace = isCallable(replaceValue);
+      if (!functionalReplace) replaceValue = toString2(replaceValue);
+      var global2 = rx.global;
+      var fullUnicode;
+      if (global2) {
+        fullUnicode = rx.unicode;
+        rx.lastIndex = 0;
+      }
+      var results = [];
+      var result;
+      while (true) {
+        result = regExpExec2(rx, S);
+        if (result === null) break;
+        push(results, result);
+        if (!global2) break;
+        var matchStr = toString2(result[0]);
+        if (matchStr === "") rx.lastIndex = advanceStringIndex2(S, toLength2(rx.lastIndex), fullUnicode);
+      }
+      var accumulatedResult = "";
+      var nextSourcePosition = 0;
+      for (var i2 = 0; i2 < results.length; i2++) {
+        result = results[i2];
+        var matched = toString2(result[0]);
+        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
+        var captures = [];
+        var replacement;
+        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
+        var namedCaptures = result.groups;
+        if (functionalReplace) {
+          var replacerArgs = concat([matched], captures, position, S);
+          if (namedCaptures !== void 0) push(replacerArgs, namedCaptures);
+          replacement = toString2(apply(replaceValue, void 0, replacerArgs));
+        } else {
+          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
+        }
+        if (position >= nextSourcePosition) {
+          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;
+          nextSourcePosition = position + matched.length;
+        }
+      }
+      return accumulatedResult + stringSlice(S, nextSourcePosition);
+    }
+  ];
+}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
+
+// node_modules/core-js/modules/es.string.starts-with.js
+var $ = require_export();
+var uncurryThis2 = require_function_uncurry_this_clause();
+var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
+var toLength3 = require_to_length();
+var toString3 = require_to_string();
+var notARegExp = require_not_a_regexp();
+var requireObjectCoercible3 = require_require_object_coercible();
+var correctIsRegExpLogic = require_correct_is_regexp_logic();
+var IS_PURE = require_is_pure();
+var stringSlice2 = uncurryThis2("".slice);
+var min2 = Math.min;
+var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic("startsWith");
+var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function() {
+  var descriptor = getOwnPropertyDescriptor(String.prototype, "startsWith");
+  return descriptor && !descriptor.writable;
+}();
+$({ target: "String", proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
+  startsWith: function startsWith(searchString) {
+    var that = toString3(requireObjectCoercible3(this));
+    notARegExp(searchString);
+    var index2 = toLength3(min2(arguments.length > 1 ? arguments[1] : void 0, that.length));
+    var search = toString3(searchString);
+    return stringSlice2(that, index2, index2 + search.length) === search;
+  }
+});
+
+// node_modules/canvg/lib/index.es.js
+var import_es_array_iterator = __toESM(require_es_array_iterator());
+
+// node_modules/core-js/modules/web.dom-collections.iterator.js
+var globalThis2 = require_global_this();
+var DOMIterables = require_dom_iterables();
+var DOMTokenListPrototype = require_dom_token_list_prototype();
+var ArrayIteratorMethods = require_es_array_iterator();
+var createNonEnumerableProperty = require_create_non_enumerable_property();
+var setToStringTag = require_set_to_string_tag();
+var wellKnownSymbol2 = require_well_known_symbol();
+var ITERATOR = wellKnownSymbol2("iterator");
+var ArrayValues = ArrayIteratorMethods.values;
+var handlePrototype = function(CollectionPrototype, COLLECTION_NAME) {
+  if (CollectionPrototype) {
+    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
+      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
+    } catch (error) {
+      CollectionPrototype[ITERATOR] = ArrayValues;
+    }
+    setToStringTag(CollectionPrototype, COLLECTION_NAME, true);
+    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
+      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
+        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
+      } catch (error) {
+        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
+      }
+    }
+  }
+};
+for (COLLECTION_NAME in DOMIterables) {
+  handlePrototype(globalThis2[COLLECTION_NAME] && globalThis2[COLLECTION_NAME].prototype, COLLECTION_NAME);
+}
+var COLLECTION_NAME;
+handlePrototype(DOMTokenListPrototype, "DOMTokenList");
+
+// node_modules/@babel/runtime/helpers/esm/toPrimitive.js
+function toPrimitive(t2, r2) {
+  if ("object" != _typeof(t2) || !t2) return t2;
+  var e2 = t2[Symbol.toPrimitive];
+  if (void 0 !== e2) {
+    var i2 = e2.call(t2, r2 || "default");
+    if ("object" != _typeof(i2)) return i2;
+    throw new TypeError("@@toPrimitive must return a primitive value.");
+  }
+  return ("string" === r2 ? String : Number)(t2);
+}
+
+// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
+function toPropertyKey(t2) {
+  var i2 = toPrimitive(t2, "string");
+  return "symbol" == _typeof(i2) ? i2 : i2 + "";
+}
+
+// node_modules/@babel/runtime/helpers/esm/defineProperty.js
+function _defineProperty(e2, r2, t2) {
+  return (r2 = toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, {
+    value: t2,
+    enumerable: true,
+    configurable: true,
+    writable: true
+  }) : e2[r2] = t2, e2;
+}
+
+// node_modules/core-js/modules/es.array.reduce.js
+var $2 = require_export();
+var $reduce = require_array_reduce().left;
+var arrayMethodIsStrict = require_array_method_is_strict();
+var CHROME_VERSION = require_environment_v8_version();
+var IS_NODE = require_environment_is_node();
+var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
+var FORCED = CHROME_BUG || !arrayMethodIsStrict("reduce");
+$2({ target: "Array", proto: true, forced: FORCED }, {
+  reduce: function reduce(callbackfn) {
+    var length = arguments.length;
+    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : void 0);
+  }
+});
+
+// node_modules/core-js/modules/es.string.ends-with.js
+var $3 = require_export();
+var uncurryThis3 = require_function_uncurry_this_clause();
+var getOwnPropertyDescriptor2 = require_object_get_own_property_descriptor().f;
+var toLength4 = require_to_length();
+var toString4 = require_to_string();
+var notARegExp2 = require_not_a_regexp();
+var requireObjectCoercible4 = require_require_object_coercible();
+var correctIsRegExpLogic2 = require_correct_is_regexp_logic();
+var IS_PURE2 = require_is_pure();
+var slice = uncurryThis3("".slice);
+var min3 = Math.min;
+var CORRECT_IS_REGEXP_LOGIC2 = correctIsRegExpLogic2("endsWith");
+var MDN_POLYFILL_BUG2 = !IS_PURE2 && !CORRECT_IS_REGEXP_LOGIC2 && !!function() {
+  var descriptor = getOwnPropertyDescriptor2(String.prototype, "endsWith");
+  return descriptor && !descriptor.writable;
+}();
+$3({ target: "String", proto: true, forced: !MDN_POLYFILL_BUG2 && !CORRECT_IS_REGEXP_LOGIC2 }, {
+  endsWith: function endsWith(searchString) {
+    var that = toString4(requireObjectCoercible4(this));
+    notARegExp2(searchString);
+    var endPosition = arguments.length > 1 ? arguments[1] : void 0;
+    var len = that.length;
+    var end = endPosition === void 0 ? len : min3(toLength4(endPosition), len);
+    var search = toString4(searchString);
+    return slice(that, end - search.length, end) === search;
+  }
+});
+
+// node_modules/core-js/modules/es.string.split.js
+var call3 = require_function_call();
+var uncurryThis4 = require_function_uncurry_this();
+var fixRegExpWellKnownSymbolLogic3 = require_fix_regexp_well_known_symbol_logic();
+var anObject3 = require_an_object();
+var isNullOrUndefined3 = require_is_null_or_undefined();
+var requireObjectCoercible5 = require_require_object_coercible();
+var speciesConstructor = require_species_constructor();
+var advanceStringIndex3 = require_advance_string_index();
+var toLength5 = require_to_length();
+var toString5 = require_to_string();
+var getMethod3 = require_get_method();
+var regExpExec3 = require_regexp_exec_abstract();
+var stickyHelpers = require_regexp_sticky_helpers();
+var fails2 = require_fails();
+var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
+var MAX_UINT32 = 4294967295;
+var min4 = Math.min;
+var push2 = uncurryThis4([].push);
+var stringSlice3 = uncurryThis4("".slice);
+var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails2(function() {
+  var re = /(?:)/;
+  var originalExec = re.exec;
+  re.exec = function() {
+    return originalExec.apply(this, arguments);
+  };
+  var result = "ab".split(re);
+  return result.length !== 2 || result[0] !== "a" || result[1] !== "b";
+});
+var BUGGY = "abbc".split(/(b)*/)[1] === "c" || // eslint-disable-next-line regexp/no-empty-group -- required for testing
+"test".split(/(?:)/, -1).length !== 4 || "ab".split(/(?:ab)*/).length !== 2 || ".".split(/(.?)(.?)/).length !== 4 || // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing
+".".split(/()()/).length > 1 || "".split(/.?/).length;
+fixRegExpWellKnownSymbolLogic3("split", function(SPLIT, nativeSplit, maybeCallNative) {
+  var internalSplit = "0".split(void 0, 0).length ? function(separator, limit) {
+    return separator === void 0 && limit === 0 ? [] : call3(nativeSplit, this, separator, limit);
+  } : nativeSplit;
+  return [
+    // `String.prototype.split` method
+    // https://tc39.es/ecma262/#sec-string.prototype.split
+    function split(separator, limit) {
+      var O2 = requireObjectCoercible5(this);
+      var splitter = isNullOrUndefined3(separator) ? void 0 : getMethod3(separator, SPLIT);
+      return splitter ? call3(splitter, separator, O2, limit) : call3(internalSplit, toString5(O2), separator, limit);
+    },
+    // `RegExp.prototype[@@split]` method
+    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
+    //
+    // NOTE: This cannot be properly polyfilled in engines that don't support
+    // the 'y' flag.
+    function(string, limit) {
+      var rx = anObject3(this);
+      var S = toString5(string);
+      if (!BUGGY) {
+        var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);
+        if (res.done) return res.value;
+      }
+      var C = speciesConstructor(rx, RegExp);
+      var unicodeMatching = rx.unicode;
+      var flags = (rx.ignoreCase ? "i" : "") + (rx.multiline ? "m" : "") + (rx.unicode ? "u" : "") + (UNSUPPORTED_Y ? "g" : "y");
+      var splitter = new C(UNSUPPORTED_Y ? "^(?:" + rx.source + ")" : rx, flags);
+      var lim = limit === void 0 ? MAX_UINT32 : limit >>> 0;
+      if (lim === 0) return [];
+      if (S.length === 0) return regExpExec3(splitter, S) === null ? [S] : [];
+      var p2 = 0;
+      var q = 0;
+      var A = [];
+      while (q < S.length) {
+        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;
+        var z = regExpExec3(splitter, UNSUPPORTED_Y ? stringSlice3(S, q) : S);
+        var e2;
+        if (z === null || (e2 = min4(toLength5(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p2) {
+          q = advanceStringIndex3(S, q, unicodeMatching);
+        } else {
+          push2(A, stringSlice3(S, p2, q));
+          if (A.length === lim) return A;
+          for (var i2 = 1; i2 <= z.length - 1; i2++) {
+            push2(A, z[i2]);
+            if (A.length === lim) return A;
+          }
+          q = p2 = e2;
+        }
+      }
+      push2(A, stringSlice3(S, p2));
+      return A;
+    }
+  ];
+}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
+
+// node_modules/canvg/lib/index.es.js
+var import_raf = __toESM(require_raf());
+
+// node_modules/core-js/modules/es.string.trim.js
+var $4 = require_export();
+var $trim = require_string_trim().trim;
+var forcedStringTrimMethod = require_string_trim_forced();
+$4({ target: "String", proto: true, forced: forcedStringTrimMethod("trim") }, {
+  trim: function trim() {
+    return $trim(this);
+  }
+});
+
+// node_modules/canvg/lib/index.es.js
+var import_rgbcolor = __toESM(require_rgbcolor());
+
+// node_modules/core-js/modules/es.array.index-of.js
+var $5 = require_export();
+var uncurryThis5 = require_function_uncurry_this_clause();
+var $indexOf = require_array_includes().indexOf;
+var arrayMethodIsStrict2 = require_array_method_is_strict();
+var nativeIndexOf = uncurryThis5([].indexOf);
+var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;
+var FORCED2 = NEGATIVE_ZERO || !arrayMethodIsStrict2("indexOf");
+$5({ target: "Array", proto: true, forced: FORCED2 }, {
+  indexOf: function indexOf(searchElement) {
+    var fromIndex = arguments.length > 1 ? arguments[1] : void 0;
+    return NEGATIVE_ZERO ? nativeIndexOf(this, searchElement, fromIndex) || 0 : $indexOf(this, searchElement, fromIndex);
+  }
+});
+
+// node_modules/core-js/modules/es.string.includes.js
+var $6 = require_export();
+var uncurryThis6 = require_function_uncurry_this();
+var notARegExp3 = require_not_a_regexp();
+var requireObjectCoercible6 = require_require_object_coercible();
+var toString6 = require_to_string();
+var correctIsRegExpLogic3 = require_correct_is_regexp_logic();
+var stringIndexOf2 = uncurryThis6("".indexOf);
+$6({ target: "String", proto: true, forced: !correctIsRegExpLogic3("includes") }, {
+  includes: function includes(searchString) {
+    return !!~stringIndexOf2(
+      toString6(requireObjectCoercible6(this)),
+      toString6(notARegExp3(searchString)),
+      arguments.length > 1 ? arguments[1] : void 0
+    );
+  }
+});
+
+// node_modules/core-js/modules/es.array.reverse.js
+var $7 = require_export();
+var uncurryThis7 = require_function_uncurry_this();
+var isArray = require_is_array();
+var nativeReverse = uncurryThis7([].reverse);
+var test = [1, 2];
+$7({ target: "Array", proto: true, forced: String(test) === String(test.reverse()) }, {
+  reverse: function reverse() {
+    if (isArray(this)) this.length = this.length;
+    return nativeReverse(this);
+  }
+});
+
+// node_modules/svg-pathdata/lib/SVGPathData.module.js
+var t = function(r2, e2) {
+  return (t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(t2, r3) {
+    t2.__proto__ = r3;
+  } || function(t2, r3) {
+    for (var e3 in r3) Object.prototype.hasOwnProperty.call(r3, e3) && (t2[e3] = r3[e3]);
+  })(r2, e2);
+};
+function r(r2, e2) {
+  if ("function" != typeof e2 && null !== e2) throw new TypeError("Class extends value " + String(e2) + " is not a constructor or null");
+  function i2() {
+    this.constructor = r2;
+  }
+  t(r2, e2), r2.prototype = null === e2 ? Object.create(e2) : (i2.prototype = e2.prototype, new i2());
+}
+function e(t2) {
+  var r2 = "";
+  Array.isArray(t2) || (t2 = [t2]);
+  for (var e2 = 0; e2 < t2.length; e2++) {
+    var i2 = t2[e2];
+    if (i2.type === _.CLOSE_PATH) r2 += "z";
+    else if (i2.type === _.HORIZ_LINE_TO) r2 += (i2.relative ? "h" : "H") + i2.x;
+    else if (i2.type === _.VERT_LINE_TO) r2 += (i2.relative ? "v" : "V") + i2.y;
+    else if (i2.type === _.MOVE_TO) r2 += (i2.relative ? "m" : "M") + i2.x + " " + i2.y;
+    else if (i2.type === _.LINE_TO) r2 += (i2.relative ? "l" : "L") + i2.x + " " + i2.y;
+    else if (i2.type === _.CURVE_TO) r2 += (i2.relative ? "c" : "C") + i2.x1 + " " + i2.y1 + " " + i2.x2 + " " + i2.y2 + " " + i2.x + " " + i2.y;
+    else if (i2.type === _.SMOOTH_CURVE_TO) r2 += (i2.relative ? "s" : "S") + i2.x2 + " " + i2.y2 + " " + i2.x + " " + i2.y;
+    else if (i2.type === _.QUAD_TO) r2 += (i2.relative ? "q" : "Q") + i2.x1 + " " + i2.y1 + " " + i2.x + " " + i2.y;
+    else if (i2.type === _.SMOOTH_QUAD_TO) r2 += (i2.relative ? "t" : "T") + i2.x + " " + i2.y;
+    else {
+      if (i2.type !== _.ARC) throw new Error('Unexpected command type "' + i2.type + '" at index ' + e2 + ".");
+      r2 += (i2.relative ? "a" : "A") + i2.rX + " " + i2.rY + " " + i2.xRot + " " + +i2.lArcFlag + " " + +i2.sweepFlag + " " + i2.x + " " + i2.y;
+    }
+  }
+  return r2;
+}
+function i(t2, r2) {
+  var e2 = t2[0], i2 = t2[1];
+  return [e2 * Math.cos(r2) - i2 * Math.sin(r2), e2 * Math.sin(r2) + i2 * Math.cos(r2)];
+}
+function a() {
+  for (var t2 = [], r2 = 0; r2 < arguments.length; r2++) t2[r2] = arguments[r2];
+  for (var e2 = 0; e2 < t2.length; e2++) if ("number" != typeof t2[e2]) throw new Error("assertNumbers arguments[" + e2 + "] is not a number. " + typeof t2[e2] + " == typeof " + t2[e2]);
+  return true;
+}
+var n = Math.PI;
+function o(t2, r2, e2) {
+  t2.lArcFlag = 0 === t2.lArcFlag ? 0 : 1, t2.sweepFlag = 0 === t2.sweepFlag ? 0 : 1;
+  var a2 = t2.rX, o2 = t2.rY, s2 = t2.x, u2 = t2.y;
+  a2 = Math.abs(t2.rX), o2 = Math.abs(t2.rY);
+  var h2 = i([(r2 - s2) / 2, (e2 - u2) / 2], -t2.xRot / 180 * n), c3 = h2[0], y2 = h2[1], p2 = Math.pow(c3, 2) / Math.pow(a2, 2) + Math.pow(y2, 2) / Math.pow(o2, 2);
+  1 < p2 && (a2 *= Math.sqrt(p2), o2 *= Math.sqrt(p2)), t2.rX = a2, t2.rY = o2;
+  var m3 = Math.pow(a2, 2) * Math.pow(y2, 2) + Math.pow(o2, 2) * Math.pow(c3, 2), O2 = (t2.lArcFlag !== t2.sweepFlag ? 1 : -1) * Math.sqrt(Math.max(0, (Math.pow(a2, 2) * Math.pow(o2, 2) - m3) / m3)), l2 = a2 * y2 / o2 * O2, T2 = -o2 * c3 / a2 * O2, v2 = i([l2, T2], t2.xRot / 180 * n);
+  t2.cX = v2[0] + (r2 + s2) / 2, t2.cY = v2[1] + (e2 + u2) / 2, t2.phi1 = Math.atan2((y2 - T2) / o2, (c3 - l2) / a2), t2.phi2 = Math.atan2((-y2 - T2) / o2, (-c3 - l2) / a2), 0 === t2.sweepFlag && t2.phi2 > t2.phi1 && (t2.phi2 -= 2 * n), 1 === t2.sweepFlag && t2.phi2 < t2.phi1 && (t2.phi2 += 2 * n), t2.phi1 *= 180 / n, t2.phi2 *= 180 / n;
+}
+function s(t2, r2, e2) {
+  a(t2, r2, e2);
+  var i2 = t2 * t2 + r2 * r2 - e2 * e2;
+  if (0 > i2) return [];
+  if (0 === i2) return [[t2 * e2 / (t2 * t2 + r2 * r2), r2 * e2 / (t2 * t2 + r2 * r2)]];
+  var n2 = Math.sqrt(i2);
+  return [[(t2 * e2 + r2 * n2) / (t2 * t2 + r2 * r2), (r2 * e2 - t2 * n2) / (t2 * t2 + r2 * r2)], [(t2 * e2 - r2 * n2) / (t2 * t2 + r2 * r2), (r2 * e2 + t2 * n2) / (t2 * t2 + r2 * r2)]];
+}
+var u;
+var h = Math.PI / 180;
+function c(t2, r2, e2) {
+  return (1 - e2) * t2 + e2 * r2;
+}
+function y(t2, r2, e2, i2) {
+  return t2 + Math.cos(i2 / 180 * n) * r2 + Math.sin(i2 / 180 * n) * e2;
+}
+function p(t2, r2, e2, i2) {
+  var a2 = 1e-6, n2 = r2 - t2, o2 = e2 - r2, s2 = 3 * n2 + 3 * (i2 - e2) - 6 * o2, u2 = 6 * (o2 - n2), h2 = 3 * n2;
+  return Math.abs(s2) < a2 ? [-h2 / u2] : function(t3, r3, e3) {
+    void 0 === e3 && (e3 = 1e-6);
+    var i3 = t3 * t3 / 4 - r3;
+    if (i3 < -e3) return [];
+    if (i3 <= e3) return [-t3 / 2];
+    var a3 = Math.sqrt(i3);
+    return [-t3 / 2 - a3, -t3 / 2 + a3];
+  }(u2 / s2, h2 / s2, a2);
+}
+function m(t2, r2, e2, i2, a2) {
+  var n2 = 1 - a2;
+  return t2 * (n2 * n2 * n2) + r2 * (3 * n2 * n2 * a2) + e2 * (3 * n2 * a2 * a2) + i2 * (a2 * a2 * a2);
+}
+!function(t2) {
+  function r2() {
+    return u2(function(t3, r3, e3) {
+      return t3.relative && (void 0 !== t3.x1 && (t3.x1 += r3), void 0 !== t3.y1 && (t3.y1 += e3), void 0 !== t3.x2 && (t3.x2 += r3), void 0 !== t3.y2 && (t3.y2 += e3), void 0 !== t3.x && (t3.x += r3), void 0 !== t3.y && (t3.y += e3), t3.relative = false), t3;
+    });
+  }
+  function e2() {
+    var t3 = NaN, r3 = NaN, e3 = NaN, i2 = NaN;
+    return u2(function(a2, n3, o2) {
+      return a2.type & _.SMOOTH_CURVE_TO && (a2.type = _.CURVE_TO, t3 = isNaN(t3) ? n3 : t3, r3 = isNaN(r3) ? o2 : r3, a2.x1 = a2.relative ? n3 - t3 : 2 * n3 - t3, a2.y1 = a2.relative ? o2 - r3 : 2 * o2 - r3), a2.type & _.CURVE_TO ? (t3 = a2.relative ? n3 + a2.x2 : a2.x2, r3 = a2.relative ? o2 + a2.y2 : a2.y2) : (t3 = NaN, r3 = NaN), a2.type & _.SMOOTH_QUAD_TO && (a2.type = _.QUAD_TO, e3 = isNaN(e3) ? n3 : e3, i2 = isNaN(i2) ? o2 : i2, a2.x1 = a2.relative ? n3 - e3 : 2 * n3 - e3, a2.y1 = a2.relative ? o2 - i2 : 2 * o2 - i2), a2.type & _.QUAD_TO ? (e3 = a2.relative ? n3 + a2.x1 : a2.x1, i2 = a2.relative ? o2 + a2.y1 : a2.y1) : (e3 = NaN, i2 = NaN), a2;
+    });
+  }
+  function n2() {
+    var t3 = NaN, r3 = NaN;
+    return u2(function(e3, i2, a2) {
+      if (e3.type & _.SMOOTH_QUAD_TO && (e3.type = _.QUAD_TO, t3 = isNaN(t3) ? i2 : t3, r3 = isNaN(r3) ? a2 : r3, e3.x1 = e3.relative ? i2 - t3 : 2 * i2 - t3, e3.y1 = e3.relative ? a2 - r3 : 2 * a2 - r3), e3.type & _.QUAD_TO) {
+        t3 = e3.relative ? i2 + e3.x1 : e3.x1, r3 = e3.relative ? a2 + e3.y1 : e3.y1;
+        var n3 = e3.x1, o2 = e3.y1;
+        e3.type = _.CURVE_TO, e3.x1 = ((e3.relative ? 0 : i2) + 2 * n3) / 3, e3.y1 = ((e3.relative ? 0 : a2) + 2 * o2) / 3, e3.x2 = (e3.x + 2 * n3) / 3, e3.y2 = (e3.y + 2 * o2) / 3;
+      } else t3 = NaN, r3 = NaN;
+      return e3;
+    });
+  }
+  function u2(t3) {
+    var r3 = 0, e3 = 0, i2 = NaN, a2 = NaN;
+    return function(n3) {
+      if (isNaN(i2) && !(n3.type & _.MOVE_TO)) throw new Error("path must start with moveto");
+      var o2 = t3(n3, r3, e3, i2, a2);
+      return n3.type & _.CLOSE_PATH && (r3 = i2, e3 = a2), void 0 !== n3.x && (r3 = n3.relative ? r3 + n3.x : n3.x), void 0 !== n3.y && (e3 = n3.relative ? e3 + n3.y : n3.y), n3.type & _.MOVE_TO && (i2 = r3, a2 = e3), o2;
+    };
+  }
+  function O2(t3, r3, e3, i2, n3, o2) {
+    return a(t3, r3, e3, i2, n3, o2), u2(function(a2, s2, u3, h2) {
+      var c3 = a2.x1, y2 = a2.x2, p2 = a2.relative && !isNaN(h2), m3 = void 0 !== a2.x ? a2.x : p2 ? 0 : s2, O3 = void 0 !== a2.y ? a2.y : p2 ? 0 : u3;
+      function l3(t4) {
+        return t4 * t4;
+      }
+      a2.type & _.HORIZ_LINE_TO && 0 !== r3 && (a2.type = _.LINE_TO, a2.y = a2.relative ? 0 : u3), a2.type & _.VERT_LINE_TO && 0 !== e3 && (a2.type = _.LINE_TO, a2.x = a2.relative ? 0 : s2), void 0 !== a2.x && (a2.x = a2.x * t3 + O3 * e3 + (p2 ? 0 : n3)), void 0 !== a2.y && (a2.y = m3 * r3 + a2.y * i2 + (p2 ? 0 : o2)), void 0 !== a2.x1 && (a2.x1 = a2.x1 * t3 + a2.y1 * e3 + (p2 ? 0 : n3)), void 0 !== a2.y1 && (a2.y1 = c3 * r3 + a2.y1 * i2 + (p2 ? 0 : o2)), void 0 !== a2.x2 && (a2.x2 = a2.x2 * t3 + a2.y2 * e3 + (p2 ? 0 : n3)), void 0 !== a2.y2 && (a2.y2 = y2 * r3 + a2.y2 * i2 + (p2 ? 0 : o2));
+      var T2 = t3 * i2 - r3 * e3;
+      if (void 0 !== a2.xRot && (1 !== t3 || 0 !== r3 || 0 !== e3 || 1 !== i2)) if (0 === T2) delete a2.rX, delete a2.rY, delete a2.xRot, delete a2.lArcFlag, delete a2.sweepFlag, a2.type = _.LINE_TO;
+      else {
+        var v2 = a2.xRot * Math.PI / 180, f2 = Math.sin(v2), N2 = Math.cos(v2), x = 1 / l3(a2.rX), d = 1 / l3(a2.rY), E = l3(N2) * x + l3(f2) * d, A = 2 * f2 * N2 * (x - d), C = l3(f2) * x + l3(N2) * d, M = E * i2 * i2 - A * r3 * i2 + C * r3 * r3, R = A * (t3 * i2 + r3 * e3) - 2 * (E * e3 * i2 + C * t3 * r3), g = E * e3 * e3 - A * t3 * e3 + C * t3 * t3, I = (Math.atan2(R, M - g) + Math.PI) % Math.PI / 2, S = Math.sin(I), L = Math.cos(I);
+        a2.rX = Math.abs(T2) / Math.sqrt(M * l3(L) + R * S * L + g * l3(S)), a2.rY = Math.abs(T2) / Math.sqrt(M * l3(S) - R * S * L + g * l3(L)), a2.xRot = 180 * I / Math.PI;
+      }
+      return void 0 !== a2.sweepFlag && 0 > T2 && (a2.sweepFlag = +!a2.sweepFlag), a2;
+    });
+  }
+  function l2() {
+    return function(t3) {
+      var r3 = {};
+      for (var e3 in t3) r3[e3] = t3[e3];
+      return r3;
+    };
+  }
+  t2.ROUND = function(t3) {
+    function r3(r4) {
+      return Math.round(r4 * t3) / t3;
+    }
+    return void 0 === t3 && (t3 = 1e13), a(t3), function(t4) {
+      return void 0 !== t4.x1 && (t4.x1 = r3(t4.x1)), void 0 !== t4.y1 && (t4.y1 = r3(t4.y1)), void 0 !== t4.x2 && (t4.x2 = r3(t4.x2)), void 0 !== t4.y2 && (t4.y2 = r3(t4.y2)), void 0 !== t4.x && (t4.x = r3(t4.x)), void 0 !== t4.y && (t4.y = r3(t4.y)), void 0 !== t4.rX && (t4.rX = r3(t4.rX)), void 0 !== t4.rY && (t4.rY = r3(t4.rY)), t4;
+    };
+  }, t2.TO_ABS = r2, t2.TO_REL = function() {
+    return u2(function(t3, r3, e3) {
+      return t3.relative || (void 0 !== t3.x1 && (t3.x1 -= r3), void 0 !== t3.y1 && (t3.y1 -= e3), void 0 !== t3.x2 && (t3.x2 -= r3), void 0 !== t3.y2 && (t3.y2 -= e3), void 0 !== t3.x && (t3.x -= r3), void 0 !== t3.y && (t3.y -= e3), t3.relative = true), t3;
+    });
+  }, t2.NORMALIZE_HVZ = function(t3, r3, e3) {
+    return void 0 === t3 && (t3 = true), void 0 === r3 && (r3 = true), void 0 === e3 && (e3 = true), u2(function(i2, a2, n3, o2, s2) {
+      if (isNaN(o2) && !(i2.type & _.MOVE_TO)) throw new Error("path must start with moveto");
+      return r3 && i2.type & _.HORIZ_LINE_TO && (i2.type = _.LINE_TO, i2.y = i2.relative ? 0 : n3), e3 && i2.type & _.VERT_LINE_TO && (i2.type = _.LINE_TO, i2.x = i2.relative ? 0 : a2), t3 && i2.type & _.CLOSE_PATH && (i2.type = _.LINE_TO, i2.x = i2.relative ? o2 - a2 : o2, i2.y = i2.relative ? s2 - n3 : s2), i2.type & _.ARC && (0 === i2.rX || 0 === i2.rY) && (i2.type = _.LINE_TO, delete i2.rX, delete i2.rY, delete i2.xRot, delete i2.lArcFlag, delete i2.sweepFlag), i2;
+    });
+  }, t2.NORMALIZE_ST = e2, t2.QT_TO_C = n2, t2.INFO = u2, t2.SANITIZE = function(t3) {
+    void 0 === t3 && (t3 = 0), a(t3);
+    var r3 = NaN, e3 = NaN, i2 = NaN, n3 = NaN;
+    return u2(function(a2, o2, s2, u3, h2) {
+      var c3 = Math.abs, y2 = false, p2 = 0, m3 = 0;
+      if (a2.type & _.SMOOTH_CURVE_TO && (p2 = isNaN(r3) ? 0 : o2 - r3, m3 = isNaN(e3) ? 0 : s2 - e3), a2.type & (_.CURVE_TO | _.SMOOTH_CURVE_TO) ? (r3 = a2.relative ? o2 + a2.x2 : a2.x2, e3 = a2.relative ? s2 + a2.y2 : a2.y2) : (r3 = NaN, e3 = NaN), a2.type & _.SMOOTH_QUAD_TO ? (i2 = isNaN(i2) ? o2 : 2 * o2 - i2, n3 = isNaN(n3) ? s2 : 2 * s2 - n3) : a2.type & _.QUAD_TO ? (i2 = a2.relative ? o2 + a2.x1 : a2.x1, n3 = a2.relative ? s2 + a2.y1 : a2.y2) : (i2 = NaN, n3 = NaN), a2.type & _.LINE_COMMANDS || a2.type & _.ARC && (0 === a2.rX || 0 === a2.rY || !a2.lArcFlag) || a2.type & _.CURVE_TO || a2.type & _.SMOOTH_CURVE_TO || a2.type & _.QUAD_TO || a2.type & _.SMOOTH_QUAD_TO) {
+        var O3 = void 0 === a2.x ? 0 : a2.relative ? a2.x : a2.x - o2, l3 = void 0 === a2.y ? 0 : a2.relative ? a2.y : a2.y - s2;
+        p2 = isNaN(i2) ? void 0 === a2.x1 ? p2 : a2.relative ? a2.x : a2.x1 - o2 : i2 - o2, m3 = isNaN(n3) ? void 0 === a2.y1 ? m3 : a2.relative ? a2.y : a2.y1 - s2 : n3 - s2;
+        var T2 = void 0 === a2.x2 ? 0 : a2.relative ? a2.x : a2.x2 - o2, v2 = void 0 === a2.y2 ? 0 : a2.relative ? a2.y : a2.y2 - s2;
+        c3(O3) <= t3 && c3(l3) <= t3 && c3(p2) <= t3 && c3(m3) <= t3 && c3(T2) <= t3 && c3(v2) <= t3 && (y2 = true);
+      }
+      return a2.type & _.CLOSE_PATH && c3(o2 - u3) <= t3 && c3(s2 - h2) <= t3 && (y2 = true), y2 ? [] : a2;
+    });
+  }, t2.MATRIX = O2, t2.ROTATE = function(t3, r3, e3) {
+    void 0 === r3 && (r3 = 0), void 0 === e3 && (e3 = 0), a(t3, r3, e3);
+    var i2 = Math.sin(t3), n3 = Math.cos(t3);
+    return O2(n3, i2, -i2, n3, r3 - r3 * n3 + e3 * i2, e3 - r3 * i2 - e3 * n3);
+  }, t2.TRANSLATE = function(t3, r3) {
+    return void 0 === r3 && (r3 = 0), a(t3, r3), O2(1, 0, 0, 1, t3, r3);
+  }, t2.SCALE = function(t3, r3) {
+    return void 0 === r3 && (r3 = t3), a(t3, r3), O2(t3, 0, 0, r3, 0, 0);
+  }, t2.SKEW_X = function(t3) {
+    return a(t3), O2(1, 0, Math.atan(t3), 1, 0, 0);
+  }, t2.SKEW_Y = function(t3) {
+    return a(t3), O2(1, Math.atan(t3), 0, 1, 0, 0);
+  }, t2.X_AXIS_SYMMETRY = function(t3) {
+    return void 0 === t3 && (t3 = 0), a(t3), O2(-1, 0, 0, 1, t3, 0);
+  }, t2.Y_AXIS_SYMMETRY = function(t3) {
+    return void 0 === t3 && (t3 = 0), a(t3), O2(1, 0, 0, -1, 0, t3);
+  }, t2.A_TO_C = function() {
+    return u2(function(t3, r3, e3) {
+      return _.ARC === t3.type ? function(t4, r4, e4) {
+        var a2, n3, s2, u3;
+        t4.cX || o(t4, r4, e4);
+        for (var y2 = Math.min(t4.phi1, t4.phi2), p2 = Math.max(t4.phi1, t4.phi2) - y2, m3 = Math.ceil(p2 / 90), O3 = new Array(m3), l3 = r4, T2 = e4, v2 = 0; v2 < m3; v2++) {
+          var f2 = c(t4.phi1, t4.phi2, v2 / m3), N2 = c(t4.phi1, t4.phi2, (v2 + 1) / m3), x = N2 - f2, d = 4 / 3 * Math.tan(x * h / 4), E = [Math.cos(f2 * h) - d * Math.sin(f2 * h), Math.sin(f2 * h) + d * Math.cos(f2 * h)], A = E[0], C = E[1], M = [Math.cos(N2 * h), Math.sin(N2 * h)], R = M[0], g = M[1], I = [R + d * Math.sin(N2 * h), g - d * Math.cos(N2 * h)], S = I[0], L = I[1];
+          O3[v2] = { relative: t4.relative, type: _.CURVE_TO };
+          var H = function(r5, e5) {
+            var a3 = i([r5 * t4.rX, e5 * t4.rY], t4.xRot), n4 = a3[0], o2 = a3[1];
+            return [t4.cX + n4, t4.cY + o2];
+          };
+          a2 = H(A, C), O3[v2].x1 = a2[0], O3[v2].y1 = a2[1], n3 = H(S, L), O3[v2].x2 = n3[0], O3[v2].y2 = n3[1], s2 = H(R, g), O3[v2].x = s2[0], O3[v2].y = s2[1], t4.relative && (O3[v2].x1 -= l3, O3[v2].y1 -= T2, O3[v2].x2 -= l3, O3[v2].y2 -= T2, O3[v2].x -= l3, O3[v2].y -= T2), l3 = (u3 = [O3[v2].x, O3[v2].y])[0], T2 = u3[1];
+        }
+        return O3;
+      }(t3, t3.relative ? 0 : r3, t3.relative ? 0 : e3) : t3;
+    });
+  }, t2.ANNOTATE_ARCS = function() {
+    return u2(function(t3, r3, e3) {
+      return t3.relative && (r3 = 0, e3 = 0), _.ARC === t3.type && o(t3, r3, e3), t3;
+    });
+  }, t2.CLONE = l2, t2.CALCULATE_BOUNDS = function() {
+    var t3 = function(t4) {
+      var r3 = {};
+      for (var e3 in t4) r3[e3] = t4[e3];
+      return r3;
+    }, i2 = r2(), a2 = n2(), h2 = e2(), c3 = u2(function(r3, e3, n3) {
+      var u3 = h2(a2(i2(t3(r3))));
+      function O3(t4) {
+        t4 > c3.maxX && (c3.maxX = t4), t4 < c3.minX && (c3.minX = t4);
+      }
+      function l3(t4) {
+        t4 > c3.maxY && (c3.maxY = t4), t4 < c3.minY && (c3.minY = t4);
+      }
+      if (u3.type & _.DRAWING_COMMANDS && (O3(e3), l3(n3)), u3.type & _.HORIZ_LINE_TO && O3(u3.x), u3.type & _.VERT_LINE_TO && l3(u3.y), u3.type & _.LINE_TO && (O3(u3.x), l3(u3.y)), u3.type & _.CURVE_TO) {
+        O3(u3.x), l3(u3.y);
+        for (var T2 = 0, v2 = p(e3, u3.x1, u3.x2, u3.x); T2 < v2.length; T2++) {
+          0 < (w = v2[T2]) && 1 > w && O3(m(e3, u3.x1, u3.x2, u3.x, w));
+        }
+        for (var f2 = 0, N2 = p(n3, u3.y1, u3.y2, u3.y); f2 < N2.length; f2++) {
+          0 < (w = N2[f2]) && 1 > w && l3(m(n3, u3.y1, u3.y2, u3.y, w));
+        }
+      }
+      if (u3.type & _.ARC) {
+        O3(u3.x), l3(u3.y), o(u3, e3, n3);
+        for (var x = u3.xRot / 180 * Math.PI, d = Math.cos(x) * u3.rX, E = Math.sin(x) * u3.rX, A = -Math.sin(x) * u3.rY, C = Math.cos(x) * u3.rY, M = u3.phi1 < u3.phi2 ? [u3.phi1, u3.phi2] : -180 > u3.phi2 ? [u3.phi2 + 360, u3.phi1 + 360] : [u3.phi2, u3.phi1], R = M[0], g = M[1], I = function(t4) {
+          var r4 = t4[0], e4 = t4[1], i3 = 180 * Math.atan2(e4, r4) / Math.PI;
+          return i3 < R ? i3 + 360 : i3;
+        }, S = 0, L = s(A, -d, 0).map(I); S < L.length; S++) {
+          (w = L[S]) > R && w < g && O3(y(u3.cX, d, A, w));
+        }
+        for (var H = 0, U = s(C, -E, 0).map(I); H < U.length; H++) {
+          var w;
+          (w = U[H]) > R && w < g && l3(y(u3.cY, E, C, w));
+        }
+      }
+      return r3;
+    });
+    return c3.minX = 1 / 0, c3.maxX = -1 / 0, c3.minY = 1 / 0, c3.maxY = -1 / 0, c3;
+  };
+}(u || (u = {}));
+var O;
+var l = function() {
+  function t2() {
+  }
+  return t2.prototype.round = function(t3) {
+    return this.transform(u.ROUND(t3));
+  }, t2.prototype.toAbs = function() {
+    return this.transform(u.TO_ABS());
+  }, t2.prototype.toRel = function() {
+    return this.transform(u.TO_REL());
+  }, t2.prototype.normalizeHVZ = function(t3, r2, e2) {
+    return this.transform(u.NORMALIZE_HVZ(t3, r2, e2));
+  }, t2.prototype.normalizeST = function() {
+    return this.transform(u.NORMALIZE_ST());
+  }, t2.prototype.qtToC = function() {
+    return this.transform(u.QT_TO_C());
+  }, t2.prototype.aToC = function() {
+    return this.transform(u.A_TO_C());
+  }, t2.prototype.sanitize = function(t3) {
+    return this.transform(u.SANITIZE(t3));
+  }, t2.prototype.translate = function(t3, r2) {
+    return this.transform(u.TRANSLATE(t3, r2));
+  }, t2.prototype.scale = function(t3, r2) {
+    return this.transform(u.SCALE(t3, r2));
+  }, t2.prototype.rotate = function(t3, r2, e2) {
+    return this.transform(u.ROTATE(t3, r2, e2));
+  }, t2.prototype.matrix = function(t3, r2, e2, i2, a2, n2) {
+    return this.transform(u.MATRIX(t3, r2, e2, i2, a2, n2));
+  }, t2.prototype.skewX = function(t3) {
+    return this.transform(u.SKEW_X(t3));
+  }, t2.prototype.skewY = function(t3) {
+    return this.transform(u.SKEW_Y(t3));
+  }, t2.prototype.xSymmetry = function(t3) {
+    return this.transform(u.X_AXIS_SYMMETRY(t3));
+  }, t2.prototype.ySymmetry = function(t3) {
+    return this.transform(u.Y_AXIS_SYMMETRY(t3));
+  }, t2.prototype.annotateArcs = function() {
+    return this.transform(u.ANNOTATE_ARCS());
+  }, t2;
+}();
+var T = function(t2) {
+  return " " === t2 || "	" === t2 || "\r" === t2 || "\n" === t2;
+};
+var v = function(t2) {
+  return "0".charCodeAt(0) <= t2.charCodeAt(0) && t2.charCodeAt(0) <= "9".charCodeAt(0);
+};
+var f = function(t2) {
+  function e2() {
+    var r2 = t2.call(this) || this;
+    return r2.curNumber = "", r2.curCommandType = -1, r2.curCommandRelative = false, r2.canParseCommandOrComma = true, r2.curNumberHasExp = false, r2.curNumberHasExpDigits = false, r2.curNumberHasDecimal = false, r2.curArgs = [], r2;
+  }
+  return r(e2, t2), e2.prototype.finish = function(t3) {
+    if (void 0 === t3 && (t3 = []), this.parse(" ", t3), 0 !== this.curArgs.length || !this.canParseCommandOrComma) throw new SyntaxError("Unterminated command at the path end.");
+    return t3;
+  }, e2.prototype.parse = function(t3, r2) {
+    var e3 = this;
+    void 0 === r2 && (r2 = []);
+    for (var i2 = function(t4) {
+      r2.push(t4), e3.curArgs.length = 0, e3.canParseCommandOrComma = true;
+    }, a2 = 0; a2 < t3.length; a2++) {
+      var n2 = t3[a2], o2 = !(this.curCommandType !== _.ARC || 3 !== this.curArgs.length && 4 !== this.curArgs.length || 1 !== this.curNumber.length || "0" !== this.curNumber && "1" !== this.curNumber), s2 = v(n2) && ("0" === this.curNumber && "0" === n2 || o2);
+      if (!v(n2) || s2) if ("e" !== n2 && "E" !== n2) if ("-" !== n2 && "+" !== n2 || !this.curNumberHasExp || this.curNumberHasExpDigits) if ("." !== n2 || this.curNumberHasExp || this.curNumberHasDecimal || o2) {
+        if (this.curNumber && -1 !== this.curCommandType) {
+          var u2 = Number(this.curNumber);
+          if (isNaN(u2)) throw new SyntaxError("Invalid number ending at " + a2);
+          if (this.curCommandType === _.ARC) {
+            if (0 === this.curArgs.length || 1 === this.curArgs.length) {
+              if (0 > u2) throw new SyntaxError('Expected positive number, got "' + u2 + '" at index "' + a2 + '"');
+            } else if ((3 === this.curArgs.length || 4 === this.curArgs.length) && "0" !== this.curNumber && "1" !== this.curNumber) throw new SyntaxError('Expected a flag, got "' + this.curNumber + '" at index "' + a2 + '"');
+          }
+          this.curArgs.push(u2), this.curArgs.length === N[this.curCommandType] && (_.HORIZ_LINE_TO === this.curCommandType ? i2({ type: _.HORIZ_LINE_TO, relative: this.curCommandRelative, x: u2 }) : _.VERT_LINE_TO === this.curCommandType ? i2({ type: _.VERT_LINE_TO, relative: this.curCommandRelative, y: u2 }) : this.curCommandType === _.MOVE_TO || this.curCommandType === _.LINE_TO || this.curCommandType === _.SMOOTH_QUAD_TO ? (i2({ type: this.curCommandType, relative: this.curCommandRelative, x: this.curArgs[0], y: this.curArgs[1] }), _.MOVE_TO === this.curCommandType && (this.curCommandType = _.LINE_TO)) : this.curCommandType === _.CURVE_TO ? i2({ type: _.CURVE_TO, relative: this.curCommandRelative, x1: this.curArgs[0], y1: this.curArgs[1], x2: this.curArgs[2], y2: this.curArgs[3], x: this.curArgs[4], y: this.curArgs[5] }) : this.curCommandType === _.SMOOTH_CURVE_TO ? i2({ type: _.SMOOTH_CURVE_TO, relative: this.curCommandRelative, x2: this.curArgs[0], y2: this.curArgs[1], x: this.curArgs[2], y: this.curArgs[3] }) : this.curCommandType === _.QUAD_TO ? i2({ type: _.QUAD_TO, relative: this.curCommandRelative, x1: this.curArgs[0], y1: this.curArgs[1], x: this.curArgs[2], y: this.curArgs[3] }) : this.curCommandType === _.ARC && i2({ type: _.ARC, relative: this.curCommandRelative, rX: this.curArgs[0], rY: this.curArgs[1], xRot: this.curArgs[2], lArcFlag: this.curArgs[3], sweepFlag: this.curArgs[4], x: this.curArgs[5], y: this.curArgs[6] })), this.curNumber = "", this.curNumberHasExpDigits = false, this.curNumberHasExp = false, this.curNumberHasDecimal = false, this.canParseCommandOrComma = true;
+        }
+        if (!T(n2)) if ("," === n2 && this.canParseCommandOrComma) this.canParseCommandOrComma = false;
+        else if ("+" !== n2 && "-" !== n2 && "." !== n2) if (s2) this.curNumber = n2, this.curNumberHasDecimal = false;
+        else {
+          if (0 !== this.curArgs.length) throw new SyntaxError("Unterminated command at index " + a2 + ".");
+          if (!this.canParseCommandOrComma) throw new SyntaxError('Unexpected character "' + n2 + '" at index ' + a2 + ". Command cannot follow comma");
+          if (this.canParseCommandOrComma = false, "z" !== n2 && "Z" !== n2) if ("h" === n2 || "H" === n2) this.curCommandType = _.HORIZ_LINE_TO, this.curCommandRelative = "h" === n2;
+          else if ("v" === n2 || "V" === n2) this.curCommandType = _.VERT_LINE_TO, this.curCommandRelative = "v" === n2;
+          else if ("m" === n2 || "M" === n2) this.curCommandType = _.MOVE_TO, this.curCommandRelative = "m" === n2;
+          else if ("l" === n2 || "L" === n2) this.curCommandType = _.LINE_TO, this.curCommandRelative = "l" === n2;
+          else if ("c" === n2 || "C" === n2) this.curCommandType = _.CURVE_TO, this.curCommandRelative = "c" === n2;
+          else if ("s" === n2 || "S" === n2) this.curCommandType = _.SMOOTH_CURVE_TO, this.curCommandRelative = "s" === n2;
+          else if ("q" === n2 || "Q" === n2) this.curCommandType = _.QUAD_TO, this.curCommandRelative = "q" === n2;
+          else if ("t" === n2 || "T" === n2) this.curCommandType = _.SMOOTH_QUAD_TO, this.curCommandRelative = "t" === n2;
+          else {
+            if ("a" !== n2 && "A" !== n2) throw new SyntaxError('Unexpected character "' + n2 + '" at index ' + a2 + ".");
+            this.curCommandType = _.ARC, this.curCommandRelative = "a" === n2;
+          }
+          else r2.push({ type: _.CLOSE_PATH }), this.canParseCommandOrComma = true, this.curCommandType = -1;
+        }
+        else this.curNumber = n2, this.curNumberHasDecimal = "." === n2;
+      } else this.curNumber += n2, this.curNumberHasDecimal = true;
+      else this.curNumber += n2;
+      else this.curNumber += n2, this.curNumberHasExp = true;
+      else this.curNumber += n2, this.curNumberHasExpDigits = this.curNumberHasExp;
+    }
+    return r2;
+  }, e2.prototype.transform = function(t3) {
+    return Object.create(this, { parse: { value: function(r2, e3) {
+      void 0 === e3 && (e3 = []);
+      for (var i2 = 0, a2 = Object.getPrototypeOf(this).parse.call(this, r2); i2 < a2.length; i2++) {
+        var n2 = a2[i2], o2 = t3(n2);
+        Array.isArray(o2) ? e3.push.apply(e3, o2) : e3.push(o2);
+      }
+      return e3;
+    } } });
+  }, e2;
+}(l);
+var _ = function(t2) {
+  function i2(r2) {
+    var e2 = t2.call(this) || this;
+    return e2.commands = "string" == typeof r2 ? i2.parse(r2) : r2, e2;
+  }
+  return r(i2, t2), i2.prototype.encode = function() {
+    return i2.encode(this.commands);
+  }, i2.prototype.getBounds = function() {
+    var t3 = u.CALCULATE_BOUNDS();
+    return this.transform(t3), t3;
+  }, i2.prototype.transform = function(t3) {
+    for (var r2 = [], e2 = 0, i3 = this.commands; e2 < i3.length; e2++) {
+      var a2 = t3(i3[e2]);
+      Array.isArray(a2) ? r2.push.apply(r2, a2) : r2.push(a2);
+    }
+    return this.commands = r2, this;
+  }, i2.encode = function(t3) {
+    return e(t3);
+  }, i2.parse = function(t3) {
+    var r2 = new f(), e2 = [];
+    return r2.parse(t3, e2), r2.finish(e2), e2;
+  }, i2.CLOSE_PATH = 1, i2.MOVE_TO = 2, i2.HORIZ_LINE_TO = 4, i2.VERT_LINE_TO = 8, i2.LINE_TO = 16, i2.CURVE_TO = 32, i2.SMOOTH_CURVE_TO = 64, i2.QUAD_TO = 128, i2.SMOOTH_QUAD_TO = 256, i2.ARC = 512, i2.LINE_COMMANDS = i2.LINE_TO | i2.HORIZ_LINE_TO | i2.VERT_LINE_TO, i2.DRAWING_COMMANDS = i2.HORIZ_LINE_TO | i2.VERT_LINE_TO | i2.LINE_TO | i2.CURVE_TO | i2.SMOOTH_CURVE_TO | i2.QUAD_TO | i2.SMOOTH_QUAD_TO | i2.ARC, i2;
+}(l);
+var N = ((O = {})[_.MOVE_TO] = 2, O[_.LINE_TO] = 2, O[_.HORIZ_LINE_TO] = 1, O[_.VERT_LINE_TO] = 1, O[_.CLOSE_PATH] = 0, O[_.QUAD_TO] = 4, O[_.SMOOTH_QUAD_TO] = 2, O[_.CURVE_TO] = 6, O[_.SMOOTH_CURVE_TO] = 4, O[_.ARC] = 7, O);
+
+// node_modules/core-js/modules/es.regexp.to-string.js
+var PROPER_FUNCTION_NAME = require_function_name().PROPER;
+var defineBuiltIn = require_define_built_in();
+var anObject4 = require_an_object();
+var $toString = require_to_string();
+var fails3 = require_fails();
+var getRegExpFlags = require_regexp_get_flags();
+var TO_STRING = "toString";
+var RegExpPrototype = RegExp.prototype;
+var nativeToString = RegExpPrototype[TO_STRING];
+var NOT_GENERIC = fails3(function() {
+  return nativeToString.call({ source: "a", flags: "b" }) !== "/a/b";
+});
+var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;
+if (NOT_GENERIC || INCORRECT_NAME) {
+  defineBuiltIn(RegExpPrototype, TO_STRING, function toString7() {
+    var R = anObject4(this);
+    var pattern = $toString(R.source);
+    var flags = $toString(getRegExpFlags(R));
+    return "/" + pattern + "/" + flags;
+  }, { unsafe: true });
+}
+
+// node_modules/stackblur-canvas/dist/stackblur-es.js
+function _typeof2(obj) {
+  "@babel/helpers - typeof";
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+    _typeof2 = function(obj2) {
+      return typeof obj2;
+    };
+  } else {
+    _typeof2 = function(obj2) {
+      return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
+    };
+  }
+  return _typeof2(obj);
+}
+function _classCallCheck(instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
+  }
+}
+var mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];
+var shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];
+function getImageDataFromCanvas(canvas, topX, topY, width, height) {
+  if (typeof canvas === "string") {
+    canvas = document.getElementById(canvas);
+  }
+  if (!canvas || _typeof2(canvas) !== "object" || !("getContext" in canvas)) {
+    throw new TypeError("Expecting canvas with `getContext` method in processCanvasRGB(A) calls!");
+  }
+  var context = canvas.getContext("2d");
+  try {
+    return context.getImageData(topX, topY, width, height);
+  } catch (e2) {
+    throw new Error("unable to access image data: " + e2);
+  }
+}
+function processCanvasRGBA(canvas, topX, topY, width, height, radius) {
+  if (isNaN(radius) || radius < 1) {
+    return;
+  }
+  radius |= 0;
+  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);
+  imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);
+  canvas.getContext("2d").putImageData(imageData, topX, topY);
+}
+function processImageDataRGBA(imageData, topX, topY, width, height, radius) {
+  var pixels = imageData.data;
+  var div = 2 * radius + 1;
+  var widthMinus1 = width - 1;
+  var heightMinus1 = height - 1;
+  var radiusPlus1 = radius + 1;
+  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
+  var stackStart = new BlurStack();
+  var stack = stackStart;
+  var stackEnd;
+  for (var i2 = 1; i2 < div; i2++) {
+    stack = stack.next = new BlurStack();
+    if (i2 === radiusPlus1) {
+      stackEnd = stack;
+    }
+  }
+  stack.next = stackStart;
+  var stackIn = null, stackOut = null, yw = 0, yi = 0;
+  var mulSum = mulTable[radius];
+  var shgSum = shgTable[radius];
+  for (var y2 = 0; y2 < height; y2++) {
+    stack = stackStart;
+    var pr = pixels[yi], pg = pixels[yi + 1], pb = pixels[yi + 2], pa = pixels[yi + 3];
+    for (var _i = 0; _i < radiusPlus1; _i++) {
+      stack.r = pr;
+      stack.g = pg;
+      stack.b = pb;
+      stack.a = pa;
+      stack = stack.next;
+    }
+    var rInSum = 0, gInSum = 0, bInSum = 0, aInSum = 0, rOutSum = radiusPlus1 * pr, gOutSum = radiusPlus1 * pg, bOutSum = radiusPlus1 * pb, aOutSum = radiusPlus1 * pa, rSum = sumFactor * pr, gSum = sumFactor * pg, bSum = sumFactor * pb, aSum = sumFactor * pa;
+    for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {
+      var p2 = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);
+      var r2 = pixels[p2], g = pixels[p2 + 1], b = pixels[p2 + 2], a2 = pixels[p2 + 3];
+      var rbs = radiusPlus1 - _i2;
+      rSum += (stack.r = r2) * rbs;
+      gSum += (stack.g = g) * rbs;
+      bSum += (stack.b = b) * rbs;
+      aSum += (stack.a = a2) * rbs;
+      rInSum += r2;
+      gInSum += g;
+      bInSum += b;
+      aInSum += a2;
+      stack = stack.next;
+    }
+    stackIn = stackStart;
+    stackOut = stackEnd;
+    for (var x = 0; x < width; x++) {
+      var paInitial = aSum * mulSum >>> shgSum;
+      pixels[yi + 3] = paInitial;
+      if (paInitial !== 0) {
+        var _a2 = 255 / paInitial;
+        pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;
+        pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;
+        pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;
+      } else {
+        pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;
+      }
+      rSum -= rOutSum;
+      gSum -= gOutSum;
+      bSum -= bOutSum;
+      aSum -= aOutSum;
+      rOutSum -= stackIn.r;
+      gOutSum -= stackIn.g;
+      bOutSum -= stackIn.b;
+      aOutSum -= stackIn.a;
+      var _p = x + radius + 1;
+      _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;
+      rInSum += stackIn.r = pixels[_p];
+      gInSum += stackIn.g = pixels[_p + 1];
+      bInSum += stackIn.b = pixels[_p + 2];
+      aInSum += stackIn.a = pixels[_p + 3];
+      rSum += rInSum;
+      gSum += gInSum;
+      bSum += bInSum;
+      aSum += aInSum;
+      stackIn = stackIn.next;
+      var _stackOut = stackOut, _r = _stackOut.r, _g = _stackOut.g, _b = _stackOut.b, _a = _stackOut.a;
+      rOutSum += _r;
+      gOutSum += _g;
+      bOutSum += _b;
+      aOutSum += _a;
+      rInSum -= _r;
+      gInSum -= _g;
+      bInSum -= _b;
+      aInSum -= _a;
+      stackOut = stackOut.next;
+      yi += 4;
+    }
+    yw += width;
+  }
+  for (var _x = 0; _x < width; _x++) {
+    yi = _x << 2;
+    var _pr = pixels[yi], _pg = pixels[yi + 1], _pb = pixels[yi + 2], _pa = pixels[yi + 3], _rOutSum = radiusPlus1 * _pr, _gOutSum = radiusPlus1 * _pg, _bOutSum = radiusPlus1 * _pb, _aOutSum = radiusPlus1 * _pa, _rSum = sumFactor * _pr, _gSum = sumFactor * _pg, _bSum = sumFactor * _pb, _aSum = sumFactor * _pa;
+    stack = stackStart;
+    for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {
+      stack.r = _pr;
+      stack.g = _pg;
+      stack.b = _pb;
+      stack.a = _pa;
+      stack = stack.next;
+    }
+    var yp = width;
+    var _gInSum = 0, _bInSum = 0, _aInSum = 0, _rInSum = 0;
+    for (var _i4 = 1; _i4 <= radius; _i4++) {
+      yi = yp + _x << 2;
+      var _rbs = radiusPlus1 - _i4;
+      _rSum += (stack.r = _pr = pixels[yi]) * _rbs;
+      _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;
+      _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;
+      _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;
+      _rInSum += _pr;
+      _gInSum += _pg;
+      _bInSum += _pb;
+      _aInSum += _pa;
+      stack = stack.next;
+      if (_i4 < heightMinus1) {
+        yp += width;
+      }
+    }
+    yi = _x;
+    stackIn = stackStart;
+    stackOut = stackEnd;
+    for (var _y = 0; _y < height; _y++) {
+      var _p2 = yi << 2;
+      pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;
+      if (_pa > 0) {
+        _pa = 255 / _pa;
+        pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;
+        pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;
+        pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;
+      } else {
+        pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;
+      }
+      _rSum -= _rOutSum;
+      _gSum -= _gOutSum;
+      _bSum -= _bOutSum;
+      _aSum -= _aOutSum;
+      _rOutSum -= stackIn.r;
+      _gOutSum -= stackIn.g;
+      _bOutSum -= stackIn.b;
+      _aOutSum -= stackIn.a;
+      _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;
+      _rSum += _rInSum += stackIn.r = pixels[_p2];
+      _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];
+      _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];
+      _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];
+      stackIn = stackIn.next;
+      _rOutSum += _pr = stackOut.r;
+      _gOutSum += _pg = stackOut.g;
+      _bOutSum += _pb = stackOut.b;
+      _aOutSum += _pa = stackOut.a;
+      _rInSum -= _pr;
+      _gInSum -= _pg;
+      _bInSum -= _pb;
+      _aInSum -= _pa;
+      stackOut = stackOut.next;
+      yi += width;
+    }
+  }
+  return imageData;
+}
+var BlurStack = (
+  /**
+   * Set properties.
+   */
+  function BlurStack2() {
+    _classCallCheck(this, BlurStack2);
+    this.r = 0;
+    this.g = 0;
+    this.b = 0;
+    this.a = 0;
+    this.next = null;
+  }
+);
+
+// node_modules/canvg/lib/index.es.js
+function offscreen() {
+  var {
+    DOMParser: DOMParserFallback
+  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+  var preset = {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser: DOMParserFallback,
+    createCanvas(width, height) {
+      return new OffscreenCanvas(width, height);
+    },
+    createImage(url) {
+      return _asyncToGenerator(function* () {
+        var response = yield fetch(url);
+        var blob = yield response.blob();
+        var img = yield createImageBitmap(blob);
+        return img;
+      })();
+    }
+  };
+  if (typeof DOMParser !== "undefined" || typeof DOMParserFallback === "undefined") {
+    Reflect.deleteProperty(preset, "DOMParser");
+  }
+  return preset;
+}
+function node(_ref) {
+  var {
+    DOMParser: DOMParser2,
+    canvas,
+    fetch: fetch2
+  } = _ref;
+  return {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser: DOMParser2,
+    fetch: fetch2,
+    createCanvas: canvas.createCanvas,
+    createImage: canvas.loadImage
+  };
+}
+var index = Object.freeze({
+  __proto__: null,
+  offscreen,
+  node
+});
+function compressSpaces(str) {
+  return str.replace(/(?!\u3000)\s+/gm, " ");
+}
+function trimLeft(str) {
+  return str.replace(/^[\n \t]+/, "");
+}
+function trimRight(str) {
+  return str.replace(/[\n \t]+$/, "");
+}
+function toNumbers(str) {
+  var matches = (str || "").match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm) || [];
+  return matches.map(parseFloat);
+}
+var allUppercase = /^[A-Z-]+$/;
+function normalizeAttributeName(name) {
+  if (allUppercase.test(name)) {
+    return name.toLowerCase();
+  }
+  return name;
+}
+function parseExternalUrl(url) {
+  var urlMatch = /url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(url) || [];
+  return urlMatch[2] || urlMatch[3] || urlMatch[4];
+}
+function normalizeColor(color) {
+  if (!color.startsWith("rgb")) {
+    return color;
+  }
+  var rgbParts = 3;
+  var normalizedColor = color.replace(/\d+(\.\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);
+  return normalizedColor;
+}
+var attributeRegex = /(\[[^\]]+\])/g;
+var idRegex = /(#[^\s+>~.[:]+)/g;
+var classRegex = /(\.[^\s+>~.[:]+)/g;
+var pseudoElementRegex = /(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;
+var pseudoClassWithBracketsRegex = /(:[\w-]+\([^)]*\))/gi;
+var pseudoClassRegex = /(:[^\s+>~.[:]+)/g;
+var elementRegex = /([^\s+>~.[:]+)/g;
+function findSelectorMatch(selector, regex) {
+  var matches = regex.exec(selector);
+  if (!matches) {
+    return [selector, 0];
+  }
+  return [selector.replace(regex, " "), matches.length];
+}
+function getSelectorSpecificity(selector) {
+  var specificity = [0, 0, 0];
+  var currentSelector = selector.replace(/:not\(([^)]*)\)/g, "     $1 ").replace(/{[\s\S]*/gm, " ");
+  var delta = 0;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);
+  specificity[1] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);
+  specificity[0] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);
+  specificity[1] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);
+  specificity[2] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);
+  specificity[1] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);
+  specificity[1] += delta;
+  currentSelector = currentSelector.replace(/[*\s+>~]/g, " ").replace(/[#.]/g, " ");
+  [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex);
+  specificity[2] += delta;
+  return specificity.join("");
+}
+var PSEUDO_ZERO = 1e-8;
+function vectorMagnitude(v2) {
+  return Math.sqrt(Math.pow(v2[0], 2) + Math.pow(v2[1], 2));
+}
+function vectorsRatio(u2, v2) {
+  return (u2[0] * v2[0] + u2[1] * v2[1]) / (vectorMagnitude(u2) * vectorMagnitude(v2));
+}
+function vectorsAngle(u2, v2) {
+  return (u2[0] * v2[1] < u2[1] * v2[0] ? -1 : 1) * Math.acos(vectorsRatio(u2, v2));
+}
+function CB1(t2) {
+  return t2 * t2 * t2;
+}
+function CB2(t2) {
+  return 3 * t2 * t2 * (1 - t2);
+}
+function CB3(t2) {
+  return 3 * t2 * (1 - t2) * (1 - t2);
+}
+function CB4(t2) {
+  return (1 - t2) * (1 - t2) * (1 - t2);
+}
+function QB1(t2) {
+  return t2 * t2;
+}
+function QB2(t2) {
+  return 2 * t2 * (1 - t2);
+}
+function QB3(t2) {
+  return (1 - t2) * (1 - t2);
+}
+var Property = class _Property {
+  constructor(document2, name, value) {
+    this.document = document2;
+    this.name = name;
+    this.value = value;
+    this.isNormalizedColor = false;
+  }
+  static empty(document2) {
+    return new _Property(document2, "EMPTY", "");
+  }
+  split() {
+    var separator = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : " ";
+    var {
+      document: document2,
+      name
+    } = this;
+    return compressSpaces(this.getString()).trim().split(separator).map((value) => new _Property(document2, name, value));
+  }
+  hasValue(zeroIsValue) {
+    var {
+      value
+    } = this;
+    return value !== null && value !== "" && (zeroIsValue || value !== 0) && typeof value !== "undefined";
+  }
+  isString(regexp) {
+    var {
+      value
+    } = this;
+    var result = typeof value === "string";
+    if (!result || !regexp) {
+      return result;
+    }
+    return regexp.test(value);
+  }
+  isUrlDefinition() {
+    return this.isString(/^url\(/);
+  }
+  isPixels() {
+    if (!this.hasValue()) {
+      return false;
+    }
+    var asString = this.getString();
+    switch (true) {
+      case asString.endsWith("px"):
+      case /^[0-9]+$/.test(asString):
+        return true;
+      default:
+        return false;
+    }
+  }
+  setValue(value) {
+    this.value = value;
+    return this;
+  }
+  getValue(def) {
+    if (typeof def === "undefined" || this.hasValue()) {
+      return this.value;
+    }
+    return def;
+  }
+  getNumber(def) {
+    if (!this.hasValue()) {
+      if (typeof def === "undefined") {
+        return 0;
+      }
+      return parseFloat(def);
+    }
+    var {
+      value
+    } = this;
+    var n2 = parseFloat(value);
+    if (this.isString(/%$/)) {
+      n2 /= 100;
+    }
+    return n2;
+  }
+  getString(def) {
+    if (typeof def === "undefined" || this.hasValue()) {
+      return typeof this.value === "undefined" ? "" : String(this.value);
+    }
+    return String(def);
+  }
+  getColor(def) {
+    var color = this.getString(def);
+    if (this.isNormalizedColor) {
+      return color;
+    }
+    this.isNormalizedColor = true;
+    color = normalizeColor(color);
+    this.value = color;
+    return color;
+  }
+  getDpi() {
+    return 96;
+  }
+  getRem() {
+    return this.document.rootEmSize;
+  }
+  getEm() {
+    return this.document.emSize;
+  }
+  getUnits() {
+    return this.getString().replace(/[0-9.-]/g, "");
+  }
+  getPixels(axisOrIsFontSize) {
+    var processPercent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
+    if (!this.hasValue()) {
+      return 0;
+    }
+    var [axis, isFontSize] = typeof axisOrIsFontSize === "boolean" ? [void 0, axisOrIsFontSize] : [axisOrIsFontSize];
+    var {
+      viewPort
+    } = this.document.screen;
+    switch (true) {
+      case this.isString(/vmin$/):
+        return this.getNumber() / 100 * Math.min(viewPort.computeSize("x"), viewPort.computeSize("y"));
+      case this.isString(/vmax$/):
+        return this.getNumber() / 100 * Math.max(viewPort.computeSize("x"), viewPort.computeSize("y"));
+      case this.isString(/vw$/):
+        return this.getNumber() / 100 * viewPort.computeSize("x");
+      case this.isString(/vh$/):
+        return this.getNumber() / 100 * viewPort.computeSize("y");
+      case this.isString(/rem$/):
+        return this.getNumber() * this.getRem();
+      case this.isString(/em$/):
+        return this.getNumber() * this.getEm();
+      case this.isString(/ex$/):
+        return this.getNumber() * this.getEm() / 2;
+      case this.isString(/px$/):
+        return this.getNumber();
+      case this.isString(/pt$/):
+        return this.getNumber() * this.getDpi() * (1 / 72);
+      case this.isString(/pc$/):
+        return this.getNumber() * 15;
+      case this.isString(/cm$/):
+        return this.getNumber() * this.getDpi() / 2.54;
+      case this.isString(/mm$/):
+        return this.getNumber() * this.getDpi() / 25.4;
+      case this.isString(/in$/):
+        return this.getNumber() * this.getDpi();
+      case (this.isString(/%$/) && isFontSize):
+        return this.getNumber() * this.getEm();
+      case this.isString(/%$/):
+        return this.getNumber() * viewPort.computeSize(axis);
+      default: {
+        var n2 = this.getNumber();
+        if (processPercent && n2 < 1) {
+          return n2 * viewPort.computeSize(axis);
+        }
+        return n2;
+      }
+    }
+  }
+  getMilliseconds() {
+    if (!this.hasValue()) {
+      return 0;
+    }
+    if (this.isString(/ms$/)) {
+      return this.getNumber();
+    }
+    return this.getNumber() * 1e3;
+  }
+  getRadians() {
+    if (!this.hasValue()) {
+      return 0;
+    }
+    switch (true) {
+      case this.isString(/deg$/):
+        return this.getNumber() * (Math.PI / 180);
+      case this.isString(/grad$/):
+        return this.getNumber() * (Math.PI / 200);
+      case this.isString(/rad$/):
+        return this.getNumber();
+      default:
+        return this.getNumber() * (Math.PI / 180);
+    }
+  }
+  getDefinition() {
+    var asString = this.getString();
+    var name = /#([^)'"]+)/.exec(asString);
+    if (name) {
+      name = name[1];
+    }
+    if (!name) {
+      name = asString;
+    }
+    return this.document.definitions[name];
+  }
+  getFillStyleDefinition(element, opacity) {
+    var def = this.getDefinition();
+    if (!def) {
+      return null;
+    }
+    if (typeof def.createGradient === "function") {
+      return def.createGradient(this.document.ctx, element, opacity);
+    }
+    if (typeof def.createPattern === "function") {
+      if (def.getHrefAttribute().hasValue()) {
+        var patternTransform = def.getAttribute("patternTransform");
+        def = def.getHrefAttribute().getDefinition();
+        if (patternTransform.hasValue()) {
+          def.getAttribute("patternTransform", true).setValue(patternTransform.value);
+        }
+      }
+      return def.createPattern(this.document.ctx, element, opacity);
+    }
+    return null;
+  }
+  getTextBaseline() {
+    if (!this.hasValue()) {
+      return null;
+    }
+    return _Property.textBaselineMapping[this.getString()];
+  }
+  addOpacity(opacity) {
+    var value = this.getColor();
+    var len = value.length;
+    var commas = 0;
+    for (var i2 = 0; i2 < len; i2++) {
+      if (value[i2] === ",") {
+        commas++;
+      }
+      if (commas === 3) {
+        break;
+      }
+    }
+    if (opacity.hasValue() && this.isString() && commas !== 3) {
+      var color = new import_rgbcolor.default(value);
+      if (color.ok) {
+        color.alpha = opacity.getNumber();
+        value = color.toRGBA();
+      }
+    }
+    return new _Property(this.document, this.name, value);
+  }
+};
+Property.textBaselineMapping = {
+  "baseline": "alphabetic",
+  "before-edge": "top",
+  "text-before-edge": "top",
+  "middle": "middle",
+  "central": "middle",
+  "after-edge": "bottom",
+  "text-after-edge": "bottom",
+  "ideographic": "ideographic",
+  "alphabetic": "alphabetic",
+  "hanging": "hanging",
+  "mathematical": "alphabetic"
+};
+var ViewPort = class {
+  constructor() {
+    this.viewPorts = [];
+  }
+  clear() {
+    this.viewPorts = [];
+  }
+  setCurrent(width, height) {
+    this.viewPorts.push({
+      width,
+      height
+    });
+  }
+  removeCurrent() {
+    this.viewPorts.pop();
+  }
+  getCurrent() {
+    var {
+      viewPorts
+    } = this;
+    return viewPorts[viewPorts.length - 1];
+  }
+  get width() {
+    return this.getCurrent().width;
+  }
+  get height() {
+    return this.getCurrent().height;
+  }
+  computeSize(d) {
+    if (typeof d === "number") {
+      return d;
+    }
+    if (d === "x") {
+      return this.width;
+    }
+    if (d === "y") {
+      return this.height;
+    }
+    return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);
+  }
+};
+var Point = class _Point {
+  constructor(x, y2) {
+    this.x = x;
+    this.y = y2;
+  }
+  static parse(point) {
+    var defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
+    var [x = defaultValue, y2 = defaultValue] = toNumbers(point);
+    return new _Point(x, y2);
+  }
+  static parseScale(scale) {
+    var defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
+    var [x = defaultValue, y2 = x] = toNumbers(scale);
+    return new _Point(x, y2);
+  }
+  static parsePath(path) {
+    var points = toNumbers(path);
+    var len = points.length;
+    var pathPoints = [];
+    for (var i2 = 0; i2 < len; i2 += 2) {
+      pathPoints.push(new _Point(points[i2], points[i2 + 1]));
+    }
+    return pathPoints;
+  }
+  angleTo(point) {
+    return Math.atan2(point.y - this.y, point.x - this.x);
+  }
+  applyTransform(transform) {
+    var {
+      x,
+      y: y2
+    } = this;
+    var xp = x * transform[0] + y2 * transform[2] + transform[4];
+    var yp = x * transform[1] + y2 * transform[3] + transform[5];
+    this.x = xp;
+    this.y = yp;
+  }
+};
+var Mouse = class {
+  constructor(screen) {
+    this.screen = screen;
+    this.working = false;
+    this.events = [];
+    this.eventElements = [];
+    this.onClick = this.onClick.bind(this);
+    this.onMouseMove = this.onMouseMove.bind(this);
+  }
+  isWorking() {
+    return this.working;
+  }
+  start() {
+    if (this.working) {
+      return;
+    }
+    var {
+      screen,
+      onClick,
+      onMouseMove
+    } = this;
+    var canvas = screen.ctx.canvas;
+    canvas.onclick = onClick;
+    canvas.onmousemove = onMouseMove;
+    this.working = true;
+  }
+  stop() {
+    if (!this.working) {
+      return;
+    }
+    var canvas = this.screen.ctx.canvas;
+    this.working = false;
+    canvas.onclick = null;
+    canvas.onmousemove = null;
+  }
+  hasEvents() {
+    return this.working && this.events.length > 0;
+  }
+  runEvents() {
+    if (!this.working) {
+      return;
+    }
+    var {
+      screen: document2,
+      events,
+      eventElements
+    } = this;
+    var {
+      style
+    } = document2.ctx.canvas;
+    if (style) {
+      style.cursor = "";
+    }
+    events.forEach((_ref, i2) => {
+      var {
+        run
+      } = _ref;
+      var element = eventElements[i2];
+      while (element) {
+        run(element);
+        element = element.parent;
+      }
+    });
+    this.events = [];
+    this.eventElements = [];
+  }
+  checkPath(element, ctx) {
+    if (!this.working || !ctx) {
+      return;
+    }
+    var {
+      events,
+      eventElements
+    } = this;
+    events.forEach((_ref2, i2) => {
+      var {
+        x,
+        y: y2
+      } = _ref2;
+      if (!eventElements[i2] && ctx.isPointInPath && ctx.isPointInPath(x, y2)) {
+        eventElements[i2] = element;
+      }
+    });
+  }
+  checkBoundingBox(element, boundingBox) {
+    if (!this.working || !boundingBox) {
+      return;
+    }
+    var {
+      events,
+      eventElements
+    } = this;
+    events.forEach((_ref3, i2) => {
+      var {
+        x,
+        y: y2
+      } = _ref3;
+      if (!eventElements[i2] && boundingBox.isPointInBox(x, y2)) {
+        eventElements[i2] = element;
+      }
+    });
+  }
+  mapXY(x, y2) {
+    var {
+      window: window2,
+      ctx
+    } = this.screen;
+    var point = new Point(x, y2);
+    var element = ctx.canvas;
+    while (element) {
+      point.x -= element.offsetLeft;
+      point.y -= element.offsetTop;
+      element = element.offsetParent;
+    }
+    if (window2.scrollX) {
+      point.x += window2.scrollX;
+    }
+    if (window2.scrollY) {
+      point.y += window2.scrollY;
+    }
+    return point;
+  }
+  onClick(event) {
+    var {
+      x,
+      y: y2
+    } = this.mapXY(event.clientX, event.clientY);
+    this.events.push({
+      type: "onclick",
+      x,
+      y: y2,
+      run(eventTarget) {
+        if (eventTarget.onClick) {
+          eventTarget.onClick();
+        }
+      }
+    });
+  }
+  onMouseMove(event) {
+    var {
+      x,
+      y: y2
+    } = this.mapXY(event.clientX, event.clientY);
+    this.events.push({
+      type: "onmousemove",
+      x,
+      y: y2,
+      run(eventTarget) {
+        if (eventTarget.onMouseMove) {
+          eventTarget.onMouseMove();
+        }
+      }
+    });
+  }
+};
+var defaultWindow = typeof window !== "undefined" ? window : null;
+var defaultFetch$1 = typeof fetch !== "undefined" ? fetch.bind(void 0) : null;
+var Screen = class {
+  constructor(ctx) {
+    var {
+      fetch: fetch2 = defaultFetch$1,
+      window: window2 = defaultWindow
+    } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+    this.ctx = ctx;
+    this.FRAMERATE = 30;
+    this.MAX_VIRTUAL_PIXELS = 3e4;
+    this.CLIENT_WIDTH = 800;
+    this.CLIENT_HEIGHT = 600;
+    this.viewPort = new ViewPort();
+    this.mouse = new Mouse(this);
+    this.animations = [];
+    this.waits = [];
+    this.frameDuration = 0;
+    this.isReadyLock = false;
+    this.isFirstRender = true;
+    this.intervalId = null;
+    this.window = window2;
+    this.fetch = fetch2;
+  }
+  wait(checker) {
+    this.waits.push(checker);
+  }
+  ready() {
+    if (!this.readyPromise) {
+      return Promise.resolve();
+    }
+    return this.readyPromise;
+  }
+  isReady() {
+    if (this.isReadyLock) {
+      return true;
+    }
+    var isReadyLock = this.waits.every((_2) => _2());
+    if (isReadyLock) {
+      this.waits = [];
+      if (this.resolveReady) {
+        this.resolveReady();
+      }
+    }
+    this.isReadyLock = isReadyLock;
+    return isReadyLock;
+  }
+  setDefaults(ctx) {
+    ctx.strokeStyle = "rgba(0,0,0,0)";
+    ctx.lineCap = "butt";
+    ctx.lineJoin = "miter";
+    ctx.miterLimit = 4;
+  }
+  setViewBox(_ref) {
+    var {
+      document: document2,
+      ctx,
+      aspectRatio,
+      width,
+      desiredWidth,
+      height,
+      desiredHeight,
+      minX = 0,
+      minY = 0,
+      refX,
+      refY,
+      clip = false,
+      clipX = 0,
+      clipY = 0
+    } = _ref;
+    var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\s/, "");
+    var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(" ");
+    var align = aspectRatioAlign || "xMidYMid";
+    var meetOrSlice = aspectRatioMeetOrSlice || "meet";
+    var scaleX = width / desiredWidth;
+    var scaleY = height / desiredHeight;
+    var scaleMin = Math.min(scaleX, scaleY);
+    var scaleMax = Math.max(scaleX, scaleY);
+    var finalDesiredWidth = desiredWidth;
+    var finalDesiredHeight = desiredHeight;
+    if (meetOrSlice === "meet") {
+      finalDesiredWidth *= scaleMin;
+      finalDesiredHeight *= scaleMin;
+    }
+    if (meetOrSlice === "slice") {
+      finalDesiredWidth *= scaleMax;
+      finalDesiredHeight *= scaleMax;
+    }
+    var refXProp = new Property(document2, "refX", refX);
+    var refYProp = new Property(document2, "refY", refY);
+    var hasRefs = refXProp.hasValue() && refYProp.hasValue();
+    if (hasRefs) {
+      ctx.translate(-scaleMin * refXProp.getPixels("x"), -scaleMin * refYProp.getPixels("y"));
+    }
+    if (clip) {
+      var scaledClipX = scaleMin * clipX;
+      var scaledClipY = scaleMin * clipY;
+      ctx.beginPath();
+      ctx.moveTo(scaledClipX, scaledClipY);
+      ctx.lineTo(width, scaledClipY);
+      ctx.lineTo(width, height);
+      ctx.lineTo(scaledClipX, height);
+      ctx.closePath();
+      ctx.clip();
+    }
+    if (!hasRefs) {
+      var isMeetMinY = meetOrSlice === "meet" && scaleMin === scaleY;
+      var isSliceMaxY = meetOrSlice === "slice" && scaleMax === scaleY;
+      var isMeetMinX = meetOrSlice === "meet" && scaleMin === scaleX;
+      var isSliceMaxX = meetOrSlice === "slice" && scaleMax === scaleX;
+      if (align.startsWith("xMid") && (isMeetMinY || isSliceMaxY)) {
+        ctx.translate(width / 2 - finalDesiredWidth / 2, 0);
+      }
+      if (align.endsWith("YMid") && (isMeetMinX || isSliceMaxX)) {
+        ctx.translate(0, height / 2 - finalDesiredHeight / 2);
+      }
+      if (align.startsWith("xMax") && (isMeetMinY || isSliceMaxY)) {
+        ctx.translate(width - finalDesiredWidth, 0);
+      }
+      if (align.endsWith("YMax") && (isMeetMinX || isSliceMaxX)) {
+        ctx.translate(0, height - finalDesiredHeight);
+      }
+    }
+    switch (true) {
+      case align === "none":
+        ctx.scale(scaleX, scaleY);
+        break;
+      case meetOrSlice === "meet":
+        ctx.scale(scaleMin, scaleMin);
+        break;
+      case meetOrSlice === "slice":
+        ctx.scale(scaleMax, scaleMax);
+        break;
+    }
+    ctx.translate(-minX, -minY);
+  }
+  start(element) {
+    var {
+      enableRedraw = false,
+      ignoreMouse = false,
+      ignoreAnimation = false,
+      ignoreDimensions = false,
+      ignoreClear = false,
+      forceRedraw,
+      scaleWidth,
+      scaleHeight,
+      offsetX,
+      offsetY
+    } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+    var {
+      FRAMERATE,
+      mouse
+    } = this;
+    var frameDuration = 1e3 / FRAMERATE;
+    this.frameDuration = frameDuration;
+    this.readyPromise = new Promise((resolve) => {
+      this.resolveReady = resolve;
+    });
+    if (this.isReady()) {
+      this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+    }
+    if (!enableRedraw) {
+      return;
+    }
+    var now = Date.now();
+    var then = now;
+    var delta = 0;
+    var tick = () => {
+      now = Date.now();
+      delta = now - then;
+      if (delta >= frameDuration) {
+        then = now - delta % frameDuration;
+        if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {
+          this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+          mouse.runEvents();
+        }
+      }
+      this.intervalId = (0, import_raf.default)(tick);
+    };
+    if (!ignoreMouse) {
+      mouse.start();
+    }
+    this.intervalId = (0, import_raf.default)(tick);
+  }
+  stop() {
+    if (this.intervalId) {
+      import_raf.default.cancel(this.intervalId);
+      this.intervalId = null;
+    }
+    this.mouse.stop();
+  }
+  shouldUpdate(ignoreAnimation, forceRedraw) {
+    if (!ignoreAnimation) {
+      var {
+        frameDuration
+      } = this;
+      var shouldUpdate = this.animations.reduce((shouldUpdate2, animation) => animation.update(frameDuration) || shouldUpdate2, false);
+      if (shouldUpdate) {
+        return true;
+      }
+    }
+    if (typeof forceRedraw === "function" && forceRedraw()) {
+      return true;
+    }
+    if (!this.isReadyLock && this.isReady()) {
+      return true;
+    }
+    if (this.mouse.hasEvents()) {
+      return true;
+    }
+    return false;
+  }
+  render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {
+    var {
+      CLIENT_WIDTH,
+      CLIENT_HEIGHT,
+      viewPort,
+      ctx,
+      isFirstRender
+    } = this;
+    var canvas = ctx.canvas;
+    viewPort.clear();
+    if (canvas.width && canvas.height) {
+      viewPort.setCurrent(canvas.width, canvas.height);
+    } else {
+      viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);
+    }
+    var widthStyle = element.getStyle("width");
+    var heightStyle = element.getStyle("height");
+    if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== "number" && typeof scaleHeight !== "number")) {
+      if (widthStyle.hasValue()) {
+        canvas.width = widthStyle.getPixels("x");
+        if (canvas.style) {
+          canvas.style.width = "".concat(canvas.width, "px");
+        }
+      }
+      if (heightStyle.hasValue()) {
+        canvas.height = heightStyle.getPixels("y");
+        if (canvas.style) {
+          canvas.style.height = "".concat(canvas.height, "px");
+        }
+      }
+    }
+    var cWidth = canvas.clientWidth || canvas.width;
+    var cHeight = canvas.clientHeight || canvas.height;
+    if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {
+      cWidth = widthStyle.getPixels("x");
+      cHeight = heightStyle.getPixels("y");
+    }
+    viewPort.setCurrent(cWidth, cHeight);
+    if (typeof offsetX === "number") {
+      element.getAttribute("x", true).setValue(offsetX);
+    }
+    if (typeof offsetY === "number") {
+      element.getAttribute("y", true).setValue(offsetY);
+    }
+    if (typeof scaleWidth === "number" || typeof scaleHeight === "number") {
+      var viewBox = toNumbers(element.getAttribute("viewBox").getString());
+      var xRatio = 0;
+      var yRatio = 0;
+      if (typeof scaleWidth === "number") {
+        var _widthStyle = element.getStyle("width");
+        if (_widthStyle.hasValue()) {
+          xRatio = _widthStyle.getPixels("x") / scaleWidth;
+        } else if (!isNaN(viewBox[2])) {
+          xRatio = viewBox[2] / scaleWidth;
+        }
+      }
+      if (typeof scaleHeight === "number") {
+        var _heightStyle = element.getStyle("height");
+        if (_heightStyle.hasValue()) {
+          yRatio = _heightStyle.getPixels("y") / scaleHeight;
+        } else if (!isNaN(viewBox[3])) {
+          yRatio = viewBox[3] / scaleHeight;
+        }
+      }
+      if (!xRatio) {
+        xRatio = yRatio;
+      }
+      if (!yRatio) {
+        yRatio = xRatio;
+      }
+      element.getAttribute("width", true).setValue(scaleWidth);
+      element.getAttribute("height", true).setValue(scaleHeight);
+      var transformStyle = element.getStyle("transform", true, true);
+      transformStyle.setValue("".concat(transformStyle.getString(), " scale(").concat(1 / xRatio, ", ").concat(1 / yRatio, ")"));
+    }
+    if (!ignoreClear) {
+      ctx.clearRect(0, 0, cWidth, cHeight);
+    }
+    element.render(ctx);
+    if (isFirstRender) {
+      this.isFirstRender = false;
+    }
+  }
+};
+Screen.defaultWindow = defaultWindow;
+Screen.defaultFetch = defaultFetch$1;
+var {
+  defaultFetch
+} = Screen;
+var DefaultDOMParser = typeof DOMParser !== "undefined" ? DOMParser : null;
+var Parser = class {
+  constructor() {
+    var {
+      fetch: fetch2 = defaultFetch,
+      DOMParser: DOMParser2 = DefaultDOMParser
+    } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+    this.fetch = fetch2;
+    this.DOMParser = DOMParser2;
+  }
+  parse(resource) {
+    var _this = this;
+    return _asyncToGenerator(function* () {
+      if (resource.startsWith("<")) {
+        return _this.parseFromString(resource);
+      }
+      return _this.load(resource);
+    })();
+  }
+  parseFromString(xml) {
+    var parser = new this.DOMParser();
+    try {
+      return this.checkDocument(parser.parseFromString(xml, "image/svg+xml"));
+    } catch (err) {
+      return this.checkDocument(parser.parseFromString(xml, "text/xml"));
+    }
+  }
+  checkDocument(document2) {
+    var parserError = document2.getElementsByTagName("parsererror")[0];
+    if (parserError) {
+      throw new Error(parserError.textContent);
+    }
+    return document2;
+  }
+  load(url) {
+    var _this2 = this;
+    return _asyncToGenerator(function* () {
+      var response = yield _this2.fetch(url);
+      var xml = yield response.text();
+      return _this2.parseFromString(xml);
+    })();
+  }
+};
+var Translate = class {
+  constructor(_2, point) {
+    this.type = "translate";
+    this.point = null;
+    this.point = Point.parse(point);
+  }
+  apply(ctx) {
+    var {
+      x,
+      y: y2
+    } = this.point;
+    ctx.translate(x || 0, y2 || 0);
+  }
+  unapply(ctx) {
+    var {
+      x,
+      y: y2
+    } = this.point;
+    ctx.translate(-1 * x || 0, -1 * y2 || 0);
+  }
+  applyToPoint(point) {
+    var {
+      x,
+      y: y2
+    } = this.point;
+    point.applyTransform([1, 0, 0, 1, x || 0, y2 || 0]);
+  }
+};
+var Rotate = class {
+  constructor(document2, rotate, transformOrigin) {
+    this.type = "rotate";
+    this.angle = null;
+    this.originX = null;
+    this.originY = null;
+    this.cx = 0;
+    this.cy = 0;
+    var numbers = toNumbers(rotate);
+    this.angle = new Property(document2, "angle", numbers[0]);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+    this.cx = numbers[1] || 0;
+    this.cy = numbers[2] || 0;
+  }
+  apply(ctx) {
+    var {
+      cx,
+      cy,
+      originX,
+      originY,
+      angle
+    } = this;
+    var tx = cx + originX.getPixels("x");
+    var ty = cy + originY.getPixels("y");
+    ctx.translate(tx, ty);
+    ctx.rotate(angle.getRadians());
+    ctx.translate(-tx, -ty);
+  }
+  unapply(ctx) {
+    var {
+      cx,
+      cy,
+      originX,
+      originY,
+      angle
+    } = this;
+    var tx = cx + originX.getPixels("x");
+    var ty = cy + originY.getPixels("y");
+    ctx.translate(tx, ty);
+    ctx.rotate(-1 * angle.getRadians());
+    ctx.translate(-tx, -ty);
+  }
+  applyToPoint(point) {
+    var {
+      cx,
+      cy,
+      angle
+    } = this;
+    var rad = angle.getRadians();
+    point.applyTransform([
+      1,
+      0,
+      0,
+      1,
+      cx || 0,
+      cy || 0
+      // this.p.y
+    ]);
+    point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);
+    point.applyTransform([
+      1,
+      0,
+      0,
+      1,
+      -cx || 0,
+      -cy || 0
+      // -this.p.y
+    ]);
+  }
+};
+var Scale = class {
+  constructor(_2, scale, transformOrigin) {
+    this.type = "scale";
+    this.scale = null;
+    this.originX = null;
+    this.originY = null;
+    var scaleSize = Point.parseScale(scale);
+    if (scaleSize.x === 0 || scaleSize.y === 0) {
+      scaleSize.x = PSEUDO_ZERO;
+      scaleSize.y = PSEUDO_ZERO;
+    }
+    this.scale = scaleSize;
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+  apply(ctx) {
+    var {
+      scale: {
+        x,
+        y: y2
+      },
+      originX,
+      originY
+    } = this;
+    var tx = originX.getPixels("x");
+    var ty = originY.getPixels("y");
+    ctx.translate(tx, ty);
+    ctx.scale(x, y2 || x);
+    ctx.translate(-tx, -ty);
+  }
+  unapply(ctx) {
+    var {
+      scale: {
+        x,
+        y: y2
+      },
+      originX,
+      originY
+    } = this;
+    var tx = originX.getPixels("x");
+    var ty = originY.getPixels("y");
+    ctx.translate(tx, ty);
+    ctx.scale(1 / x, 1 / y2 || x);
+    ctx.translate(-tx, -ty);
+  }
+  applyToPoint(point) {
+    var {
+      x,
+      y: y2
+    } = this.scale;
+    point.applyTransform([x || 0, 0, 0, y2 || 0, 0, 0]);
+  }
+};
+var Matrix = class {
+  constructor(_2, matrix, transformOrigin) {
+    this.type = "matrix";
+    this.matrix = [];
+    this.originX = null;
+    this.originY = null;
+    this.matrix = toNumbers(matrix);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+  apply(ctx) {
+    var {
+      originX,
+      originY,
+      matrix
+    } = this;
+    var tx = originX.getPixels("x");
+    var ty = originY.getPixels("y");
+    ctx.translate(tx, ty);
+    ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+    ctx.translate(-tx, -ty);
+  }
+  unapply(ctx) {
+    var {
+      originX,
+      originY,
+      matrix
+    } = this;
+    var a2 = matrix[0];
+    var b = matrix[2];
+    var c3 = matrix[4];
+    var d = matrix[1];
+    var e2 = matrix[3];
+    var f2 = matrix[5];
+    var g = 0;
+    var h2 = 0;
+    var i2 = 1;
+    var det = 1 / (a2 * (e2 * i2 - f2 * h2) - b * (d * i2 - f2 * g) + c3 * (d * h2 - e2 * g));
+    var tx = originX.getPixels("x");
+    var ty = originY.getPixels("y");
+    ctx.translate(tx, ty);
+    ctx.transform(det * (e2 * i2 - f2 * h2), det * (f2 * g - d * i2), det * (c3 * h2 - b * i2), det * (a2 * i2 - c3 * g), det * (b * f2 - c3 * e2), det * (c3 * d - a2 * f2));
+    ctx.translate(-tx, -ty);
+  }
+  applyToPoint(point) {
+    point.applyTransform(this.matrix);
+  }
+};
+var Skew = class extends Matrix {
+  constructor(document2, skew, transformOrigin) {
+    super(document2, skew, transformOrigin);
+    this.type = "skew";
+    this.angle = null;
+    this.angle = new Property(document2, "angle", skew);
+  }
+};
+var SkewX = class extends Skew {
+  constructor(document2, skew, transformOrigin) {
+    super(document2, skew, transformOrigin);
+    this.type = "skewX";
+    this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];
+  }
+};
+var SkewY = class extends Skew {
+  constructor(document2, skew, transformOrigin) {
+    super(document2, skew, transformOrigin);
+    this.type = "skewY";
+    this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];
+  }
+};
+function parseTransforms(transform) {
+  return compressSpaces(transform).trim().replace(/\)([a-zA-Z])/g, ") $1").replace(/\)(\s?,\s?)/g, ") ").split(/\s(?=[a-z])/);
+}
+function parseTransform(transform) {
+  var [type, value] = transform.split("(");
+  return [type.trim(), value.trim().replace(")", "")];
+}
+var Transform = class _Transform {
+  constructor(document2, transform, transformOrigin) {
+    this.document = document2;
+    this.transforms = [];
+    var data = parseTransforms(transform);
+    data.forEach((transform2) => {
+      if (transform2 === "none") {
+        return;
+      }
+      var [type, value] = parseTransform(transform2);
+      var TransformType = _Transform.transformTypes[type];
+      if (typeof TransformType !== "undefined") {
+        this.transforms.push(new TransformType(this.document, value, transformOrigin));
+      }
+    });
+  }
+  static fromElement(document2, element) {
+    var transformStyle = element.getStyle("transform", false, true);
+    var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle("transform-origin", false, true).split();
+    var transformOrigin = [transformOriginXProperty, transformOriginYProperty];
+    if (transformStyle.hasValue()) {
+      return new _Transform(document2, transformStyle.getString(), transformOrigin);
+    }
+    return null;
+  }
+  apply(ctx) {
+    var {
+      transforms
+    } = this;
+    var len = transforms.length;
+    for (var i2 = 0; i2 < len; i2++) {
+      transforms[i2].apply(ctx);
+    }
+  }
+  unapply(ctx) {
+    var {
+      transforms
+    } = this;
+    var len = transforms.length;
+    for (var i2 = len - 1; i2 >= 0; i2--) {
+      transforms[i2].unapply(ctx);
+    }
+  }
+  // TODO: applyToPoint unused ... remove?
+  applyToPoint(point) {
+    var {
+      transforms
+    } = this;
+    var len = transforms.length;
+    for (var i2 = 0; i2 < len; i2++) {
+      transforms[i2].applyToPoint(point);
+    }
+  }
+};
+Transform.transformTypes = {
+  translate: Translate,
+  rotate: Rotate,
+  scale: Scale,
+  matrix: Matrix,
+  skewX: SkewX,
+  skewY: SkewY
+};
+var Element = class _Element {
+  constructor(document2, node2) {
+    var captureTextNodes = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
+    this.document = document2;
+    this.node = node2;
+    this.captureTextNodes = captureTextNodes;
+    this.attributes = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.animationFrozen = false;
+    this.animationFrozenValue = "";
+    this.parent = null;
+    this.children = [];
+    if (!node2 || node2.nodeType !== 1) {
+      return;
+    }
+    Array.from(node2.attributes).forEach((attribute) => {
+      var nodeName = normalizeAttributeName(attribute.nodeName);
+      this.attributes[nodeName] = new Property(document2, nodeName, attribute.value);
+    });
+    this.addStylesFromStyleDefinition();
+    if (this.getAttribute("style").hasValue()) {
+      var styles = this.getAttribute("style").getString().split(";").map((_2) => _2.trim());
+      styles.forEach((style) => {
+        if (!style) {
+          return;
+        }
+        var [name, value] = style.split(":").map((_2) => _2.trim());
+        this.styles[name] = new Property(document2, name, value);
+      });
+    }
+    var {
+      definitions
+    } = document2;
+    var id = this.getAttribute("id");
+    if (id.hasValue()) {
+      if (!definitions[id.getString()]) {
+        definitions[id.getString()] = this;
+      }
+    }
+    Array.from(node2.childNodes).forEach((childNode) => {
+      if (childNode.nodeType === 1) {
+        this.addChild(childNode);
+      } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {
+        var textNode = document2.createTextNode(childNode);
+        if (textNode.getText().length > 0) {
+          this.addChild(textNode);
+        }
+      }
+    });
+  }
+  getAttribute(name) {
+    var createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
+    var attr = this.attributes[name];
+    if (!attr && createIfNotExists) {
+      var _attr = new Property(this.document, name, "");
+      this.attributes[name] = _attr;
+      return _attr;
+    }
+    return attr || Property.empty(this.document);
+  }
+  getHrefAttribute() {
+    for (var key in this.attributes) {
+      if (key === "href" || key.endsWith(":href")) {
+        return this.attributes[key];
+      }
+    }
+    return Property.empty(this.document);
+  }
+  getStyle(name) {
+    var createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
+    var skipAncestors = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
+    var style = this.styles[name];
+    if (style) {
+      return style;
+    }
+    var attr = this.getAttribute(name);
+    if (attr !== null && attr !== void 0 && attr.hasValue()) {
+      this.styles[name] = attr;
+      return attr;
+    }
+    if (!skipAncestors) {
+      var {
+        parent
+      } = this;
+      if (parent) {
+        var parentStyle = parent.getStyle(name);
+        if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {
+          return parentStyle;
+        }
+      }
+    }
+    if (createIfNotExists) {
+      var _style = new Property(this.document, name, "");
+      this.styles[name] = _style;
+      return _style;
+    }
+    return style || Property.empty(this.document);
+  }
+  render(ctx) {
+    if (this.getStyle("display").getString() === "none" || this.getStyle("visibility").getString() === "hidden") {
+      return;
+    }
+    ctx.save();
+    if (this.getStyle("mask").hasValue()) {
+      var mask = this.getStyle("mask").getDefinition();
+      if (mask) {
+        this.applyEffects(ctx);
+        mask.apply(ctx, this);
+      }
+    } else if (this.getStyle("filter").getValue("none") !== "none") {
+      var filter = this.getStyle("filter").getDefinition();
+      if (filter) {
+        this.applyEffects(ctx);
+        filter.apply(ctx, this);
+      }
+    } else {
+      this.setContext(ctx);
+      this.renderChildren(ctx);
+      this.clearContext(ctx);
+    }
+    ctx.restore();
+  }
+  setContext(_2) {
+  }
+  applyEffects(ctx) {
+    var transform = Transform.fromElement(this.document, this);
+    if (transform) {
+      transform.apply(ctx);
+    }
+    var clipPathStyleProp = this.getStyle("clip-path", false, true);
+    if (clipPathStyleProp.hasValue()) {
+      var clip = clipPathStyleProp.getDefinition();
+      if (clip) {
+        clip.apply(ctx);
+      }
+    }
+  }
+  clearContext(_2) {
+  }
+  renderChildren(ctx) {
+    this.children.forEach((child) => {
+      child.render(ctx);
+    });
+  }
+  addChild(childNode) {
+    var child = childNode instanceof _Element ? childNode : this.document.createElement(childNode);
+    child.parent = this;
+    if (!_Element.ignoreChildTypes.includes(child.type)) {
+      this.children.push(child);
+    }
+  }
+  matchesSelector(selector) {
+    var _node$getAttribute;
+    var {
+      node: node2
+    } = this;
+    if (typeof node2.matches === "function") {
+      return node2.matches(selector);
+    }
+    var styleClasses = (_node$getAttribute = node2.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node2, "class");
+    if (!styleClasses || styleClasses === "") {
+      return false;
+    }
+    return styleClasses.split(" ").some((styleClass) => ".".concat(styleClass) === selector);
+  }
+  addStylesFromStyleDefinition() {
+    var {
+      styles,
+      stylesSpecificity
+    } = this.document;
+    for (var selector in styles) {
+      if (!selector.startsWith("@") && this.matchesSelector(selector)) {
+        var style = styles[selector];
+        var specificity = stylesSpecificity[selector];
+        if (style) {
+          for (var name in style) {
+            var existingSpecificity = this.stylesSpecificity[name];
+            if (typeof existingSpecificity === "undefined") {
+              existingSpecificity = "000";
+            }
+            if (specificity >= existingSpecificity) {
+              this.styles[name] = style[name];
+              this.stylesSpecificity[name] = specificity;
+            }
+          }
+        }
+      }
+    }
+  }
+  removeStyles(element, ignoreStyles) {
+    var toRestore = ignoreStyles.reduce((toRestore2, name) => {
+      var styleProp = element.getStyle(name);
+      if (!styleProp.hasValue()) {
+        return toRestore2;
+      }
+      var value = styleProp.getString();
+      styleProp.setValue("");
+      return [...toRestore2, [name, value]];
+    }, []);
+    return toRestore;
+  }
+  restoreStyles(element, styles) {
+    styles.forEach((_ref) => {
+      var [name, value] = _ref;
+      element.getStyle(name, true).setValue(value);
+    });
+  }
+  isFirstChild() {
+    var _this$parent;
+    return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;
+  }
+};
+Element.ignoreChildTypes = ["title"];
+var UnknownElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+  }
+};
+function wrapFontFamily(fontFamily) {
+  var trimmed = fontFamily.trim();
+  return /^('|")/.test(trimmed) ? trimmed : '"'.concat(trimmed, '"');
+}
+function prepareFontFamily(fontFamily) {
+  return typeof process === "undefined" ? fontFamily : fontFamily.trim().split(",").map(wrapFontFamily).join(",");
+}
+function prepareFontStyle(fontStyle) {
+  if (!fontStyle) {
+    return "";
+  }
+  var targetFontStyle = fontStyle.trim().toLowerCase();
+  switch (targetFontStyle) {
+    case "normal":
+    case "italic":
+    case "oblique":
+    case "inherit":
+    case "initial":
+    case "unset":
+      return targetFontStyle;
+    default:
+      if (/^oblique\s+(-|)\d+deg$/.test(targetFontStyle)) {
+        return targetFontStyle;
+      }
+      return "";
+  }
+}
+function prepareFontWeight(fontWeight) {
+  if (!fontWeight) {
+    return "";
+  }
+  var targetFontWeight = fontWeight.trim().toLowerCase();
+  switch (targetFontWeight) {
+    case "normal":
+    case "bold":
+    case "lighter":
+    case "bolder":
+    case "inherit":
+    case "initial":
+    case "unset":
+      return targetFontWeight;
+    default:
+      if (/^[\d.]+$/.test(targetFontWeight)) {
+        return targetFontWeight;
+      }
+      return "";
+  }
+}
+var Font = class _Font {
+  constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {
+    var inheritFont = inherit ? typeof inherit === "string" ? _Font.parse(inherit) : inherit : {};
+    this.fontFamily = fontFamily || inheritFont.fontFamily;
+    this.fontSize = fontSize || inheritFont.fontSize;
+    this.fontStyle = fontStyle || inheritFont.fontStyle;
+    this.fontWeight = fontWeight || inheritFont.fontWeight;
+    this.fontVariant = fontVariant || inheritFont.fontVariant;
+  }
+  static parse() {
+    var font = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
+    var inherit = arguments.length > 1 ? arguments[1] : void 0;
+    var fontStyle = "";
+    var fontVariant = "";
+    var fontWeight = "";
+    var fontSize = "";
+    var fontFamily = "";
+    var parts = compressSpaces(font).trim().split(" ");
+    var set = {
+      fontSize: false,
+      fontStyle: false,
+      fontWeight: false,
+      fontVariant: false
+    };
+    parts.forEach((part) => {
+      switch (true) {
+        case (!set.fontStyle && _Font.styles.includes(part)):
+          if (part !== "inherit") {
+            fontStyle = part;
+          }
+          set.fontStyle = true;
+          break;
+        case (!set.fontVariant && _Font.variants.includes(part)):
+          if (part !== "inherit") {
+            fontVariant = part;
+          }
+          set.fontStyle = true;
+          set.fontVariant = true;
+          break;
+        case (!set.fontWeight && _Font.weights.includes(part)):
+          if (part !== "inherit") {
+            fontWeight = part;
+          }
+          set.fontStyle = true;
+          set.fontVariant = true;
+          set.fontWeight = true;
+          break;
+        case !set.fontSize:
+          if (part !== "inherit") {
+            [fontSize] = part.split("/");
+          }
+          set.fontStyle = true;
+          set.fontVariant = true;
+          set.fontWeight = true;
+          set.fontSize = true;
+          break;
+        default:
+          if (part !== "inherit") {
+            fontFamily += part;
+          }
+      }
+    });
+    return new _Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);
+  }
+  toString() {
+    return [
+      prepareFontStyle(this.fontStyle),
+      this.fontVariant,
+      prepareFontWeight(this.fontWeight),
+      this.fontSize,
+      // Wrap fontFamily only on nodejs and only for canvas.ctx
+      prepareFontFamily(this.fontFamily)
+    ].join(" ").trim();
+  }
+};
+Font.styles = "normal|italic|oblique|inherit";
+Font.variants = "normal|small-caps|inherit";
+Font.weights = "normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit";
+var BoundingBox = class {
+  constructor() {
+    var x1 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Number.NaN;
+    var y1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Number.NaN;
+    var x2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Number.NaN;
+    var y2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : Number.NaN;
+    this.x1 = x1;
+    this.y1 = y1;
+    this.x2 = x2;
+    this.y2 = y2;
+    this.addPoint(x1, y1);
+    this.addPoint(x2, y2);
+  }
+  get x() {
+    return this.x1;
+  }
+  get y() {
+    return this.y1;
+  }
+  get width() {
+    return this.x2 - this.x1;
+  }
+  get height() {
+    return this.y2 - this.y1;
+  }
+  addPoint(x, y2) {
+    if (typeof x !== "undefined") {
+      if (isNaN(this.x1) || isNaN(this.x2)) {
+        this.x1 = x;
+        this.x2 = x;
+      }
+      if (x < this.x1) {
+        this.x1 = x;
+      }
+      if (x > this.x2) {
+        this.x2 = x;
+      }
+    }
+    if (typeof y2 !== "undefined") {
+      if (isNaN(this.y1) || isNaN(this.y2)) {
+        this.y1 = y2;
+        this.y2 = y2;
+      }
+      if (y2 < this.y1) {
+        this.y1 = y2;
+      }
+      if (y2 > this.y2) {
+        this.y2 = y2;
+      }
+    }
+  }
+  addX(x) {
+    this.addPoint(x, null);
+  }
+  addY(y2) {
+    this.addPoint(null, y2);
+  }
+  addBoundingBox(boundingBox) {
+    if (!boundingBox) {
+      return;
+    }
+    var {
+      x1,
+      y1,
+      x2,
+      y2
+    } = boundingBox;
+    this.addPoint(x1, y1);
+    this.addPoint(x2, y2);
+  }
+  sumCubic(t2, p0, p1, p2, p3) {
+    return Math.pow(1 - t2, 3) * p0 + 3 * Math.pow(1 - t2, 2) * t2 * p1 + 3 * (1 - t2) * Math.pow(t2, 2) * p2 + Math.pow(t2, 3) * p3;
+  }
+  bezierCurveAdd(forX, p0, p1, p2, p3) {
+    var b = 6 * p0 - 12 * p1 + 6 * p2;
+    var a2 = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;
+    var c3 = 3 * p1 - 3 * p0;
+    if (a2 === 0) {
+      if (b === 0) {
+        return;
+      }
+      var t2 = -c3 / b;
+      if (0 < t2 && t2 < 1) {
+        if (forX) {
+          this.addX(this.sumCubic(t2, p0, p1, p2, p3));
+        } else {
+          this.addY(this.sumCubic(t2, p0, p1, p2, p3));
+        }
+      }
+      return;
+    }
+    var b2ac = Math.pow(b, 2) - 4 * c3 * a2;
+    if (b2ac < 0) {
+      return;
+    }
+    var t1 = (-b + Math.sqrt(b2ac)) / (2 * a2);
+    if (0 < t1 && t1 < 1) {
+      if (forX) {
+        this.addX(this.sumCubic(t1, p0, p1, p2, p3));
+      } else {
+        this.addY(this.sumCubic(t1, p0, p1, p2, p3));
+      }
+    }
+    var t22 = (-b - Math.sqrt(b2ac)) / (2 * a2);
+    if (0 < t22 && t22 < 1) {
+      if (forX) {
+        this.addX(this.sumCubic(t22, p0, p1, p2, p3));
+      } else {
+        this.addY(this.sumCubic(t22, p0, p1, p2, p3));
+      }
+    }
+  }
+  // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+  addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+    this.addPoint(p0x, p0y);
+    this.addPoint(p3x, p3y);
+    this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);
+    this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);
+  }
+  addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {
+    var cp1x = p0x + 2 / 3 * (p1x - p0x);
+    var cp1y = p0y + 2 / 3 * (p1y - p0y);
+    var cp2x = cp1x + 1 / 3 * (p2x - p0x);
+    var cp2y = cp1y + 1 / 3 * (p2y - p0y);
+    this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
+  }
+  isPointInBox(x, y2) {
+    var {
+      x1,
+      y1,
+      x2,
+      y2: y22
+    } = this;
+    return x1 <= x && x <= x2 && y1 <= y2 && y2 <= y22;
+  }
+};
+var PathParser = class extends _ {
+  constructor(path) {
+    super(path.replace(/([+\-.])\s+/gm, "$1").replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g, ""));
+    this.control = null;
+    this.start = null;
+    this.current = null;
+    this.command = null;
+    this.commands = this.commands;
+    this.i = -1;
+    this.previousCommand = null;
+    this.points = [];
+    this.angles = [];
+  }
+  reset() {
+    this.i = -1;
+    this.command = null;
+    this.previousCommand = null;
+    this.start = new Point(0, 0);
+    this.control = new Point(0, 0);
+    this.current = new Point(0, 0);
+    this.points = [];
+    this.angles = [];
+  }
+  isEnd() {
+    var {
+      i: i2,
+      commands
+    } = this;
+    return i2 >= commands.length - 1;
+  }
+  next() {
+    var command = this.commands[++this.i];
+    this.previousCommand = this.command;
+    this.command = command;
+    return command;
+  }
+  getPoint() {
+    var xProp = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "x";
+    var yProp = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "y";
+    var point = new Point(this.command[xProp], this.command[yProp]);
+    return this.makeAbsolute(point);
+  }
+  getAsControlPoint(xProp, yProp) {
+    var point = this.getPoint(xProp, yProp);
+    this.control = point;
+    return point;
+  }
+  getAsCurrentPoint(xProp, yProp) {
+    var point = this.getPoint(xProp, yProp);
+    this.current = point;
+    return point;
+  }
+  getReflectedControlPoint() {
+    var previousCommand = this.previousCommand.type;
+    if (previousCommand !== _.CURVE_TO && previousCommand !== _.SMOOTH_CURVE_TO && previousCommand !== _.QUAD_TO && previousCommand !== _.SMOOTH_QUAD_TO) {
+      return this.current;
+    }
+    var {
+      current: {
+        x: cx,
+        y: cy
+      },
+      control: {
+        x: ox,
+        y: oy
+      }
+    } = this;
+    var point = new Point(2 * cx - ox, 2 * cy - oy);
+    return point;
+  }
+  makeAbsolute(point) {
+    if (this.command.relative) {
+      var {
+        x,
+        y: y2
+      } = this.current;
+      point.x += x;
+      point.y += y2;
+    }
+    return point;
+  }
+  addMarker(point, from, priorTo) {
+    var {
+      points,
+      angles
+    } = this;
+    if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {
+      angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);
+    }
+    this.addMarkerAngle(point, from ? from.angleTo(point) : null);
+  }
+  addMarkerAngle(point, angle) {
+    this.points.push(point);
+    this.angles.push(angle);
+  }
+  getMarkerPoints() {
+    return this.points;
+  }
+  getMarkerAngles() {
+    var {
+      angles
+    } = this;
+    var len = angles.length;
+    for (var i2 = 0; i2 < len; i2++) {
+      if (!angles[i2]) {
+        for (var j = i2 + 1; j < len; j++) {
+          if (angles[j]) {
+            angles[i2] = angles[j];
+            break;
+          }
+        }
+      }
+    }
+    return angles;
+  }
+};
+var RenderedElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.modifiedEmSizeStack = false;
+  }
+  calculateOpacity() {
+    var opacity = 1;
+    var element = this;
+    while (element) {
+      var opacityStyle = element.getStyle("opacity", false, true);
+      if (opacityStyle.hasValue(true)) {
+        opacity *= opacityStyle.getNumber();
+      }
+      element = element.parent;
+    }
+    return opacity;
+  }
+  setContext(ctx) {
+    var fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
+    if (!fromMeasure) {
+      var fillStyleProp = this.getStyle("fill");
+      var fillOpacityStyleProp = this.getStyle("fill-opacity");
+      var strokeStyleProp = this.getStyle("stroke");
+      var strokeOpacityProp = this.getStyle("stroke-opacity");
+      if (fillStyleProp.isUrlDefinition()) {
+        var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);
+        if (fillStyle) {
+          ctx.fillStyle = fillStyle;
+        }
+      } else if (fillStyleProp.hasValue()) {
+        if (fillStyleProp.getString() === "currentColor") {
+          fillStyleProp.setValue(this.getStyle("color").getColor());
+        }
+        var _fillStyle = fillStyleProp.getColor();
+        if (_fillStyle !== "inherit") {
+          ctx.fillStyle = _fillStyle === "none" ? "rgba(0,0,0,0)" : _fillStyle;
+        }
+      }
+      if (fillOpacityStyleProp.hasValue()) {
+        var _fillStyle2 = new Property(this.document, "fill", ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();
+        ctx.fillStyle = _fillStyle2;
+      }
+      if (strokeStyleProp.isUrlDefinition()) {
+        var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);
+        if (strokeStyle) {
+          ctx.strokeStyle = strokeStyle;
+        }
+      } else if (strokeStyleProp.hasValue()) {
+        if (strokeStyleProp.getString() === "currentColor") {
+          strokeStyleProp.setValue(this.getStyle("color").getColor());
+        }
+        var _strokeStyle = strokeStyleProp.getString();
+        if (_strokeStyle !== "inherit") {
+          ctx.strokeStyle = _strokeStyle === "none" ? "rgba(0,0,0,0)" : _strokeStyle;
+        }
+      }
+      if (strokeOpacityProp.hasValue()) {
+        var _strokeStyle2 = new Property(this.document, "stroke", ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();
+        ctx.strokeStyle = _strokeStyle2;
+      }
+      var strokeWidthStyleProp = this.getStyle("stroke-width");
+      if (strokeWidthStyleProp.hasValue()) {
+        var newLineWidth = strokeWidthStyleProp.getPixels();
+        ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO : newLineWidth;
+      }
+      var strokeLinecapStyleProp = this.getStyle("stroke-linecap");
+      var strokeLinejoinStyleProp = this.getStyle("stroke-linejoin");
+      var strokeMiterlimitProp = this.getStyle("stroke-miterlimit");
+      var strokeDasharrayStyleProp = this.getStyle("stroke-dasharray");
+      var strokeDashoffsetProp = this.getStyle("stroke-dashoffset");
+      if (strokeLinecapStyleProp.hasValue()) {
+        ctx.lineCap = strokeLinecapStyleProp.getString();
+      }
+      if (strokeLinejoinStyleProp.hasValue()) {
+        ctx.lineJoin = strokeLinejoinStyleProp.getString();
+      }
+      if (strokeMiterlimitProp.hasValue()) {
+        ctx.miterLimit = strokeMiterlimitProp.getNumber();
+      }
+      if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== "none") {
+        var gaps = toNumbers(strokeDasharrayStyleProp.getString());
+        if (typeof ctx.setLineDash !== "undefined") {
+          ctx.setLineDash(gaps);
+        } else if (typeof ctx.webkitLineDash !== "undefined") {
+          ctx.webkitLineDash = gaps;
+        } else if (typeof ctx.mozDash !== "undefined" && !(gaps.length === 1 && gaps[0] === 0)) {
+          ctx.mozDash = gaps;
+        }
+        var offset = strokeDashoffsetProp.getPixels();
+        if (typeof ctx.lineDashOffset !== "undefined") {
+          ctx.lineDashOffset = offset;
+        } else if (typeof ctx.webkitLineDashOffset !== "undefined") {
+          ctx.webkitLineDashOffset = offset;
+        } else if (typeof ctx.mozDashOffset !== "undefined") {
+          ctx.mozDashOffset = offset;
+        }
+      }
+    }
+    this.modifiedEmSizeStack = false;
+    if (typeof ctx.font !== "undefined") {
+      var fontStyleProp = this.getStyle("font");
+      var fontStyleStyleProp = this.getStyle("font-style");
+      var fontVariantStyleProp = this.getStyle("font-variant");
+      var fontWeightStyleProp = this.getStyle("font-weight");
+      var fontSizeStyleProp = this.getStyle("font-size");
+      var fontFamilyStyleProp = this.getStyle("font-family");
+      var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? "".concat(fontSizeStyleProp.getPixels(true), "px") : "", fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));
+      fontStyleStyleProp.setValue(font.fontStyle);
+      fontVariantStyleProp.setValue(font.fontVariant);
+      fontWeightStyleProp.setValue(font.fontWeight);
+      fontSizeStyleProp.setValue(font.fontSize);
+      fontFamilyStyleProp.setValue(font.fontFamily);
+      ctx.font = font.toString();
+      if (fontSizeStyleProp.isPixels()) {
+        this.document.emSize = fontSizeStyleProp.getPixels();
+        this.modifiedEmSizeStack = true;
+      }
+    }
+    if (!fromMeasure) {
+      this.applyEffects(ctx);
+      ctx.globalAlpha = this.calculateOpacity();
+    }
+  }
+  clearContext(ctx) {
+    super.clearContext(ctx);
+    if (this.modifiedEmSizeStack) {
+      this.document.popEmSize();
+    }
+  }
+};
+var PathElement = class _PathElement extends RenderedElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "path";
+    this.pathParser = null;
+    this.pathParser = new PathParser(this.getAttribute("d").getString());
+  }
+  path(ctx) {
+    var {
+      pathParser
+    } = this;
+    var boundingBox = new BoundingBox();
+    pathParser.reset();
+    if (ctx) {
+      ctx.beginPath();
+    }
+    while (!pathParser.isEnd()) {
+      switch (pathParser.next().type) {
+        case PathParser.MOVE_TO:
+          this.pathM(ctx, boundingBox);
+          break;
+        case PathParser.LINE_TO:
+          this.pathL(ctx, boundingBox);
+          break;
+        case PathParser.HORIZ_LINE_TO:
+          this.pathH(ctx, boundingBox);
+          break;
+        case PathParser.VERT_LINE_TO:
+          this.pathV(ctx, boundingBox);
+          break;
+        case PathParser.CURVE_TO:
+          this.pathC(ctx, boundingBox);
+          break;
+        case PathParser.SMOOTH_CURVE_TO:
+          this.pathS(ctx, boundingBox);
+          break;
+        case PathParser.QUAD_TO:
+          this.pathQ(ctx, boundingBox);
+          break;
+        case PathParser.SMOOTH_QUAD_TO:
+          this.pathT(ctx, boundingBox);
+          break;
+        case PathParser.ARC:
+          this.pathA(ctx, boundingBox);
+          break;
+        case PathParser.CLOSE_PATH:
+          this.pathZ(ctx, boundingBox);
+          break;
+      }
+    }
+    return boundingBox;
+  }
+  getBoundingBox(_2) {
+    return this.path();
+  }
+  getMarkers() {
+    var {
+      pathParser
+    } = this;
+    var points = pathParser.getMarkerPoints();
+    var angles = pathParser.getMarkerAngles();
+    var markers = points.map((point, i2) => [point, angles[i2]]);
+    return markers;
+  }
+  renderChildren(ctx) {
+    this.path(ctx);
+    this.document.screen.mouse.checkPath(this, ctx);
+    var fillRuleStyleProp = this.getStyle("fill-rule");
+    if (ctx.fillStyle !== "") {
+      if (fillRuleStyleProp.getString("inherit") !== "inherit") {
+        ctx.fill(fillRuleStyleProp.getString());
+      } else {
+        ctx.fill();
+      }
+    }
+    if (ctx.strokeStyle !== "") {
+      if (this.getAttribute("vector-effect").getString() === "non-scaling-stroke") {
+        ctx.save();
+        ctx.setTransform(1, 0, 0, 1, 0, 0);
+        ctx.stroke();
+        ctx.restore();
+      } else {
+        ctx.stroke();
+      }
+    }
+    var markers = this.getMarkers();
+    if (markers) {
+      var markersLastIndex = markers.length - 1;
+      var markerStartStyleProp = this.getStyle("marker-start");
+      var markerMidStyleProp = this.getStyle("marker-mid");
+      var markerEndStyleProp = this.getStyle("marker-end");
+      if (markerStartStyleProp.isUrlDefinition()) {
+        var marker = markerStartStyleProp.getDefinition();
+        var [point, angle] = markers[0];
+        marker.render(ctx, point, angle);
+      }
+      if (markerMidStyleProp.isUrlDefinition()) {
+        var _marker = markerMidStyleProp.getDefinition();
+        for (var i2 = 1; i2 < markersLastIndex; i2++) {
+          var [_point, _angle] = markers[i2];
+          _marker.render(ctx, _point, _angle);
+        }
+      }
+      if (markerEndStyleProp.isUrlDefinition()) {
+        var _marker2 = markerEndStyleProp.getDefinition();
+        var [_point2, _angle2] = markers[markersLastIndex];
+        _marker2.render(ctx, _point2, _angle2);
+      }
+    }
+  }
+  static pathM(pathParser) {
+    var point = pathParser.getAsCurrentPoint();
+    pathParser.start = pathParser.current;
+    return {
+      point
+    };
+  }
+  pathM(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      point
+    } = _PathElement.pathM(pathParser);
+    var {
+      x,
+      y: y2
+    } = point;
+    pathParser.addMarker(point);
+    boundingBox.addPoint(x, y2);
+    if (ctx) {
+      ctx.moveTo(x, y2);
+    }
+  }
+  static pathL(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var point = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      point
+    };
+  }
+  pathL(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point
+    } = _PathElement.pathL(pathParser);
+    var {
+      x,
+      y: y2
+    } = point;
+    pathParser.addMarker(point, current);
+    boundingBox.addPoint(x, y2);
+    if (ctx) {
+      ctx.lineTo(x, y2);
+    }
+  }
+  static pathH(pathParser) {
+    var {
+      current,
+      command
+    } = pathParser;
+    var point = new Point((command.relative ? current.x : 0) + command.x, current.y);
+    pathParser.current = point;
+    return {
+      current,
+      point
+    };
+  }
+  pathH(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point
+    } = _PathElement.pathH(pathParser);
+    var {
+      x,
+      y: y2
+    } = point;
+    pathParser.addMarker(point, current);
+    boundingBox.addPoint(x, y2);
+    if (ctx) {
+      ctx.lineTo(x, y2);
+    }
+  }
+  static pathV(pathParser) {
+    var {
+      current,
+      command
+    } = pathParser;
+    var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);
+    pathParser.current = point;
+    return {
+      current,
+      point
+    };
+  }
+  pathV(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point
+    } = _PathElement.pathV(pathParser);
+    var {
+      x,
+      y: y2
+    } = point;
+    pathParser.addMarker(point, current);
+    boundingBox.addPoint(x, y2);
+    if (ctx) {
+      ctx.lineTo(x, y2);
+    }
+  }
+  static pathC(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var point = pathParser.getPoint("x1", "y1");
+    var controlPoint = pathParser.getAsControlPoint("x2", "y2");
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    };
+  }
+  pathC(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    } = _PathElement.pathC(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, point);
+    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    if (ctx) {
+      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+  static pathS(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var point = pathParser.getReflectedControlPoint();
+    var controlPoint = pathParser.getAsControlPoint("x2", "y2");
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    };
+  }
+  pathS(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    } = _PathElement.pathS(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, point);
+    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    if (ctx) {
+      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+  static pathQ(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var controlPoint = pathParser.getAsControlPoint("x1", "y1");
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      controlPoint,
+      currentPoint
+    };
+  }
+  pathQ(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      controlPoint,
+      currentPoint
+    } = _PathElement.pathQ(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    if (ctx) {
+      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+  static pathT(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var controlPoint = pathParser.getReflectedControlPoint();
+    pathParser.control = controlPoint;
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      controlPoint,
+      currentPoint
+    };
+  }
+  pathT(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      controlPoint,
+      currentPoint
+    } = _PathElement.pathT(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    if (ctx) {
+      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+  static pathA(pathParser) {
+    var {
+      current,
+      command
+    } = pathParser;
+    var {
+      rX,
+      rY,
+      xRot,
+      lArcFlag,
+      sweepFlag
+    } = command;
+    var xAxisRotation = xRot * (Math.PI / 180);
+    var currentPoint = pathParser.getAsCurrentPoint();
+    var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2);
+    var l2 = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);
+    if (l2 > 1) {
+      rX *= Math.sqrt(l2);
+      rY *= Math.sqrt(l2);
+    }
+    var s2 = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));
+    if (isNaN(s2)) {
+      s2 = 0;
+    }
+    var cpp = new Point(s2 * rX * currp.y / rY, s2 * -rY * currp.x / rX);
+    var centp = new Point((current.x + currentPoint.x) / 2 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y);
+    var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]);
+    var u2 = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];
+    var v2 = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];
+    var ad = vectorsAngle(u2, v2);
+    if (vectorsRatio(u2, v2) <= -1) {
+      ad = Math.PI;
+    }
+    if (vectorsRatio(u2, v2) >= 1) {
+      ad = 0;
+    }
+    return {
+      currentPoint,
+      rX,
+      rY,
+      sweepFlag,
+      xAxisRotation,
+      centp,
+      a1,
+      ad
+    };
+  }
+  pathA(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      currentPoint,
+      rX,
+      rY,
+      sweepFlag,
+      xAxisRotation,
+      centp,
+      a1,
+      ad
+    } = _PathElement.pathA(pathParser);
+    var dir = 1 - sweepFlag ? 1 : -1;
+    var ah = a1 + dir * (ad / 2);
+    var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));
+    pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
+    pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);
+    boundingBox.addPoint(currentPoint.x, currentPoint.y);
+    if (ctx && !isNaN(a1) && !isNaN(ad)) {
+      var r2 = rX > rY ? rX : rY;
+      var sx = rX > rY ? 1 : rX / rY;
+      var sy = rX > rY ? rY / rX : 1;
+      ctx.translate(centp.x, centp.y);
+      ctx.rotate(xAxisRotation);
+      ctx.scale(sx, sy);
+      ctx.arc(0, 0, r2, a1, a1 + ad, Boolean(1 - sweepFlag));
+      ctx.scale(1 / sx, 1 / sy);
+      ctx.rotate(-xAxisRotation);
+      ctx.translate(-centp.x, -centp.y);
+    }
+  }
+  static pathZ(pathParser) {
+    pathParser.current = pathParser.start;
+  }
+  pathZ(ctx, boundingBox) {
+    _PathElement.pathZ(this.pathParser);
+    if (ctx) {
+      if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {
+        ctx.closePath();
+      }
+    }
+  }
+};
+var GlyphElement = class extends PathElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "glyph";
+    this.horizAdvX = this.getAttribute("horiz-adv-x").getNumber();
+    this.unicode = this.getAttribute("unicode").getString();
+    this.arabicForm = this.getAttribute("arabic-form").getString();
+  }
+};
+var TextElement = class _TextElement extends RenderedElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, new.target === _TextElement ? true : captureTextNodes);
+    this.type = "text";
+    this.x = 0;
+    this.y = 0;
+    this.measureCache = -1;
+  }
+  setContext(ctx) {
+    var fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
+    super.setContext(ctx, fromMeasure);
+    var textBaseline = this.getStyle("dominant-baseline").getTextBaseline() || this.getStyle("alignment-baseline").getTextBaseline();
+    if (textBaseline) {
+      ctx.textBaseline = textBaseline;
+    }
+  }
+  initializeCoordinates() {
+    this.x = 0;
+    this.y = 0;
+    this.leafTexts = [];
+    this.textChunkStart = 0;
+    this.minX = Number.POSITIVE_INFINITY;
+    this.maxX = Number.NEGATIVE_INFINITY;
+  }
+  getBoundingBox(ctx) {
+    if (this.type !== "text") {
+      return this.getTElementBoundingBox(ctx);
+    }
+    this.initializeCoordinates();
+    this.adjustChildCoordinatesRecursive(ctx);
+    var boundingBox = null;
+    this.children.forEach((_2, i2) => {
+      var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i2);
+      if (!boundingBox) {
+        boundingBox = childBoundingBox;
+      } else {
+        boundingBox.addBoundingBox(childBoundingBox);
+      }
+    });
+    return boundingBox;
+  }
+  getFontSize() {
+    var {
+      document: document2,
+      parent
+    } = this;
+    var inheritFontSize = Font.parse(document2.ctx.font).fontSize;
+    var fontSize = parent.getStyle("font-size").getNumber(inheritFontSize);
+    return fontSize;
+  }
+  getTElementBoundingBox(ctx) {
+    var fontSize = this.getFontSize();
+    return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);
+  }
+  getGlyph(font, text, i2) {
+    var char = text[i2];
+    var glyph = null;
+    if (font.isArabic) {
+      var len = text.length;
+      var prevChar = text[i2 - 1];
+      var nextChar = text[i2 + 1];
+      var arabicForm = "isolated";
+      if ((i2 === 0 || prevChar === " ") && i2 < len - 1 && nextChar !== " ") {
+        arabicForm = "terminal";
+      }
+      if (i2 > 0 && prevChar !== " " && i2 < len - 1 && nextChar !== " ") {
+        arabicForm = "medial";
+      }
+      if (i2 > 0 && prevChar !== " " && (i2 === len - 1 || nextChar === " ")) {
+        arabicForm = "initial";
+      }
+      if (typeof font.glyphs[char] !== "undefined") {
+        var maybeGlyph = font.glyphs[char];
+        glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];
+      }
+    } else {
+      glyph = font.glyphs[char];
+    }
+    if (!glyph) {
+      glyph = font.missingGlyph;
+    }
+    return glyph;
+  }
+  getText() {
+    return "";
+  }
+  getTextFromNode(node2) {
+    var textNode = node2 || this.node;
+    var childNodes = Array.from(textNode.parentNode.childNodes);
+    var index2 = childNodes.indexOf(textNode);
+    var lastIndex = childNodes.length - 1;
+    var text = compressSpaces(
+      // textNode.value
+      // || textNode.text
+      textNode.textContent || ""
+    );
+    if (index2 === 0) {
+      text = trimLeft(text);
+    }
+    if (index2 === lastIndex) {
+      text = trimRight(text);
+    }
+    return text;
+  }
+  renderChildren(ctx) {
+    if (this.type !== "text") {
+      this.renderTElementChildren(ctx);
+      return;
+    }
+    this.initializeCoordinates();
+    this.adjustChildCoordinatesRecursive(ctx);
+    this.children.forEach((_2, i2) => {
+      this.renderChild(ctx, this, this, i2);
+    });
+    var {
+      mouse
+    } = this.document.screen;
+    if (mouse.isWorking()) {
+      mouse.checkBoundingBox(this, this.getBoundingBox(ctx));
+    }
+  }
+  renderTElementChildren(ctx) {
+    var {
+      document: document2,
+      parent
+    } = this;
+    var renderText = this.getText();
+    var customFont = parent.getStyle("font-family").getDefinition();
+    if (customFont) {
+      var {
+        unitsPerEm
+      } = customFont.fontFace;
+      var ctxFont = Font.parse(document2.ctx.font);
+      var fontSize = parent.getStyle("font-size").getNumber(ctxFont.fontSize);
+      var fontStyle = parent.getStyle("font-style").getString(ctxFont.fontStyle);
+      var scale = fontSize / unitsPerEm;
+      var text = customFont.isRTL ? renderText.split("").reverse().join("") : renderText;
+      var dx = toNumbers(parent.getAttribute("dx").getString());
+      var len = text.length;
+      for (var i2 = 0; i2 < len; i2++) {
+        var glyph = this.getGlyph(customFont, text, i2);
+        ctx.translate(this.x, this.y);
+        ctx.scale(scale, -scale);
+        var lw = ctx.lineWidth;
+        ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;
+        if (fontStyle === "italic") {
+          ctx.transform(1, 0, 0.4, 1, 0, 0);
+        }
+        glyph.render(ctx);
+        if (fontStyle === "italic") {
+          ctx.transform(1, 0, -0.4, 1, 0, 0);
+        }
+        ctx.lineWidth = lw;
+        ctx.scale(1 / scale, -1 / scale);
+        ctx.translate(-this.x, -this.y);
+        this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;
+        if (typeof dx[i2] !== "undefined" && !isNaN(dx[i2])) {
+          this.x += dx[i2];
+        }
+      }
+      return;
+    }
+    var {
+      x,
+      y: y2
+    } = this;
+    if (ctx.fillStyle) {
+      ctx.fillText(renderText, x, y2);
+    }
+    if (ctx.strokeStyle) {
+      ctx.strokeText(renderText, x, y2);
+    }
+  }
+  applyAnchoring() {
+    if (this.textChunkStart >= this.leafTexts.length) {
+      return;
+    }
+    var firstElement = this.leafTexts[this.textChunkStart];
+    var textAnchor = firstElement.getStyle("text-anchor").getString("start");
+    var isRTL = false;
+    var shift = 0;
+    if (textAnchor === "start" && !isRTL || textAnchor === "end" && isRTL) {
+      shift = firstElement.x - this.minX;
+    } else if (textAnchor === "end" && !isRTL || textAnchor === "start" && isRTL) {
+      shift = firstElement.x - this.maxX;
+    } else {
+      shift = firstElement.x - (this.minX + this.maxX) / 2;
+    }
+    for (var i2 = this.textChunkStart; i2 < this.leafTexts.length; i2++) {
+      this.leafTexts[i2].x += shift;
+    }
+    this.minX = Number.POSITIVE_INFINITY;
+    this.maxX = Number.NEGATIVE_INFINITY;
+    this.textChunkStart = this.leafTexts.length;
+  }
+  adjustChildCoordinatesRecursive(ctx) {
+    this.children.forEach((_2, i2) => {
+      this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i2);
+    });
+    this.applyAnchoring();
+  }
+  adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i2) {
+    var child = parent.children[i2];
+    if (child.children.length > 0) {
+      child.children.forEach((_2, i3) => {
+        textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i3);
+      });
+    } else {
+      this.adjustChildCoordinates(ctx, textParent, parent, i2);
+    }
+  }
+  adjustChildCoordinates(ctx, textParent, parent, i2) {
+    var child = parent.children[i2];
+    if (typeof child.measureText !== "function") {
+      return child;
+    }
+    ctx.save();
+    child.setContext(ctx, true);
+    var xAttr = child.getAttribute("x");
+    var yAttr = child.getAttribute("y");
+    var dxAttr = child.getAttribute("dx");
+    var dyAttr = child.getAttribute("dy");
+    var customFont = child.getStyle("font-family").getDefinition();
+    var isRTL = Boolean(customFont) && customFont.isRTL;
+    if (i2 === 0) {
+      if (!xAttr.hasValue()) {
+        xAttr.setValue(child.getInheritedAttribute("x"));
+      }
+      if (!yAttr.hasValue()) {
+        yAttr.setValue(child.getInheritedAttribute("y"));
+      }
+      if (!dxAttr.hasValue()) {
+        dxAttr.setValue(child.getInheritedAttribute("dx"));
+      }
+      if (!dyAttr.hasValue()) {
+        dyAttr.setValue(child.getInheritedAttribute("dy"));
+      }
+    }
+    var width = child.measureText(ctx);
+    if (isRTL) {
+      textParent.x -= width;
+    }
+    if (xAttr.hasValue()) {
+      textParent.applyAnchoring();
+      child.x = xAttr.getPixels("x");
+      if (dxAttr.hasValue()) {
+        child.x += dxAttr.getPixels("x");
+      }
+    } else {
+      if (dxAttr.hasValue()) {
+        textParent.x += dxAttr.getPixels("x");
+      }
+      child.x = textParent.x;
+    }
+    textParent.x = child.x;
+    if (!isRTL) {
+      textParent.x += width;
+    }
+    if (yAttr.hasValue()) {
+      child.y = yAttr.getPixels("y");
+      if (dyAttr.hasValue()) {
+        child.y += dyAttr.getPixels("y");
+      }
+    } else {
+      if (dyAttr.hasValue()) {
+        textParent.y += dyAttr.getPixels("y");
+      }
+      child.y = textParent.y;
+    }
+    textParent.y = child.y;
+    textParent.leafTexts.push(child);
+    textParent.minX = Math.min(textParent.minX, child.x, child.x + width);
+    textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);
+    child.clearContext(ctx);
+    ctx.restore();
+    return child;
+  }
+  getChildBoundingBox(ctx, textParent, parent, i2) {
+    var child = parent.children[i2];
+    if (typeof child.getBoundingBox !== "function") {
+      return null;
+    }
+    var boundingBox = child.getBoundingBox(ctx);
+    if (!boundingBox) {
+      return null;
+    }
+    child.children.forEach((_2, i3) => {
+      var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i3);
+      boundingBox.addBoundingBox(childBoundingBox);
+    });
+    return boundingBox;
+  }
+  renderChild(ctx, textParent, parent, i2) {
+    var child = parent.children[i2];
+    child.render(ctx);
+    child.children.forEach((_2, i3) => {
+      textParent.renderChild(ctx, textParent, child, i3);
+    });
+  }
+  measureText(ctx) {
+    var {
+      measureCache
+    } = this;
+    if (~measureCache) {
+      return measureCache;
+    }
+    var renderText = this.getText();
+    var measure = this.measureTargetText(ctx, renderText);
+    this.measureCache = measure;
+    return measure;
+  }
+  measureTargetText(ctx, targetText) {
+    if (!targetText.length) {
+      return 0;
+    }
+    var {
+      parent
+    } = this;
+    var customFont = parent.getStyle("font-family").getDefinition();
+    if (customFont) {
+      var fontSize = this.getFontSize();
+      var text = customFont.isRTL ? targetText.split("").reverse().join("") : targetText;
+      var dx = toNumbers(parent.getAttribute("dx").getString());
+      var len = text.length;
+      var _measure = 0;
+      for (var i2 = 0; i2 < len; i2++) {
+        var glyph = this.getGlyph(customFont, text, i2);
+        _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
+        if (typeof dx[i2] !== "undefined" && !isNaN(dx[i2])) {
+          _measure += dx[i2];
+        }
+      }
+      return _measure;
+    }
+    if (!ctx.measureText) {
+      return targetText.length * 10;
+    }
+    ctx.save();
+    this.setContext(ctx, true);
+    var {
+      width: measure
+    } = ctx.measureText(targetText);
+    this.clearContext(ctx);
+    ctx.restore();
+    return measure;
+  }
+  /**
+   * Inherits positional attributes from {@link TextElement} parent(s). Attributes
+   * are only inherited from a parent to its first child.
+   * @param name - The attribute name.
+   * @returns The attribute value or null.
+   */
+  getInheritedAttribute(name) {
+    var current = this;
+    while (current instanceof _TextElement && current.isFirstChild()) {
+      var parentAttr = current.parent.getAttribute(name);
+      if (parentAttr.hasValue(true)) {
+        return parentAttr.getValue("0");
+      }
+      current = current.parent;
+    }
+    return null;
+  }
+};
+var TSpanElement = class _TSpanElement extends TextElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, new.target === _TSpanElement ? true : captureTextNodes);
+    this.type = "tspan";
+    this.text = this.children.length > 0 ? "" : this.getTextFromNode();
+  }
+  getText() {
+    return this.text;
+  }
+};
+var TextNode = class extends TSpanElement {
+  constructor() {
+    super(...arguments);
+    this.type = "textNode";
+  }
+};
+var SVGElement = class extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = "svg";
+    this.root = false;
+  }
+  setContext(ctx) {
+    var _this$node$parentNode;
+    var {
+      document: document2
+    } = this;
+    var {
+      screen,
+      window: window2
+    } = document2;
+    var canvas = ctx.canvas;
+    screen.setDefaults(ctx);
+    if (canvas.style && typeof ctx.font !== "undefined" && window2 && typeof window2.getComputedStyle !== "undefined") {
+      ctx.font = window2.getComputedStyle(canvas).getPropertyValue("font");
+      var fontSizeProp = new Property(document2, "fontSize", Font.parse(ctx.font).fontSize);
+      if (fontSizeProp.hasValue()) {
+        document2.rootEmSize = fontSizeProp.getPixels("y");
+        document2.emSize = document2.rootEmSize;
+      }
+    }
+    if (!this.getAttribute("x").hasValue()) {
+      this.getAttribute("x", true).setValue(0);
+    }
+    if (!this.getAttribute("y").hasValue()) {
+      this.getAttribute("y", true).setValue(0);
+    }
+    var {
+      width,
+      height
+    } = screen.viewPort;
+    if (!this.getStyle("width").hasValue()) {
+      this.getStyle("width", true).setValue("100%");
+    }
+    if (!this.getStyle("height").hasValue()) {
+      this.getStyle("height", true).setValue("100%");
+    }
+    if (!this.getStyle("color").hasValue()) {
+      this.getStyle("color", true).setValue("black");
+    }
+    var refXAttr = this.getAttribute("refX");
+    var refYAttr = this.getAttribute("refY");
+    var viewBoxAttr = this.getAttribute("viewBox");
+    var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;
+    var clip = !this.root && this.getStyle("overflow").getValue("hidden") !== "visible";
+    var minX = 0;
+    var minY = 0;
+    var clipX = 0;
+    var clipY = 0;
+    if (viewBox) {
+      minX = viewBox[0];
+      minY = viewBox[1];
+    }
+    if (!this.root) {
+      width = this.getStyle("width").getPixels("x");
+      height = this.getStyle("height").getPixels("y");
+      if (this.type === "marker") {
+        clipX = minX;
+        clipY = minY;
+        minX = 0;
+        minY = 0;
+      }
+    }
+    screen.viewPort.setCurrent(width, height);
+    if (this.node && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === "foreignObject") && this.getStyle("transform", false, true).hasValue() && !this.getStyle("transform-origin", false, true).hasValue()) {
+      this.getStyle("transform-origin", true, true).setValue("50% 50%");
+    }
+    super.setContext(ctx);
+    ctx.translate(this.getAttribute("x").getPixels("x"), this.getAttribute("y").getPixels("y"));
+    if (viewBox) {
+      width = viewBox[2];
+      height = viewBox[3];
+    }
+    document2.setViewBox({
+      ctx,
+      aspectRatio: this.getAttribute("preserveAspectRatio").getString(),
+      width: screen.viewPort.width,
+      desiredWidth: width,
+      height: screen.viewPort.height,
+      desiredHeight: height,
+      minX,
+      minY,
+      refX: refXAttr.getValue(),
+      refY: refYAttr.getValue(),
+      clip,
+      clipX,
+      clipY
+    });
+    if (viewBox) {
+      screen.viewPort.removeCurrent();
+      screen.viewPort.setCurrent(width, height);
+    }
+  }
+  clearContext(ctx) {
+    super.clearContext(ctx);
+    this.document.screen.viewPort.removeCurrent();
+  }
+  /**
+   * Resize SVG to fit in given size.
+   * @param width
+   * @param height
+   * @param preserveAspectRatio
+   */
+  resize(width) {
+    var height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width;
+    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
+    var widthAttr = this.getAttribute("width", true);
+    var heightAttr = this.getAttribute("height", true);
+    var viewBoxAttr = this.getAttribute("viewBox");
+    var styleAttr = this.getAttribute("style");
+    var originWidth = widthAttr.getNumber(0);
+    var originHeight = heightAttr.getNumber(0);
+    if (preserveAspectRatio) {
+      if (typeof preserveAspectRatio === "string") {
+        this.getAttribute("preserveAspectRatio", true).setValue(preserveAspectRatio);
+      } else {
+        var preserveAspectRatioAttr = this.getAttribute("preserveAspectRatio");
+        if (preserveAspectRatioAttr.hasValue()) {
+          preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\s*(\S.*\S)\s*$/, "$1"));
+        }
+      }
+    }
+    widthAttr.setValue(width);
+    heightAttr.setValue(height);
+    if (!viewBoxAttr.hasValue()) {
+      viewBoxAttr.setValue("0 0 ".concat(originWidth || width, " ").concat(originHeight || height));
+    }
+    if (styleAttr.hasValue()) {
+      var widthStyle = this.getStyle("width");
+      var heightStyle = this.getStyle("height");
+      if (widthStyle.hasValue()) {
+        widthStyle.setValue("".concat(width, "px"));
+      }
+      if (heightStyle.hasValue()) {
+        heightStyle.setValue("".concat(height, "px"));
+      }
+    }
+  }
+};
+var RectElement = class extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = "rect";
+  }
+  path(ctx) {
+    var x = this.getAttribute("x").getPixels("x");
+    var y2 = this.getAttribute("y").getPixels("y");
+    var width = this.getStyle("width", false, true).getPixels("x");
+    var height = this.getStyle("height", false, true).getPixels("y");
+    var rxAttr = this.getAttribute("rx");
+    var ryAttr = this.getAttribute("ry");
+    var rx = rxAttr.getPixels("x");
+    var ry = ryAttr.getPixels("y");
+    if (rxAttr.hasValue() && !ryAttr.hasValue()) {
+      ry = rx;
+    }
+    if (ryAttr.hasValue() && !rxAttr.hasValue()) {
+      rx = ry;
+    }
+    rx = Math.min(rx, width / 2);
+    ry = Math.min(ry, height / 2);
+    if (ctx) {
+      var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+      ctx.beginPath();
+      if (height > 0 && width > 0) {
+        ctx.moveTo(x + rx, y2);
+        ctx.lineTo(x + width - rx, y2);
+        ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y2, x + width, y2 + ry - KAPPA * ry, x + width, y2 + ry);
+        ctx.lineTo(x + width, y2 + height - ry);
+        ctx.bezierCurveTo(x + width, y2 + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y2 + height, x + width - rx, y2 + height);
+        ctx.lineTo(x + rx, y2 + height);
+        ctx.bezierCurveTo(x + rx - KAPPA * rx, y2 + height, x, y2 + height - ry + KAPPA * ry, x, y2 + height - ry);
+        ctx.lineTo(x, y2 + ry);
+        ctx.bezierCurveTo(x, y2 + ry - KAPPA * ry, x + rx - KAPPA * rx, y2, x + rx, y2);
+        ctx.closePath();
+      }
+    }
+    return new BoundingBox(x, y2, x + width, y2 + height);
+  }
+  getMarkers() {
+    return null;
+  }
+};
+var CircleElement = class extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = "circle";
+  }
+  path(ctx) {
+    var cx = this.getAttribute("cx").getPixels("x");
+    var cy = this.getAttribute("cy").getPixels("y");
+    var r2 = this.getAttribute("r").getPixels();
+    if (ctx && r2 > 0) {
+      ctx.beginPath();
+      ctx.arc(cx, cy, r2, 0, Math.PI * 2, false);
+      ctx.closePath();
+    }
+    return new BoundingBox(cx - r2, cy - r2, cx + r2, cy + r2);
+  }
+  getMarkers() {
+    return null;
+  }
+};
+var EllipseElement = class extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = "ellipse";
+  }
+  path(ctx) {
+    var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+    var rx = this.getAttribute("rx").getPixels("x");
+    var ry = this.getAttribute("ry").getPixels("y");
+    var cx = this.getAttribute("cx").getPixels("x");
+    var cy = this.getAttribute("cy").getPixels("y");
+    if (ctx && rx > 0 && ry > 0) {
+      ctx.beginPath();
+      ctx.moveTo(cx + rx, cy);
+      ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);
+      ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);
+      ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);
+      ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);
+      ctx.closePath();
+    }
+    return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+  }
+  getMarkers() {
+    return null;
+  }
+};
+var LineElement = class extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = "line";
+  }
+  getPoints() {
+    return [new Point(this.getAttribute("x1").getPixels("x"), this.getAttribute("y1").getPixels("y")), new Point(this.getAttribute("x2").getPixels("x"), this.getAttribute("y2").getPixels("y"))];
+  }
+  path(ctx) {
+    var [{
+      x: x0,
+      y: y0
+    }, {
+      x: x1,
+      y: y1
+    }] = this.getPoints();
+    if (ctx) {
+      ctx.beginPath();
+      ctx.moveTo(x0, y0);
+      ctx.lineTo(x1, y1);
+    }
+    return new BoundingBox(x0, y0, x1, y1);
+  }
+  getMarkers() {
+    var [p0, p1] = this.getPoints();
+    var a2 = p0.angleTo(p1);
+    return [[p0, a2], [p1, a2]];
+  }
+};
+var PolylineElement = class extends PathElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "polyline";
+    this.points = [];
+    this.points = Point.parsePath(this.getAttribute("points").getString());
+  }
+  path(ctx) {
+    var {
+      points
+    } = this;
+    var [{
+      x: x0,
+      y: y0
+    }] = points;
+    var boundingBox = new BoundingBox(x0, y0);
+    if (ctx) {
+      ctx.beginPath();
+      ctx.moveTo(x0, y0);
+    }
+    points.forEach((_ref) => {
+      var {
+        x,
+        y: y2
+      } = _ref;
+      boundingBox.addPoint(x, y2);
+      if (ctx) {
+        ctx.lineTo(x, y2);
+      }
+    });
+    return boundingBox;
+  }
+  getMarkers() {
+    var {
+      points
+    } = this;
+    var lastIndex = points.length - 1;
+    var markers = [];
+    points.forEach((point, i2) => {
+      if (i2 === lastIndex) {
+        return;
+      }
+      markers.push([point, point.angleTo(points[i2 + 1])]);
+    });
+    if (markers.length > 0) {
+      markers.push([points[points.length - 1], markers[markers.length - 1][1]]);
+    }
+    return markers;
+  }
+};
+var PolygonElement = class extends PolylineElement {
+  constructor() {
+    super(...arguments);
+    this.type = "polygon";
+  }
+  path(ctx) {
+    var boundingBox = super.path(ctx);
+    var [{
+      x,
+      y: y2
+    }] = this.points;
+    if (ctx) {
+      ctx.lineTo(x, y2);
+      ctx.closePath();
+    }
+    return boundingBox;
+  }
+};
+var PatternElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "pattern";
+  }
+  createPattern(ctx, _2, parentOpacityProp) {
+    var width = this.getStyle("width").getPixels("x", true);
+    var height = this.getStyle("height").getPixels("y", true);
+    var patternSvg = new SVGElement(this.document, null);
+    patternSvg.attributes.viewBox = new Property(this.document, "viewBox", this.getAttribute("viewBox").getValue());
+    patternSvg.attributes.width = new Property(this.document, "width", "".concat(width, "px"));
+    patternSvg.attributes.height = new Property(this.document, "height", "".concat(height, "px"));
+    patternSvg.attributes.transform = new Property(this.document, "transform", this.getAttribute("patternTransform").getValue());
+    patternSvg.children = this.children;
+    var patternCanvas = this.document.createCanvas(width, height);
+    var patternCtx = patternCanvas.getContext("2d");
+    var xAttr = this.getAttribute("x");
+    var yAttr = this.getAttribute("y");
+    if (xAttr.hasValue() && yAttr.hasValue()) {
+      patternCtx.translate(xAttr.getPixels("x", true), yAttr.getPixels("y", true));
+    }
+    if (parentOpacityProp.hasValue()) {
+      this.styles["fill-opacity"] = parentOpacityProp;
+    } else {
+      Reflect.deleteProperty(this.styles, "fill-opacity");
+    }
+    for (var x = -1; x <= 1; x++) {
+      for (var y2 = -1; y2 <= 1; y2++) {
+        patternCtx.save();
+        patternSvg.attributes.x = new Property(this.document, "x", x * patternCanvas.width);
+        patternSvg.attributes.y = new Property(this.document, "y", y2 * patternCanvas.height);
+        patternSvg.render(patternCtx);
+        patternCtx.restore();
+      }
+    }
+    var pattern = ctx.createPattern(patternCanvas, "repeat");
+    return pattern;
+  }
+};
+var MarkerElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "marker";
+  }
+  render(ctx, point, angle) {
+    if (!point) {
+      return;
+    }
+    var {
+      x,
+      y: y2
+    } = point;
+    var orient = this.getAttribute("orient").getString("auto");
+    var markerUnits = this.getAttribute("markerUnits").getString("strokeWidth");
+    ctx.translate(x, y2);
+    if (orient === "auto") {
+      ctx.rotate(angle);
+    }
+    if (markerUnits === "strokeWidth") {
+      ctx.scale(ctx.lineWidth, ctx.lineWidth);
+    }
+    ctx.save();
+    var markerSvg = new SVGElement(this.document, null);
+    markerSvg.type = this.type;
+    markerSvg.attributes.viewBox = new Property(this.document, "viewBox", this.getAttribute("viewBox").getValue());
+    markerSvg.attributes.refX = new Property(this.document, "refX", this.getAttribute("refX").getValue());
+    markerSvg.attributes.refY = new Property(this.document, "refY", this.getAttribute("refY").getValue());
+    markerSvg.attributes.width = new Property(this.document, "width", this.getAttribute("markerWidth").getValue());
+    markerSvg.attributes.height = new Property(this.document, "height", this.getAttribute("markerHeight").getValue());
+    markerSvg.attributes.overflow = new Property(this.document, "overflow", this.getAttribute("overflow").getValue());
+    markerSvg.attributes.fill = new Property(this.document, "fill", this.getAttribute("fill").getColor("black"));
+    markerSvg.attributes.stroke = new Property(this.document, "stroke", this.getAttribute("stroke").getValue("none"));
+    markerSvg.children = this.children;
+    markerSvg.render(ctx);
+    ctx.restore();
+    if (markerUnits === "strokeWidth") {
+      ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
+    }
+    if (orient === "auto") {
+      ctx.rotate(-angle);
+    }
+    ctx.translate(-x, -y2);
+  }
+};
+var DefsElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "defs";
+  }
+  render() {
+  }
+};
+var GElement = class extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = "g";
+  }
+  getBoundingBox(ctx) {
+    var boundingBox = new BoundingBox();
+    this.children.forEach((child) => {
+      boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+    });
+    return boundingBox;
+  }
+};
+var GradientElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.attributesToInherit = ["gradientUnits"];
+    this.stops = [];
+    var {
+      stops,
+      children
+    } = this;
+    children.forEach((child) => {
+      if (child.type === "stop") {
+        stops.push(child);
+      }
+    });
+  }
+  getGradientUnits() {
+    return this.getAttribute("gradientUnits").getString("objectBoundingBox");
+  }
+  createGradient(ctx, element, parentOpacityProp) {
+    var stopsContainer = this;
+    if (this.getHrefAttribute().hasValue()) {
+      stopsContainer = this.getHrefAttribute().getDefinition();
+      this.inheritStopContainer(stopsContainer);
+    }
+    var {
+      stops
+    } = stopsContainer;
+    var gradient = this.getGradient(ctx, element);
+    if (!gradient) {
+      return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);
+    }
+    stops.forEach((stop) => {
+      gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));
+    });
+    if (this.getAttribute("gradientTransform").hasValue()) {
+      var {
+        document: document2
+      } = this;
+      var {
+        MAX_VIRTUAL_PIXELS,
+        viewPort
+      } = document2.screen;
+      var [rootView] = viewPort.viewPorts;
+      var rect = new RectElement(document2, null);
+      rect.attributes.x = new Property(document2, "x", -MAX_VIRTUAL_PIXELS / 3);
+      rect.attributes.y = new Property(document2, "y", -MAX_VIRTUAL_PIXELS / 3);
+      rect.attributes.width = new Property(document2, "width", MAX_VIRTUAL_PIXELS);
+      rect.attributes.height = new Property(document2, "height", MAX_VIRTUAL_PIXELS);
+      var group = new GElement(document2, null);
+      group.attributes.transform = new Property(document2, "transform", this.getAttribute("gradientTransform").getValue());
+      group.children = [rect];
+      var patternSvg = new SVGElement(document2, null);
+      patternSvg.attributes.x = new Property(document2, "x", 0);
+      patternSvg.attributes.y = new Property(document2, "y", 0);
+      patternSvg.attributes.width = new Property(document2, "width", rootView.width);
+      patternSvg.attributes.height = new Property(document2, "height", rootView.height);
+      patternSvg.children = [group];
+      var patternCanvas = document2.createCanvas(rootView.width, rootView.height);
+      var patternCtx = patternCanvas.getContext("2d");
+      patternCtx.fillStyle = gradient;
+      patternSvg.render(patternCtx);
+      return patternCtx.createPattern(patternCanvas, "no-repeat");
+    }
+    return gradient;
+  }
+  inheritStopContainer(stopsContainer) {
+    this.attributesToInherit.forEach((attributeToInherit) => {
+      if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {
+        this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());
+      }
+    });
+  }
+  addParentOpacity(parentOpacityProp, color) {
+    if (parentOpacityProp.hasValue()) {
+      var colorProp = new Property(this.document, "color", color);
+      return colorProp.addOpacity(parentOpacityProp).getColor();
+    }
+    return color;
+  }
+};
+var LinearGradientElement = class extends GradientElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "linearGradient";
+    this.attributesToInherit.push("x1", "y1", "x2", "y2");
+  }
+  getGradient(ctx, element) {
+    var isBoundingBoxUnits = this.getGradientUnits() === "objectBoundingBox";
+    var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;
+    if (isBoundingBoxUnits && !boundingBox) {
+      return null;
+    }
+    if (!this.getAttribute("x1").hasValue() && !this.getAttribute("y1").hasValue() && !this.getAttribute("x2").hasValue() && !this.getAttribute("y2").hasValue()) {
+      this.getAttribute("x1", true).setValue(0);
+      this.getAttribute("y1", true).setValue(0);
+      this.getAttribute("x2", true).setValue(1);
+      this.getAttribute("y2", true).setValue(0);
+    }
+    var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("x1").getNumber() : this.getAttribute("x1").getPixels("x");
+    var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("y1").getNumber() : this.getAttribute("y1").getPixels("y");
+    var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("x2").getNumber() : this.getAttribute("x2").getPixels("x");
+    var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("y2").getNumber() : this.getAttribute("y2").getPixels("y");
+    if (x1 === x2 && y1 === y2) {
+      return null;
+    }
+    return ctx.createLinearGradient(x1, y1, x2, y2);
+  }
+};
+var RadialGradientElement = class extends GradientElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "radialGradient";
+    this.attributesToInherit.push("cx", "cy", "r", "fx", "fy", "fr");
+  }
+  getGradient(ctx, element) {
+    var isBoundingBoxUnits = this.getGradientUnits() === "objectBoundingBox";
+    var boundingBox = element.getBoundingBox(ctx);
+    if (isBoundingBoxUnits && !boundingBox) {
+      return null;
+    }
+    if (!this.getAttribute("cx").hasValue()) {
+      this.getAttribute("cx", true).setValue("50%");
+    }
+    if (!this.getAttribute("cy").hasValue()) {
+      this.getAttribute("cy", true).setValue("50%");
+    }
+    if (!this.getAttribute("r").hasValue()) {
+      this.getAttribute("r", true).setValue("50%");
+    }
+    var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("cx").getNumber() : this.getAttribute("cx").getPixels("x");
+    var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("cy").getNumber() : this.getAttribute("cy").getPixels("y");
+    var fx = cx;
+    var fy = cy;
+    if (this.getAttribute("fx").hasValue()) {
+      fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("fx").getNumber() : this.getAttribute("fx").getPixels("x");
+    }
+    if (this.getAttribute("fy").hasValue()) {
+      fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("fy").getNumber() : this.getAttribute("fy").getPixels("y");
+    }
+    var r2 = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2 * this.getAttribute("r").getNumber() : this.getAttribute("r").getPixels();
+    var fr = this.getAttribute("fr").getPixels();
+    return ctx.createRadialGradient(fx, fy, fr, cx, cy, r2);
+  }
+};
+var StopElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "stop";
+    var offset = Math.max(0, Math.min(1, this.getAttribute("offset").getNumber()));
+    var stopOpacity = this.getStyle("stop-opacity");
+    var stopColor = this.getStyle("stop-color", true);
+    if (stopColor.getString() === "") {
+      stopColor.setValue("#000");
+    }
+    if (stopOpacity.hasValue()) {
+      stopColor = stopColor.addOpacity(stopOpacity);
+    }
+    this.offset = offset;
+    this.color = stopColor.getColor();
+  }
+};
+var AnimateElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "animate";
+    this.duration = 0;
+    this.initialValue = null;
+    this.initialUnits = "";
+    this.removed = false;
+    this.frozen = false;
+    document2.screen.animations.push(this);
+    this.begin = this.getAttribute("begin").getMilliseconds();
+    this.maxDuration = this.begin + this.getAttribute("dur").getMilliseconds();
+    this.from = this.getAttribute("from");
+    this.to = this.getAttribute("to");
+    this.values = new Property(document2, "values", null);
+    var valuesAttr = this.getAttribute("values");
+    if (valuesAttr.hasValue()) {
+      this.values.setValue(valuesAttr.getString().split(";"));
+    }
+  }
+  getProperty() {
+    var attributeType = this.getAttribute("attributeType").getString();
+    var attributeName = this.getAttribute("attributeName").getString();
+    if (attributeType === "CSS") {
+      return this.parent.getStyle(attributeName, true);
+    }
+    return this.parent.getAttribute(attributeName, true);
+  }
+  calcValue() {
+    var {
+      initialUnits
+    } = this;
+    var {
+      progress,
+      from,
+      to
+    } = this.getProgress();
+    var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;
+    if (initialUnits === "%") {
+      newValue *= 100;
+    }
+    return "".concat(newValue).concat(initialUnits);
+  }
+  update(delta) {
+    var {
+      parent
+    } = this;
+    var prop = this.getProperty();
+    if (!this.initialValue) {
+      this.initialValue = prop.getString();
+      this.initialUnits = prop.getUnits();
+    }
+    if (this.duration > this.maxDuration) {
+      var fill = this.getAttribute("fill").getString("remove");
+      if (this.getAttribute("repeatCount").getString() === "indefinite" || this.getAttribute("repeatDur").getString() === "indefinite") {
+        this.duration = 0;
+      } else if (fill === "freeze" && !this.frozen) {
+        this.frozen = true;
+        parent.animationFrozen = true;
+        parent.animationFrozenValue = prop.getString();
+      } else if (fill === "remove" && !this.removed) {
+        this.removed = true;
+        prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);
+        return true;
+      }
+      return false;
+    }
+    this.duration += delta;
+    var updated = false;
+    if (this.begin < this.duration) {
+      var newValue = this.calcValue();
+      var typeAttr = this.getAttribute("type");
+      if (typeAttr.hasValue()) {
+        var type = typeAttr.getString();
+        newValue = "".concat(type, "(").concat(newValue, ")");
+      }
+      prop.setValue(newValue);
+      updated = true;
+    }
+    return updated;
+  }
+  getProgress() {
+    var {
+      document: document2,
+      values
+    } = this;
+    var result = {
+      progress: (this.duration - this.begin) / (this.maxDuration - this.begin)
+    };
+    if (values.hasValue()) {
+      var p2 = result.progress * (values.getValue().length - 1);
+      var lb = Math.floor(p2);
+      var ub = Math.ceil(p2);
+      result.from = new Property(document2, "from", parseFloat(values.getValue()[lb]));
+      result.to = new Property(document2, "to", parseFloat(values.getValue()[ub]));
+      result.progress = (p2 - lb) / (ub - lb);
+    } else {
+      result.from = this.from;
+      result.to = this.to;
+    }
+    return result;
+  }
+};
+var AnimateColorElement = class extends AnimateElement {
+  constructor() {
+    super(...arguments);
+    this.type = "animateColor";
+  }
+  calcValue() {
+    var {
+      progress,
+      from,
+      to
+    } = this.getProgress();
+    var colorFrom = new import_rgbcolor.default(from.getColor());
+    var colorTo = new import_rgbcolor.default(to.getColor());
+    if (colorFrom.ok && colorTo.ok) {
+      var r2 = colorFrom.r + (colorTo.r - colorFrom.r) * progress;
+      var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;
+      var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress;
+      return "rgb(".concat(Math.floor(r2), ", ").concat(Math.floor(g), ", ").concat(Math.floor(b), ")");
+    }
+    return this.getAttribute("from").getColor();
+  }
+};
+var AnimateTransformElement = class extends AnimateElement {
+  constructor() {
+    super(...arguments);
+    this.type = "animateTransform";
+  }
+  calcValue() {
+    var {
+      progress,
+      from,
+      to
+    } = this.getProgress();
+    var transformFrom = toNumbers(from.getString());
+    var transformTo = toNumbers(to.getString());
+    var newValue = transformFrom.map((from2, i2) => {
+      var to2 = transformTo[i2];
+      return from2 + (to2 - from2) * progress;
+    }).join(" ");
+    return newValue;
+  }
+};
+var FontElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "font";
+    this.glyphs = {};
+    this.horizAdvX = this.getAttribute("horiz-adv-x").getNumber();
+    var {
+      definitions
+    } = document2;
+    var {
+      children
+    } = this;
+    for (var child of children) {
+      switch (child.type) {
+        case "font-face": {
+          this.fontFace = child;
+          var fontFamilyStyle = child.getStyle("font-family");
+          if (fontFamilyStyle.hasValue()) {
+            definitions[fontFamilyStyle.getString()] = this;
+          }
+          break;
+        }
+        case "missing-glyph":
+          this.missingGlyph = child;
+          break;
+        case "glyph": {
+          var glyph = child;
+          if (glyph.arabicForm) {
+            this.isRTL = true;
+            this.isArabic = true;
+            if (typeof this.glyphs[glyph.unicode] === "undefined") {
+              this.glyphs[glyph.unicode] = {};
+            }
+            this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;
+          } else {
+            this.glyphs[glyph.unicode] = glyph;
+          }
+          break;
+        }
+      }
+    }
+  }
+  render() {
+  }
+};
+var FontFaceElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "font-face";
+    this.ascent = this.getAttribute("ascent").getNumber();
+    this.descent = this.getAttribute("descent").getNumber();
+    this.unitsPerEm = this.getAttribute("units-per-em").getNumber();
+  }
+};
+var MissingGlyphElement = class extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = "missing-glyph";
+    this.horizAdvX = 0;
+  }
+};
+var TRefElement = class extends TextElement {
+  constructor() {
+    super(...arguments);
+    this.type = "tref";
+  }
+  getText() {
+    var element = this.getHrefAttribute().getDefinition();
+    if (element) {
+      var firstChild = element.children[0];
+      if (firstChild) {
+        return firstChild.getText();
+      }
+    }
+    return "";
+  }
+};
+var AElement = class extends TextElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "a";
+    var {
+      childNodes
+    } = node2;
+    var firstChild = childNodes[0];
+    var hasText = childNodes.length > 0 && Array.from(childNodes).every((node3) => node3.nodeType === 3);
+    this.hasText = hasText;
+    this.text = hasText ? this.getTextFromNode(firstChild) : "";
+  }
+  getText() {
+    return this.text;
+  }
+  renderChildren(ctx) {
+    if (this.hasText) {
+      super.renderChildren(ctx);
+      var {
+        document: document2,
+        x,
+        y: y2
+      } = this;
+      var {
+        mouse
+      } = document2.screen;
+      var fontSize = new Property(document2, "fontSize", Font.parse(document2.ctx.font).fontSize);
+      if (mouse.isWorking()) {
+        mouse.checkBoundingBox(this, new BoundingBox(x, y2 - fontSize.getPixels("y"), x + this.measureText(ctx), y2));
+      }
+    } else if (this.children.length > 0) {
+      var g = new GElement(this.document, null);
+      g.children = this.children;
+      g.parent = this;
+      g.render(ctx);
+    }
+  }
+  onClick() {
+    var {
+      window: window2
+    } = this.document;
+    if (window2) {
+      window2.open(this.getHrefAttribute().getString());
+    }
+  }
+  onMouseMove() {
+    var ctx = this.document.ctx;
+    ctx.canvas.style.cursor = "pointer";
+  }
+};
+function ownKeys$2(object, enumerableOnly) {
+  var keys = Object.keys(object);
+  if (Object.getOwnPropertySymbols) {
+    var symbols = Object.getOwnPropertySymbols(object);
+    if (enumerableOnly) {
+      symbols = symbols.filter(function(sym) {
+        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+      });
+    }
+    keys.push.apply(keys, symbols);
+  }
+  return keys;
+}
+function _objectSpread$2(target) {
+  for (var i2 = 1; i2 < arguments.length; i2++) {
+    var source = arguments[i2] != null ? arguments[i2] : {};
+    if (i2 % 2) {
+      ownKeys$2(Object(source), true).forEach(function(key) {
+        _defineProperty(target, key, source[key]);
+      });
+    } else if (Object.getOwnPropertyDescriptors) {
+      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+    } else {
+      ownKeys$2(Object(source)).forEach(function(key) {
+        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+      });
+    }
+  }
+  return target;
+}
+var TextPathElement = class extends TextElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "textPath";
+    this.textWidth = 0;
+    this.textHeight = 0;
+    this.pathLength = -1;
+    this.glyphInfo = null;
+    this.letterSpacingCache = [];
+    this.measuresCache = /* @__PURE__ */ new Map([["", 0]]);
+    var pathElement = this.getHrefAttribute().getDefinition();
+    this.text = this.getTextFromNode();
+    this.dataArray = this.parsePathData(pathElement);
+  }
+  getText() {
+    return this.text;
+  }
+  path(ctx) {
+    var {
+      dataArray
+    } = this;
+    if (ctx) {
+      ctx.beginPath();
+    }
+    dataArray.forEach((_ref) => {
+      var {
+        type,
+        points
+      } = _ref;
+      switch (type) {
+        case PathParser.LINE_TO:
+          if (ctx) {
+            ctx.lineTo(points[0], points[1]);
+          }
+          break;
+        case PathParser.MOVE_TO:
+          if (ctx) {
+            ctx.moveTo(points[0], points[1]);
+          }
+          break;
+        case PathParser.CURVE_TO:
+          if (ctx) {
+            ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);
+          }
+          break;
+        case PathParser.QUAD_TO:
+          if (ctx) {
+            ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);
+          }
+          break;
+        case PathParser.ARC: {
+          var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;
+          var r2 = rx > ry ? rx : ry;
+          var scaleX = rx > ry ? 1 : rx / ry;
+          var scaleY = rx > ry ? ry / rx : 1;
+          if (ctx) {
+            ctx.translate(cx, cy);
+            ctx.rotate(psi);
+            ctx.scale(scaleX, scaleY);
+            ctx.arc(0, 0, r2, theta, theta + dTheta, Boolean(1 - fs));
+            ctx.scale(1 / scaleX, 1 / scaleY);
+            ctx.rotate(-psi);
+            ctx.translate(-cx, -cy);
+          }
+          break;
+        }
+        case PathParser.CLOSE_PATH:
+          if (ctx) {
+            ctx.closePath();
+          }
+          break;
+      }
+    });
+  }
+  renderChildren(ctx) {
+    this.setTextData(ctx);
+    ctx.save();
+    var textDecoration = this.parent.getStyle("text-decoration").getString();
+    var fontSize = this.getFontSize();
+    var {
+      glyphInfo
+    } = this;
+    var fill = ctx.fillStyle;
+    if (textDecoration === "underline") {
+      ctx.beginPath();
+    }
+    glyphInfo.forEach((glyph, i2) => {
+      var {
+        p0,
+        p1,
+        rotation,
+        text: partialText
+      } = glyph;
+      ctx.save();
+      ctx.translate(p0.x, p0.y);
+      ctx.rotate(rotation);
+      if (ctx.fillStyle) {
+        ctx.fillText(partialText, 0, 0);
+      }
+      if (ctx.strokeStyle) {
+        ctx.strokeText(partialText, 0, 0);
+      }
+      ctx.restore();
+      if (textDecoration === "underline") {
+        if (i2 === 0) {
+          ctx.moveTo(p0.x, p0.y + fontSize / 8);
+        }
+        ctx.lineTo(p1.x, p1.y + fontSize / 5);
+      }
+    });
+    if (textDecoration === "underline") {
+      ctx.lineWidth = fontSize / 20;
+      ctx.strokeStyle = fill;
+      ctx.stroke();
+      ctx.closePath();
+    }
+    ctx.restore();
+  }
+  getLetterSpacingAt() {
+    var idx = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
+    return this.letterSpacingCache[idx] || 0;
+  }
+  findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c3, charI) {
+    var offset = inputOffset;
+    var glyphWidth = this.measureText(ctx, c3);
+    if (c3 === " " && anchor === "justify" && textFullWidth < fullPathWidth) {
+      glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;
+    }
+    if (charI > -1) {
+      offset += this.getLetterSpacingAt(charI);
+    }
+    var splineStep = this.textHeight / 20;
+    var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);
+    var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);
+    var segment = {
+      p0,
+      p1
+    };
+    var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;
+    if (dy) {
+      var dyX = Math.cos(Math.PI / 2 + rotation) * dy;
+      var dyY = Math.cos(-rotation) * dy;
+      segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {
+        x: p0.x + dyX,
+        y: p0.y + dyY
+      });
+      segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {
+        x: p1.x + dyX,
+        y: p1.y + dyY
+      });
+    }
+    offset += glyphWidth;
+    return {
+      offset,
+      segment,
+      rotation
+    };
+  }
+  measureText(ctx, text) {
+    var {
+      measuresCache
+    } = this;
+    var targetText = text || this.getText();
+    if (measuresCache.has(targetText)) {
+      return measuresCache.get(targetText);
+    }
+    var measure = this.measureTargetText(ctx, targetText);
+    measuresCache.set(targetText, measure);
+    return measure;
+  }
+  // This method supposes what all custom fonts already loaded.
+  // If some font will be loaded after this method call, <textPath> will not be rendered correctly.
+  // You need to call this method manually to update glyphs cache.
+  setTextData(ctx) {
+    if (this.glyphInfo) {
+      return;
+    }
+    var renderText = this.getText();
+    var chars = renderText.split("");
+    var spacesNumber = renderText.split(" ").length - 1;
+    var dx = this.parent.getAttribute("dx").split().map((_2) => _2.getPixels("x"));
+    var dy = this.parent.getAttribute("dy").getPixels("y");
+    var anchor = this.parent.getStyle("text-anchor").getString("start");
+    var thisSpacing = this.getStyle("letter-spacing");
+    var parentSpacing = this.parent.getStyle("letter-spacing");
+    var letterSpacing = 0;
+    if (!thisSpacing.hasValue() || thisSpacing.getValue() === "inherit") {
+      letterSpacing = parentSpacing.getPixels();
+    } else if (thisSpacing.hasValue()) {
+      if (thisSpacing.getValue() !== "initial" && thisSpacing.getValue() !== "unset") {
+        letterSpacing = thisSpacing.getPixels();
+      }
+    }
+    var letterSpacingCache = [];
+    var textLen = renderText.length;
+    this.letterSpacingCache = letterSpacingCache;
+    for (var i2 = 0; i2 < textLen; i2++) {
+      letterSpacingCache.push(typeof dx[i2] !== "undefined" ? dx[i2] : letterSpacing);
+    }
+    var dxSum = letterSpacingCache.reduce((acc, cur, i3) => i3 === 0 ? 0 : acc + cur || 0, 0);
+    var textWidth = this.measureText(ctx);
+    var textFullWidth = Math.max(textWidth + dxSum, 0);
+    this.textWidth = textWidth;
+    this.textHeight = this.getFontSize();
+    this.glyphInfo = [];
+    var fullPathWidth = this.getPathLength();
+    var startOffset = this.getStyle("startOffset").getNumber(0) * fullPathWidth;
+    var offset = 0;
+    if (anchor === "middle" || anchor === "center") {
+      offset = -textFullWidth / 2;
+    }
+    if (anchor === "end" || anchor === "right") {
+      offset = -textFullWidth;
+    }
+    offset += startOffset;
+    chars.forEach((char, i3) => {
+      var {
+        offset: nextOffset,
+        segment,
+        rotation
+      } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i3);
+      offset = nextOffset;
+      if (!segment.p0 || !segment.p1) {
+        return;
+      }
+      this.glyphInfo.push({
+        // transposeX: midpoint.x,
+        // transposeY: midpoint.y,
+        text: chars[i3],
+        p0: segment.p0,
+        p1: segment.p1,
+        rotation
+      });
+    });
+  }
+  parsePathData(path) {
+    this.pathLength = -1;
+    if (!path) {
+      return [];
+    }
+    var pathCommands = [];
+    var {
+      pathParser
+    } = path;
+    pathParser.reset();
+    while (!pathParser.isEnd()) {
+      var {
+        current
+      } = pathParser;
+      var startX = current ? current.x : 0;
+      var startY = current ? current.y : 0;
+      var command = pathParser.next();
+      var nextCommandType = command.type;
+      var points = [];
+      switch (command.type) {
+        case PathParser.MOVE_TO:
+          this.pathM(pathParser, points);
+          break;
+        case PathParser.LINE_TO:
+          nextCommandType = this.pathL(pathParser, points);
+          break;
+        case PathParser.HORIZ_LINE_TO:
+          nextCommandType = this.pathH(pathParser, points);
+          break;
+        case PathParser.VERT_LINE_TO:
+          nextCommandType = this.pathV(pathParser, points);
+          break;
+        case PathParser.CURVE_TO:
+          this.pathC(pathParser, points);
+          break;
+        case PathParser.SMOOTH_CURVE_TO:
+          nextCommandType = this.pathS(pathParser, points);
+          break;
+        case PathParser.QUAD_TO:
+          this.pathQ(pathParser, points);
+          break;
+        case PathParser.SMOOTH_QUAD_TO:
+          nextCommandType = this.pathT(pathParser, points);
+          break;
+        case PathParser.ARC:
+          points = this.pathA(pathParser);
+          break;
+        case PathParser.CLOSE_PATH:
+          PathElement.pathZ(pathParser);
+          break;
+      }
+      if (command.type !== PathParser.CLOSE_PATH) {
+        pathCommands.push({
+          type: nextCommandType,
+          points,
+          start: {
+            x: startX,
+            y: startY
+          },
+          pathLength: this.calcLength(startX, startY, nextCommandType, points)
+        });
+      } else {
+        pathCommands.push({
+          type: PathParser.CLOSE_PATH,
+          points: [],
+          pathLength: 0
+        });
+      }
+    }
+    return pathCommands;
+  }
+  pathM(pathParser, points) {
+    var {
+      x,
+      y: y2
+    } = PathElement.pathM(pathParser).point;
+    points.push(x, y2);
+  }
+  pathL(pathParser, points) {
+    var {
+      x,
+      y: y2
+    } = PathElement.pathL(pathParser).point;
+    points.push(x, y2);
+    return PathParser.LINE_TO;
+  }
+  pathH(pathParser, points) {
+    var {
+      x,
+      y: y2
+    } = PathElement.pathH(pathParser).point;
+    points.push(x, y2);
+    return PathParser.LINE_TO;
+  }
+  pathV(pathParser, points) {
+    var {
+      x,
+      y: y2
+    } = PathElement.pathV(pathParser).point;
+    points.push(x, y2);
+    return PathParser.LINE_TO;
+  }
+  pathC(pathParser, points) {
+    var {
+      point,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathC(pathParser);
+    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+  }
+  pathS(pathParser, points) {
+    var {
+      point,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathS(pathParser);
+    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    return PathParser.CURVE_TO;
+  }
+  pathQ(pathParser, points) {
+    var {
+      controlPoint,
+      currentPoint
+    } = PathElement.pathQ(pathParser);
+    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+  }
+  pathT(pathParser, points) {
+    var {
+      controlPoint,
+      currentPoint
+    } = PathElement.pathT(pathParser);
+    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    return PathParser.QUAD_TO;
+  }
+  pathA(pathParser) {
+    var {
+      rX,
+      rY,
+      sweepFlag,
+      xAxisRotation,
+      centp,
+      a1,
+      ad
+    } = PathElement.pathA(pathParser);
+    if (sweepFlag === 0 && ad > 0) {
+      ad -= 2 * Math.PI;
+    }
+    if (sweepFlag === 1 && ad < 0) {
+      ad += 2 * Math.PI;
+    }
+    return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];
+  }
+  calcLength(x, y2, commandType, points) {
+    var len = 0;
+    var p1 = null;
+    var p2 = null;
+    var t2 = 0;
+    switch (commandType) {
+      case PathParser.LINE_TO:
+        return this.getLineLength(x, y2, points[0], points[1]);
+      case PathParser.CURVE_TO:
+        len = 0;
+        p1 = this.getPointOnCubicBezier(0, x, y2, points[0], points[1], points[2], points[3], points[4], points[5]);
+        for (t2 = 0.01; t2 <= 1; t2 += 0.01) {
+          p2 = this.getPointOnCubicBezier(t2, x, y2, points[0], points[1], points[2], points[3], points[4], points[5]);
+          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+          p1 = p2;
+        }
+        return len;
+      case PathParser.QUAD_TO:
+        len = 0;
+        p1 = this.getPointOnQuadraticBezier(0, x, y2, points[0], points[1], points[2], points[3]);
+        for (t2 = 0.01; t2 <= 1; t2 += 0.01) {
+          p2 = this.getPointOnQuadraticBezier(t2, x, y2, points[0], points[1], points[2], points[3]);
+          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+          p1 = p2;
+        }
+        return len;
+      case PathParser.ARC: {
+        len = 0;
+        var start = points[4];
+        var dTheta = points[5];
+        var end = points[4] + dTheta;
+        var inc = Math.PI / 180;
+        if (Math.abs(start - end) < inc) {
+          inc = Math.abs(start - end);
+        }
+        p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);
+        if (dTheta < 0) {
+          for (t2 = start - inc; t2 > end; t2 -= inc) {
+            p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t2, 0);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            p1 = p2;
+          }
+        } else {
+          for (t2 = start + inc; t2 < end; t2 += inc) {
+            p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t2, 0);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            p1 = p2;
+          }
+        }
+        p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);
+        len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+        return len;
+      }
+    }
+    return 0;
+  }
+  getPointOnLine(dist, p1x, p1y, p2x, p2y) {
+    var fromX = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : p1x;
+    var fromY = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : p1y;
+    var m3 = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);
+    var run = Math.sqrt(dist * dist / (1 + m3 * m3));
+    if (p2x < p1x) {
+      run *= -1;
+    }
+    var rise = m3 * run;
+    var pt = null;
+    if (p2x === p1x) {
+      pt = {
+        x: fromX,
+        y: fromY + rise
+      };
+    } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m3) {
+      pt = {
+        x: fromX + run,
+        y: fromY + rise
+      };
+    } else {
+      var ix = 0;
+      var iy = 0;
+      var len = this.getLineLength(p1x, p1y, p2x, p2y);
+      if (len < PSEUDO_ZERO) {
+        return null;
+      }
+      var u2 = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);
+      u2 /= len * len;
+      ix = p1x + u2 * (p2x - p1x);
+      iy = p1y + u2 * (p2y - p1y);
+      var pRise = this.getLineLength(fromX, fromY, ix, iy);
+      var pRun = Math.sqrt(dist * dist - pRise * pRise);
+      run = Math.sqrt(pRun * pRun / (1 + m3 * m3));
+      if (p2x < p1x) {
+        run *= -1;
+      }
+      rise = m3 * run;
+      pt = {
+        x: ix + run,
+        y: iy + rise
+      };
+    }
+    return pt;
+  }
+  getPointOnPath(distance) {
+    var fullLen = this.getPathLength();
+    var cumulativePathLength = 0;
+    var p2 = null;
+    if (distance < -5e-5 || distance - 5e-5 > fullLen) {
+      return null;
+    }
+    var {
+      dataArray
+    } = this;
+    for (var command of dataArray) {
+      if (command && (command.pathLength < 5e-5 || cumulativePathLength + command.pathLength + 5e-5 < distance)) {
+        cumulativePathLength += command.pathLength;
+        continue;
+      }
+      var delta = distance - cumulativePathLength;
+      var currentT = 0;
+      switch (command.type) {
+        case PathParser.LINE_TO:
+          p2 = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);
+          break;
+        case PathParser.ARC: {
+          var start = command.points[4];
+          var dTheta = command.points[5];
+          var end = command.points[4] + dTheta;
+          currentT = start + delta / command.pathLength * dTheta;
+          if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {
+            break;
+          }
+          p2 = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);
+          break;
+        }
+        case PathParser.CURVE_TO:
+          currentT = delta / command.pathLength;
+          if (currentT > 1) {
+            currentT = 1;
+          }
+          p2 = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);
+          break;
+        case PathParser.QUAD_TO:
+          currentT = delta / command.pathLength;
+          if (currentT > 1) {
+            currentT = 1;
+          }
+          p2 = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);
+          break;
+      }
+      if (p2) {
+        return p2;
+      }
+      break;
+    }
+    return null;
+  }
+  getLineLength(x1, y1, x2, y2) {
+    return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
+  }
+  getPathLength() {
+    if (this.pathLength === -1) {
+      this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);
+    }
+    return this.pathLength;
+  }
+  getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
+    var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);
+    var y2 = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);
+    return {
+      x,
+      y: y2
+    };
+  }
+  getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {
+    var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);
+    var y2 = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);
+    return {
+      x,
+      y: y2
+    };
+  }
+  getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {
+    var cosPsi = Math.cos(psi);
+    var sinPsi = Math.sin(psi);
+    var pt = {
+      x: rx * Math.cos(theta),
+      y: ry * Math.sin(theta)
+    };
+    return {
+      x: cx + (pt.x * cosPsi - pt.y * sinPsi),
+      y: cy + (pt.x * sinPsi + pt.y * cosPsi)
+    };
+  }
+  // TODO need some optimisations. possibly build cache only for curved segments?
+  buildEquidistantCache(inputStep, inputPrecision) {
+    var fullLen = this.getPathLength();
+    var precision = inputPrecision || 0.25;
+    var step = inputStep || fullLen / 100;
+    if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {
+      this.equidistantCache = {
+        step,
+        precision,
+        points: []
+      };
+      var s2 = 0;
+      for (var l2 = 0; l2 <= fullLen; l2 += precision) {
+        var p0 = this.getPointOnPath(l2);
+        var p1 = this.getPointOnPath(l2 + precision);
+        if (!p0 || !p1) {
+          continue;
+        }
+        s2 += this.getLineLength(p0.x, p0.y, p1.x, p1.y);
+        if (s2 >= step) {
+          this.equidistantCache.points.push({
+            x: p0.x,
+            y: p0.y,
+            distance: l2
+          });
+          s2 -= step;
+        }
+      }
+    }
+  }
+  getEquidistantPointOnPath(targetDistance, step, precision) {
+    this.buildEquidistantCache(step, precision);
+    if (targetDistance < 0 || targetDistance - this.getPathLength() > 5e-5) {
+      return null;
+    }
+    var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));
+    return this.equidistantCache.points[idx] || null;
+  }
+};
+var dataUriRegex = /^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;
+var ImageElement = class extends RenderedElement {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "image";
+    this.loaded = false;
+    var href = this.getHrefAttribute().getString();
+    if (!href) {
+      return;
+    }
+    var isSvg = href.endsWith(".svg") || /^\s*data:image\/svg\+xml/i.test(href);
+    document2.images.push(this);
+    if (!isSvg) {
+      void this.loadImage(href);
+    } else {
+      void this.loadSvg(href);
+    }
+    this.isSvg = isSvg;
+  }
+  loadImage(href) {
+    var _this = this;
+    return _asyncToGenerator(function* () {
+      try {
+        var image = yield _this.document.createImage(href);
+        _this.image = image;
+      } catch (err) {
+        console.error('Error while loading image "'.concat(href, '":'), err);
+      }
+      _this.loaded = true;
+    })();
+  }
+  loadSvg(href) {
+    var _this2 = this;
+    return _asyncToGenerator(function* () {
+      var match = dataUriRegex.exec(href);
+      if (match) {
+        var data = match[5];
+        if (match[4] === "base64") {
+          _this2.image = atob(data);
+        } else {
+          _this2.image = decodeURIComponent(data);
+        }
+      } else {
+        try {
+          var response = yield _this2.document.fetch(href);
+          var svg = yield response.text();
+          _this2.image = svg;
+        } catch (err) {
+          console.error('Error while loading image "'.concat(href, '":'), err);
+        }
+      }
+      _this2.loaded = true;
+    })();
+  }
+  renderChildren(ctx) {
+    var {
+      document: document2,
+      image,
+      loaded
+    } = this;
+    var x = this.getAttribute("x").getPixels("x");
+    var y2 = this.getAttribute("y").getPixels("y");
+    var width = this.getStyle("width").getPixels("x");
+    var height = this.getStyle("height").getPixels("y");
+    if (!loaded || !image || !width || !height) {
+      return;
+    }
+    ctx.save();
+    ctx.translate(x, y2);
+    if (this.isSvg) {
+      var subDocument = document2.canvg.forkString(ctx, this.image, {
+        ignoreMouse: true,
+        ignoreAnimation: true,
+        ignoreDimensions: true,
+        ignoreClear: true,
+        offsetX: 0,
+        offsetY: 0,
+        scaleWidth: width,
+        scaleHeight: height
+      });
+      subDocument.document.documentElement.parent = this;
+      void subDocument.render();
+    } else {
+      var _image = this.image;
+      document2.setViewBox({
+        ctx,
+        aspectRatio: this.getAttribute("preserveAspectRatio").getString(),
+        width,
+        desiredWidth: _image.width,
+        height,
+        desiredHeight: _image.height
+      });
+      if (this.loaded) {
+        if (typeof _image.complete === "undefined" || _image.complete) {
+          ctx.drawImage(_image, 0, 0);
+        }
+      }
+    }
+    ctx.restore();
+  }
+  getBoundingBox() {
+    var x = this.getAttribute("x").getPixels("x");
+    var y2 = this.getAttribute("y").getPixels("y");
+    var width = this.getStyle("width").getPixels("x");
+    var height = this.getStyle("height").getPixels("y");
+    return new BoundingBox(x, y2, x + width, y2 + height);
+  }
+};
+var SymbolElement = class extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = "symbol";
+  }
+  render(_2) {
+  }
+};
+var SVGFontLoader = class {
+  constructor(document2) {
+    this.document = document2;
+    this.loaded = false;
+    document2.fonts.push(this);
+  }
+  load(fontFamily, url) {
+    var _this = this;
+    return _asyncToGenerator(function* () {
+      try {
+        var {
+          document: document2
+        } = _this;
+        var svgDocument = yield document2.canvg.parser.load(url);
+        var fonts = svgDocument.getElementsByTagName("font");
+        Array.from(fonts).forEach((fontNode) => {
+          var font = document2.createElement(fontNode);
+          document2.definitions[fontFamily] = font;
+        });
+      } catch (err) {
+        console.error('Error while loading font "'.concat(url, '":'), err);
+      }
+      _this.loaded = true;
+    })();
+  }
+};
+var StyleElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "style";
+    var css = compressSpaces(
+      Array.from(node2.childNodes).map((_2) => _2.textContent).join("").replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, "").replace(/@import.*;/g, "")
+      // remove imports
+    );
+    var cssDefs = css.split("}");
+    cssDefs.forEach((_2) => {
+      var def = _2.trim();
+      if (!def) {
+        return;
+      }
+      var cssParts = def.split("{");
+      var cssClasses = cssParts[0].split(",");
+      var cssProps = cssParts[1].split(";");
+      cssClasses.forEach((_3) => {
+        var cssClass = _3.trim();
+        if (!cssClass) {
+          return;
+        }
+        var props = document2.styles[cssClass] || {};
+        cssProps.forEach((cssProp) => {
+          var prop = cssProp.indexOf(":");
+          var name = cssProp.substr(0, prop).trim();
+          var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();
+          if (name && value) {
+            props[name] = new Property(document2, name, value);
+          }
+        });
+        document2.styles[cssClass] = props;
+        document2.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);
+        if (cssClass === "@font-face") {
+          var fontFamily = props["font-family"].getString().replace(/"|'/g, "");
+          var srcs = props.src.getString().split(",");
+          srcs.forEach((src) => {
+            if (src.indexOf('format("svg")') > 0) {
+              var url = parseExternalUrl(src);
+              if (url) {
+                void new SVGFontLoader(document2).load(fontFamily, url);
+              }
+            }
+          });
+        }
+      });
+    });
+  }
+};
+StyleElement.parseExternalUrl = parseExternalUrl;
+var UseElement = class extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = "use";
+  }
+  setContext(ctx) {
+    super.setContext(ctx);
+    var xAttr = this.getAttribute("x");
+    var yAttr = this.getAttribute("y");
+    if (xAttr.hasValue()) {
+      ctx.translate(xAttr.getPixels("x"), 0);
+    }
+    if (yAttr.hasValue()) {
+      ctx.translate(0, yAttr.getPixels("y"));
+    }
+  }
+  path(ctx) {
+    var {
+      element
+    } = this;
+    if (element) {
+      element.path(ctx);
+    }
+  }
+  renderChildren(ctx) {
+    var {
+      document: document2,
+      element
+    } = this;
+    if (element) {
+      var tempSvg = element;
+      if (element.type === "symbol") {
+        tempSvg = new SVGElement(document2, null);
+        tempSvg.attributes.viewBox = new Property(document2, "viewBox", element.getAttribute("viewBox").getString());
+        tempSvg.attributes.preserveAspectRatio = new Property(document2, "preserveAspectRatio", element.getAttribute("preserveAspectRatio").getString());
+        tempSvg.attributes.overflow = new Property(document2, "overflow", element.getAttribute("overflow").getString());
+        tempSvg.children = element.children;
+        element.styles.opacity = new Property(document2, "opacity", this.calculateOpacity());
+      }
+      if (tempSvg.type === "svg") {
+        var widthStyle = this.getStyle("width", false, true);
+        var heightStyle = this.getStyle("height", false, true);
+        if (widthStyle.hasValue()) {
+          tempSvg.attributes.width = new Property(document2, "width", widthStyle.getString());
+        }
+        if (heightStyle.hasValue()) {
+          tempSvg.attributes.height = new Property(document2, "height", heightStyle.getString());
+        }
+      }
+      var oldParent = tempSvg.parent;
+      tempSvg.parent = this;
+      tempSvg.render(ctx);
+      tempSvg.parent = oldParent;
+    }
+  }
+  getBoundingBox(ctx) {
+    var {
+      element
+    } = this;
+    if (element) {
+      return element.getBoundingBox(ctx);
+    }
+    return null;
+  }
+  elementTransform() {
+    var {
+      document: document2,
+      element
+    } = this;
+    return Transform.fromElement(document2, element);
+  }
+  get element() {
+    if (!this.cachedElement) {
+      this.cachedElement = this.getHrefAttribute().getDefinition();
+    }
+    return this.cachedElement;
+  }
+};
+function imGet(img, x, y2, width, _height, rgba) {
+  return img[y2 * width * 4 + x * 4 + rgba];
+}
+function imSet(img, x, y2, width, _height, rgba, val) {
+  img[y2 * width * 4 + x * 4 + rgba] = val;
+}
+function m2(matrix, i2, v2) {
+  var mi = matrix[i2];
+  return mi * v2;
+}
+function c2(a2, m1, m22, m3) {
+  return m1 + Math.cos(a2) * m22 + Math.sin(a2) * m3;
+}
+var FeColorMatrixElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "feColorMatrix";
+    var matrix = toNumbers(this.getAttribute("values").getString());
+    switch (this.getAttribute("type").getString("matrix")) {
+      case "saturate": {
+        var s2 = matrix[0];
+        matrix = [0.213 + 0.787 * s2, 0.715 - 0.715 * s2, 0.072 - 0.072 * s2, 0, 0, 0.213 - 0.213 * s2, 0.715 + 0.285 * s2, 0.072 - 0.072 * s2, 0, 0, 0.213 - 0.213 * s2, 0.715 - 0.715 * s2, 0.072 + 0.928 * s2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+        break;
+      }
+      case "hueRotate": {
+        var a2 = matrix[0] * Math.PI / 180;
+        matrix = [c2(a2, 0.213, 0.787, -0.213), c2(a2, 0.715, -0.715, -0.715), c2(a2, 0.072, -0.072, 0.928), 0, 0, c2(a2, 0.213, -0.213, 0.143), c2(a2, 0.715, 0.285, 0.14), c2(a2, 0.072, -0.072, -0.283), 0, 0, c2(a2, 0.213, -0.213, -0.787), c2(a2, 0.715, -0.715, 0.715), c2(a2, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+        break;
+      }
+      case "luminanceToAlpha":
+        matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];
+        break;
+    }
+    this.matrix = matrix;
+    this.includeOpacity = this.getAttribute("includeOpacity").hasValue();
+  }
+  apply(ctx, _x, _y, width, height) {
+    var {
+      includeOpacity,
+      matrix
+    } = this;
+    var srcData = ctx.getImageData(0, 0, width, height);
+    for (var y2 = 0; y2 < height; y2++) {
+      for (var x = 0; x < width; x++) {
+        var r2 = imGet(srcData.data, x, y2, width, height, 0);
+        var g = imGet(srcData.data, x, y2, width, height, 1);
+        var b = imGet(srcData.data, x, y2, width, height, 2);
+        var a2 = imGet(srcData.data, x, y2, width, height, 3);
+        var nr = m2(matrix, 0, r2) + m2(matrix, 1, g) + m2(matrix, 2, b) + m2(matrix, 3, a2) + m2(matrix, 4, 1);
+        var ng = m2(matrix, 5, r2) + m2(matrix, 6, g) + m2(matrix, 7, b) + m2(matrix, 8, a2) + m2(matrix, 9, 1);
+        var nb = m2(matrix, 10, r2) + m2(matrix, 11, g) + m2(matrix, 12, b) + m2(matrix, 13, a2) + m2(matrix, 14, 1);
+        var na = m2(matrix, 15, r2) + m2(matrix, 16, g) + m2(matrix, 17, b) + m2(matrix, 18, a2) + m2(matrix, 19, 1);
+        if (includeOpacity) {
+          nr = 0;
+          ng = 0;
+          nb = 0;
+          na *= a2 / 255;
+        }
+        imSet(srcData.data, x, y2, width, height, 0, nr);
+        imSet(srcData.data, x, y2, width, height, 1, ng);
+        imSet(srcData.data, x, y2, width, height, 2, nb);
+        imSet(srcData.data, x, y2, width, height, 3, na);
+      }
+    }
+    ctx.clearRect(0, 0, width, height);
+    ctx.putImageData(srcData, 0, 0);
+  }
+};
+var MaskElement = class _MaskElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "mask";
+  }
+  apply(ctx, element) {
+    var {
+      document: document2
+    } = this;
+    var x = this.getAttribute("x").getPixels("x");
+    var y2 = this.getAttribute("y").getPixels("y");
+    var width = this.getStyle("width").getPixels("x");
+    var height = this.getStyle("height").getPixels("y");
+    if (!width && !height) {
+      var boundingBox = new BoundingBox();
+      this.children.forEach((child) => {
+        boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+      });
+      x = Math.floor(boundingBox.x1);
+      y2 = Math.floor(boundingBox.y1);
+      width = Math.floor(boundingBox.width);
+      height = Math.floor(boundingBox.height);
+    }
+    var ignoredStyles = this.removeStyles(element, _MaskElement.ignoreStyles);
+    var maskCanvas = document2.createCanvas(x + width, y2 + height);
+    var maskCtx = maskCanvas.getContext("2d");
+    document2.screen.setDefaults(maskCtx);
+    this.renderChildren(maskCtx);
+    new FeColorMatrixElement(document2, {
+      nodeType: 1,
+      childNodes: [],
+      attributes: [{
+        nodeName: "type",
+        value: "luminanceToAlpha"
+      }, {
+        nodeName: "includeOpacity",
+        value: "true"
+      }]
+    }).apply(maskCtx, 0, 0, x + width, y2 + height);
+    var tmpCanvas = document2.createCanvas(x + width, y2 + height);
+    var tmpCtx = tmpCanvas.getContext("2d");
+    document2.screen.setDefaults(tmpCtx);
+    element.render(tmpCtx);
+    tmpCtx.globalCompositeOperation = "destination-in";
+    tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, "no-repeat");
+    tmpCtx.fillRect(0, 0, x + width, y2 + height);
+    ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, "no-repeat");
+    ctx.fillRect(0, 0, x + width, y2 + height);
+    this.restoreStyles(element, ignoredStyles);
+  }
+  render(_2) {
+  }
+};
+MaskElement.ignoreStyles = ["mask", "transform", "clip-path"];
+var noop = () => {
+};
+var ClipPathElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "clipPath";
+  }
+  apply(ctx) {
+    var {
+      document: document2
+    } = this;
+    var contextProto = Reflect.getPrototypeOf(ctx);
+    var {
+      beginPath,
+      closePath
+    } = ctx;
+    if (contextProto) {
+      contextProto.beginPath = noop;
+      contextProto.closePath = noop;
+    }
+    Reflect.apply(beginPath, ctx, []);
+    this.children.forEach((child) => {
+      if (typeof child.path === "undefined") {
+        return;
+      }
+      var transform = typeof child.elementTransform !== "undefined" ? child.elementTransform() : null;
+      if (!transform) {
+        transform = Transform.fromElement(document2, child);
+      }
+      if (transform) {
+        transform.apply(ctx);
+      }
+      child.path(ctx);
+      if (contextProto) {
+        contextProto.closePath = closePath;
+      }
+      if (transform) {
+        transform.unapply(ctx);
+      }
+    });
+    Reflect.apply(closePath, ctx, []);
+    ctx.clip();
+    if (contextProto) {
+      contextProto.beginPath = beginPath;
+      contextProto.closePath = closePath;
+    }
+  }
+  render(_2) {
+  }
+};
+var FilterElement = class _FilterElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "filter";
+  }
+  apply(ctx, element) {
+    var {
+      document: document2,
+      children
+    } = this;
+    var boundingBox = element.getBoundingBox(ctx);
+    if (!boundingBox) {
+      return;
+    }
+    var px = 0;
+    var py = 0;
+    children.forEach((child) => {
+      var efd = child.extraFilterDistance || 0;
+      px = Math.max(px, efd);
+      py = Math.max(py, efd);
+    });
+    var width = Math.floor(boundingBox.width);
+    var height = Math.floor(boundingBox.height);
+    var tmpCanvasWidth = width + 2 * px;
+    var tmpCanvasHeight = height + 2 * py;
+    if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {
+      return;
+    }
+    var x = Math.floor(boundingBox.x);
+    var y2 = Math.floor(boundingBox.y);
+    var ignoredStyles = this.removeStyles(element, _FilterElement.ignoreStyles);
+    var tmpCanvas = document2.createCanvas(tmpCanvasWidth, tmpCanvasHeight);
+    var tmpCtx = tmpCanvas.getContext("2d");
+    document2.screen.setDefaults(tmpCtx);
+    tmpCtx.translate(-x + px, -y2 + py);
+    element.render(tmpCtx);
+    children.forEach((child) => {
+      if (typeof child.apply === "function") {
+        child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);
+      }
+    });
+    ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y2 - py, tmpCanvasWidth, tmpCanvasHeight);
+    this.restoreStyles(element, ignoredStyles);
+  }
+  render(_2) {
+  }
+};
+FilterElement.ignoreStyles = ["filter", "transform", "clip-path"];
+var FeDropShadowElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "feDropShadow";
+    this.addStylesFromStyleDefinition();
+  }
+  apply(_2, _x, _y, _width, _height) {
+  }
+};
+var FeMorphologyElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "feMorphology";
+  }
+  apply(_2, _x, _y, _width, _height) {
+  }
+};
+var FeCompositeElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "feComposite";
+  }
+  apply(_2, _x, _y, _width, _height) {
+  }
+};
+var FeGaussianBlurElement = class extends Element {
+  constructor(document2, node2, captureTextNodes) {
+    super(document2, node2, captureTextNodes);
+    this.type = "feGaussianBlur";
+    this.blurRadius = Math.floor(this.getAttribute("stdDeviation").getNumber());
+    this.extraFilterDistance = this.blurRadius;
+  }
+  apply(ctx, x, y2, width, height) {
+    var {
+      document: document2,
+      blurRadius
+    } = this;
+    var body = document2.window ? document2.window.document.body : null;
+    var canvas = ctx.canvas;
+    canvas.id = document2.getUniqueId();
+    if (body) {
+      canvas.style.display = "none";
+      body.appendChild(canvas);
+    }
+    processCanvasRGBA(canvas, x, y2, width, height, blurRadius);
+    if (body) {
+      body.removeChild(canvas);
+    }
+  }
+};
+var TitleElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "title";
+  }
+};
+var DescElement = class extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = "desc";
+  }
+};
+var elements = {
+  "svg": SVGElement,
+  "rect": RectElement,
+  "circle": CircleElement,
+  "ellipse": EllipseElement,
+  "line": LineElement,
+  "polyline": PolylineElement,
+  "polygon": PolygonElement,
+  "path": PathElement,
+  "pattern": PatternElement,
+  "marker": MarkerElement,
+  "defs": DefsElement,
+  "linearGradient": LinearGradientElement,
+  "radialGradient": RadialGradientElement,
+  "stop": StopElement,
+  "animate": AnimateElement,
+  "animateColor": AnimateColorElement,
+  "animateTransform": AnimateTransformElement,
+  "font": FontElement,
+  "font-face": FontFaceElement,
+  "missing-glyph": MissingGlyphElement,
+  "glyph": GlyphElement,
+  "text": TextElement,
+  "tspan": TSpanElement,
+  "tref": TRefElement,
+  "a": AElement,
+  "textPath": TextPathElement,
+  "image": ImageElement,
+  "g": GElement,
+  "symbol": SymbolElement,
+  "style": StyleElement,
+  "use": UseElement,
+  "mask": MaskElement,
+  "clipPath": ClipPathElement,
+  "filter": FilterElement,
+  "feDropShadow": FeDropShadowElement,
+  "feMorphology": FeMorphologyElement,
+  "feComposite": FeCompositeElement,
+  "feColorMatrix": FeColorMatrixElement,
+  "feGaussianBlur": FeGaussianBlurElement,
+  "title": TitleElement,
+  "desc": DescElement
+};
+function ownKeys$1(object, enumerableOnly) {
+  var keys = Object.keys(object);
+  if (Object.getOwnPropertySymbols) {
+    var symbols = Object.getOwnPropertySymbols(object);
+    if (enumerableOnly) {
+      symbols = symbols.filter(function(sym) {
+        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+      });
+    }
+    keys.push.apply(keys, symbols);
+  }
+  return keys;
+}
+function _objectSpread$1(target) {
+  for (var i2 = 1; i2 < arguments.length; i2++) {
+    var source = arguments[i2] != null ? arguments[i2] : {};
+    if (i2 % 2) {
+      ownKeys$1(Object(source), true).forEach(function(key) {
+        _defineProperty(target, key, source[key]);
+      });
+    } else if (Object.getOwnPropertyDescriptors) {
+      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+    } else {
+      ownKeys$1(Object(source)).forEach(function(key) {
+        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+      });
+    }
+  }
+  return target;
+}
+function createCanvas(width, height) {
+  var canvas = document.createElement("canvas");
+  canvas.width = width;
+  canvas.height = height;
+  return canvas;
+}
+function createImage(_x) {
+  return _createImage.apply(this, arguments);
+}
+function _createImage() {
+  _createImage = _asyncToGenerator(function* (src) {
+    var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
+    var image = document.createElement("img");
+    if (anonymousCrossOrigin) {
+      image.crossOrigin = "Anonymous";
+    }
+    return new Promise((resolve, reject) => {
+      image.onload = () => {
+        resolve(image);
+      };
+      image.onerror = (_event, _source, _lineno, _colno, error) => {
+        reject(error);
+      };
+      image.src = src;
+    });
+  });
+  return _createImage.apply(this, arguments);
+}
+var Document = class _Document {
+  constructor(canvg) {
+    var {
+      rootEmSize = 12,
+      emSize = 12,
+      createCanvas: createCanvas2 = _Document.createCanvas,
+      createImage: createImage2 = _Document.createImage,
+      anonymousCrossOrigin
+    } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+    this.canvg = canvg;
+    this.definitions = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.images = [];
+    this.fonts = [];
+    this.emSizeStack = [];
+    this.uniqueId = 0;
+    this.screen = canvg.screen;
+    this.rootEmSize = rootEmSize;
+    this.emSize = emSize;
+    this.createCanvas = createCanvas2;
+    this.createImage = this.bindCreateImage(createImage2, anonymousCrossOrigin);
+    this.screen.wait(this.isImagesLoaded.bind(this));
+    this.screen.wait(this.isFontsLoaded.bind(this));
+  }
+  bindCreateImage(createImage2, anonymousCrossOrigin) {
+    if (typeof anonymousCrossOrigin === "boolean") {
+      return (source, forceAnonymousCrossOrigin) => createImage2(source, typeof forceAnonymousCrossOrigin === "boolean" ? forceAnonymousCrossOrigin : anonymousCrossOrigin);
+    }
+    return createImage2;
+  }
+  get window() {
+    return this.screen.window;
+  }
+  get fetch() {
+    return this.screen.fetch;
+  }
+  get ctx() {
+    return this.screen.ctx;
+  }
+  get emSize() {
+    var {
+      emSizeStack
+    } = this;
+    return emSizeStack[emSizeStack.length - 1];
+  }
+  set emSize(value) {
+    var {
+      emSizeStack
+    } = this;
+    emSizeStack.push(value);
+  }
+  popEmSize() {
+    var {
+      emSizeStack
+    } = this;
+    emSizeStack.pop();
+  }
+  getUniqueId() {
+    return "canvg".concat(++this.uniqueId);
+  }
+  isImagesLoaded() {
+    return this.images.every((_2) => _2.loaded);
+  }
+  isFontsLoaded() {
+    return this.fonts.every((_2) => _2.loaded);
+  }
+  createDocumentElement(document2) {
+    var documentElement = this.createElement(document2.documentElement);
+    documentElement.root = true;
+    documentElement.addStylesFromStyleDefinition();
+    this.documentElement = documentElement;
+    return documentElement;
+  }
+  createElement(node2) {
+    var elementType = node2.nodeName.replace(/^[^:]+:/, "");
+    var ElementType = _Document.elementTypes[elementType];
+    if (typeof ElementType !== "undefined") {
+      return new ElementType(this, node2);
+    }
+    return new UnknownElement(this, node2);
+  }
+  createTextNode(node2) {
+    return new TextNode(this, node2);
+  }
+  setViewBox(config) {
+    this.screen.setViewBox(_objectSpread$1({
+      document: this
+    }, config));
+  }
+};
+Document.createCanvas = createCanvas;
+Document.createImage = createImage;
+Document.elementTypes = elements;
+function ownKeys(object, enumerableOnly) {
+  var keys = Object.keys(object);
+  if (Object.getOwnPropertySymbols) {
+    var symbols = Object.getOwnPropertySymbols(object);
+    if (enumerableOnly) {
+      symbols = symbols.filter(function(sym) {
+        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+      });
+    }
+    keys.push.apply(keys, symbols);
+  }
+  return keys;
+}
+function _objectSpread(target) {
+  for (var i2 = 1; i2 < arguments.length; i2++) {
+    var source = arguments[i2] != null ? arguments[i2] : {};
+    if (i2 % 2) {
+      ownKeys(Object(source), true).forEach(function(key) {
+        _defineProperty(target, key, source[key]);
+      });
+    } else if (Object.getOwnPropertyDescriptors) {
+      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+    } else {
+      ownKeys(Object(source)).forEach(function(key) {
+        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+      });
+    }
+  }
+  return target;
+}
+var Canvg = class _Canvg {
+  /**
+   * Main constructor.
+   * @param ctx - Rendering context.
+   * @param svg - SVG Document.
+   * @param options - Rendering options.
+   */
+  constructor(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+    this.parser = new Parser(options);
+    this.screen = new Screen(ctx, options);
+    this.options = options;
+    var document2 = new Document(this, options);
+    var documentElement = document2.createDocumentElement(svg);
+    this.document = document2;
+    this.documentElement = documentElement;
+  }
+  /**
+   * Create Canvg instance from SVG source string or URL.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string or URL.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+  static from(ctx, svg) {
+    var _arguments = arguments;
+    return _asyncToGenerator(function* () {
+      var options = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
+      var parser = new Parser(options);
+      var svgDocument = yield parser.parse(svg);
+      return new _Canvg(ctx, svgDocument, options);
+    })();
+  }
+  /**
+   * Create Canvg instance from SVG source string.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+  static fromString(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+    var parser = new Parser(options);
+    var svgDocument = parser.parseFromString(svg);
+    return new _Canvg(ctx, svgDocument, options);
+  }
+  /**
+   * Create new Canvg instance with inherited options.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string or URL.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+  fork(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+    return _Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+  }
+  /**
+   * Create new Canvg instance with inherited options.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+  forkString(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+    return _Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+  }
+  /**
+   * Document is ready promise.
+   * @returns Ready promise.
+   */
+  ready() {
+    return this.screen.ready();
+  }
+  /**
+   * Document is ready value.
+   * @returns Is ready or not.
+   */
+  isReady() {
+    return this.screen.isReady();
+  }
+  /**
+   * Render only first frame, ignoring animations and mouse.
+   * @param options - Rendering options.
+   */
+  render() {
+    var _arguments2 = arguments, _this = this;
+    return _asyncToGenerator(function* () {
+      var options = _arguments2.length > 0 && _arguments2[0] !== void 0 ? _arguments2[0] : {};
+      _this.start(_objectSpread({
+        enableRedraw: true,
+        ignoreAnimation: true,
+        ignoreMouse: true
+      }, options));
+      yield _this.ready();
+      _this.stop();
+    })();
+  }
+  /**
+   * Start rendering.
+   * @param options - Render options.
+   */
+  start() {
+    var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+    var {
+      documentElement,
+      screen,
+      options: baseOptions
+    } = this;
+    screen.start(documentElement, _objectSpread(_objectSpread({
+      enableRedraw: true
+    }, baseOptions), options));
+  }
+  /**
+   * Stop rendering.
+   */
+  stop() {
+    this.screen.stop();
+  }
+  /**
+   * Resize SVG to fit in given size.
+   * @param width
+   * @param height
+   * @param preserveAspectRatio
+   */
+  resize(width) {
+    var height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width;
+    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
+    this.documentElement.resize(width, height, preserveAspectRatio);
+  }
+};
+export {
+  AElement,
+  AnimateColorElement,
+  AnimateElement,
+  AnimateTransformElement,
+  BoundingBox,
+  CB1,
+  CB2,
+  CB3,
+  CB4,
+  Canvg,
+  CircleElement,
+  ClipPathElement,
+  DefsElement,
+  DescElement,
+  Document,
+  Element,
+  EllipseElement,
+  FeColorMatrixElement,
+  FeCompositeElement,
+  FeDropShadowElement,
+  FeGaussianBlurElement,
+  FeMorphologyElement,
+  FilterElement,
+  Font,
+  FontElement,
+  FontFaceElement,
+  GElement,
+  GlyphElement,
+  GradientElement,
+  ImageElement,
+  LineElement,
+  LinearGradientElement,
+  MarkerElement,
+  MaskElement,
+  Matrix,
+  MissingGlyphElement,
+  Mouse,
+  PSEUDO_ZERO,
+  Parser,
+  PathElement,
+  PathParser,
+  PatternElement,
+  Point,
+  PolygonElement,
+  PolylineElement,
+  Property,
+  QB1,
+  QB2,
+  QB3,
+  RadialGradientElement,
+  RectElement,
+  RenderedElement,
+  Rotate,
+  SVGElement,
+  SVGFontLoader,
+  Scale,
+  Screen,
+  Skew,
+  SkewX,
+  SkewY,
+  StopElement,
+  StyleElement,
+  SymbolElement,
+  TRefElement,
+  TSpanElement,
+  TextElement,
+  TextPathElement,
+  TitleElement,
+  Transform,
+  Translate,
+  UnknownElement,
+  UseElement,
+  ViewPort,
+  compressSpaces,
+  Canvg as default,
+  getSelectorSpecificity,
+  normalizeAttributeName,
+  normalizeColor,
+  parseExternalUrl,
+  index as presets,
+  toNumbers,
+  trimLeft,
+  trimRight,
+  vectorMagnitude,
+  vectorsAngle,
+  vectorsRatio
+};
+/*! Bundled license information:
+
+svg-pathdata/lib/SVGPathData.module.js:
+  (*! *****************************************************************************
+  Copyright (c) Microsoft Corporation.
+  
+  Permission to use, copy, modify, and/or distribute this software for any
+  purpose with or without fee is hereby granted.
+  
+  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+  PERFORMANCE OF THIS SOFTWARE.
+  ***************************************************************************** *)
+*/
+//# sourceMappingURL=index.es-7XNKQPVZ.js.map
Index: imaps-frontend/node_modules/.vite/deps/index.es-7XNKQPVZ.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/index.es-7XNKQPVZ.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/index.es-7XNKQPVZ.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": ["../../core-js/internals/global-this.js", "../../core-js/internals/fails.js", "../../core-js/internals/descriptors.js", "../../core-js/internals/function-bind-native.js", "../../core-js/internals/function-call.js", "../../core-js/internals/object-property-is-enumerable.js", "../../core-js/internals/create-property-descriptor.js", "../../core-js/internals/function-uncurry-this.js", "../../core-js/internals/classof-raw.js", "../../core-js/internals/indexed-object.js", "../../core-js/internals/is-null-or-undefined.js", "../../core-js/internals/require-object-coercible.js", "../../core-js/internals/to-indexed-object.js", "../../core-js/internals/is-callable.js", "../../core-js/internals/is-object.js", "../../core-js/internals/get-built-in.js", "../../core-js/internals/object-is-prototype-of.js", "../../core-js/internals/environment-user-agent.js", "../../core-js/internals/environment-v8-version.js", "../../core-js/internals/symbol-constructor-detection.js", "../../core-js/internals/use-symbol-as-uid.js", "../../core-js/internals/is-symbol.js", "../../core-js/internals/try-to-string.js", "../../core-js/internals/a-callable.js", "../../core-js/internals/get-method.js", "../../core-js/internals/ordinary-to-primitive.js", "../../core-js/internals/is-pure.js", "../../core-js/internals/define-global-property.js", "../../core-js/internals/shared-store.js", "../../core-js/internals/shared.js", "../../core-js/internals/to-object.js", "../../core-js/internals/has-own-property.js", "../../core-js/internals/uid.js", "../../core-js/internals/well-known-symbol.js", "../../core-js/internals/to-primitive.js", "../../core-js/internals/to-property-key.js", "../../core-js/internals/document-create-element.js", "../../core-js/internals/ie8-dom-define.js", "../../core-js/internals/object-get-own-property-descriptor.js", "../../core-js/internals/v8-prototype-define-bug.js", "../../core-js/internals/an-object.js", "../../core-js/internals/object-define-property.js", "../../core-js/internals/create-non-enumerable-property.js", "../../core-js/internals/function-name.js", "../../core-js/internals/inspect-source.js", "../../core-js/internals/weak-map-basic-detection.js", "../../core-js/internals/shared-key.js", "../../core-js/internals/hidden-keys.js", "../../core-js/internals/internal-state.js", "../../core-js/internals/make-built-in.js", "../../core-js/internals/define-built-in.js", "../../core-js/internals/math-trunc.js", "../../core-js/internals/to-integer-or-infinity.js", "../../core-js/internals/to-absolute-index.js", "../../core-js/internals/to-length.js", "../../core-js/internals/length-of-array-like.js", "../../core-js/internals/array-includes.js", "../../core-js/internals/object-keys-internal.js", "../../core-js/internals/enum-bug-keys.js", "../../core-js/internals/object-get-own-property-names.js", "../../core-js/internals/object-get-own-property-symbols.js", "../../core-js/internals/own-keys.js", "../../core-js/internals/copy-constructor-properties.js", "../../core-js/internals/is-forced.js", "../../core-js/internals/export.js", "../../core-js/internals/environment.js", "../../core-js/internals/environment-is-node.js", "../../core-js/internals/function-uncurry-this-accessor.js", "../../core-js/internals/is-possible-prototype.js", "../../core-js/internals/a-possible-prototype.js", "../../core-js/internals/object-set-prototype-of.js", "../../core-js/internals/set-to-string-tag.js", "../../core-js/internals/define-built-in-accessor.js", "../../core-js/internals/set-species.js", "../../core-js/internals/an-instance.js", "../../core-js/internals/to-string-tag-support.js", "../../core-js/internals/classof.js", "../../core-js/internals/is-constructor.js", "../../core-js/internals/a-constructor.js", "../../core-js/internals/species-constructor.js", "../../core-js/internals/function-apply.js", "../../core-js/internals/function-uncurry-this-clause.js", "../../core-js/internals/function-bind-context.js", "../../core-js/internals/html.js", "../../core-js/internals/array-slice.js", "../../core-js/internals/validate-arguments-length.js", "../../core-js/internals/environment-is-ios.js", "../../core-js/internals/task.js", "../../core-js/internals/safe-get-built-in.js", "../../core-js/internals/queue.js", "../../core-js/internals/environment-is-ios-pebble.js", "../../core-js/internals/environment-is-webos-webkit.js", "../../core-js/internals/microtask.js", "../../core-js/internals/host-report-errors.js", "../../core-js/internals/perform.js", "../../core-js/internals/promise-native-constructor.js", "../../core-js/internals/promise-constructor-detection.js", "../../core-js/internals/new-promise-capability.js", "../../core-js/modules/es.promise.constructor.js", "../../core-js/internals/iterators.js", "../../core-js/internals/is-array-iterator-method.js", "../../core-js/internals/get-iterator-method.js", "../../core-js/internals/get-iterator.js", "../../core-js/internals/iterator-close.js", "../../core-js/internals/iterate.js", "../../core-js/internals/check-correctness-of-iteration.js", "../../core-js/internals/promise-statics-incorrect-iteration.js", "../../core-js/modules/es.promise.all.js", "../../core-js/modules/es.promise.catch.js", "../../core-js/modules/es.promise.race.js", "../../core-js/modules/es.promise.reject.js", "../../core-js/internals/promise-resolve.js", "../../core-js/modules/es.promise.resolve.js", "../../core-js/internals/to-string.js", "../../core-js/internals/regexp-flags.js", "../../core-js/internals/regexp-sticky-helpers.js", "../../core-js/internals/object-keys.js", "../../core-js/internals/object-define-properties.js", "../../core-js/internals/object-create.js", "../../core-js/internals/regexp-unsupported-dot-all.js", "../../core-js/internals/regexp-unsupported-ncg.js", "../../core-js/internals/regexp-exec.js", "../../core-js/modules/es.regexp.exec.js", "../../core-js/internals/fix-regexp-well-known-symbol-logic.js", "../../core-js/internals/string-multibyte.js", "../../core-js/internals/advance-string-index.js", "../../core-js/internals/regexp-exec-abstract.js", "../../core-js/internals/get-substitution.js", "../../core-js/internals/is-regexp.js", "../../core-js/internals/not-a-regexp.js", "../../core-js/internals/correct-is-regexp-logic.js", "../../core-js/internals/add-to-unscopables.js", "../../core-js/internals/correct-prototype-getter.js", "../../core-js/internals/object-get-prototype-of.js", "../../core-js/internals/iterators-core.js", "../../core-js/internals/iterator-create-constructor.js", "../../core-js/internals/iterator-define.js", "../../core-js/internals/create-iter-result-object.js", "../../core-js/modules/es.array.iterator.js", "../../core-js/internals/dom-iterables.js", "../../core-js/internals/dom-token-list-prototype.js", "../../core-js/internals/array-reduce.js", "../../core-js/internals/array-method-is-strict.js", "../../performance-now/lib/src/performance-now.coffee", "../../raf/index.js", "../../core-js/internals/whitespaces.js", "../../core-js/internals/string-trim.js", "../../core-js/internals/string-trim-forced.js", "../../rgbcolor/index.js", "../../core-js/internals/is-array.js", "../../core-js/internals/regexp-get-flags.js", "../../core-js/modules/es.promise.js", "../../@babel/runtime/helpers/esm/asyncToGenerator.js", "../../core-js/modules/es.string.match.js", "../../core-js/modules/es.string.replace.js", "../../core-js/modules/es.string.starts-with.js", "../../canvg/lib/index.es.js", "../../core-js/modules/web.dom-collections.iterator.js", "../../@babel/runtime/helpers/esm/toPrimitive.js", "../../@babel/runtime/helpers/esm/toPropertyKey.js", "../../@babel/runtime/helpers/esm/defineProperty.js", "../../core-js/modules/es.array.reduce.js", "../../core-js/modules/es.string.ends-with.js", "../../core-js/modules/es.string.split.js", "../../core-js/modules/es.string.trim.js", "../../core-js/modules/es.array.index-of.js", "../../core-js/modules/es.string.includes.js", "../../core-js/modules/es.array.reverse.js", "../../svg-pathdata/node_modules/tslib/tslib.es6.js", "../../svg-pathdata/src/SVGPathDataEncoder.ts", "../../svg-pathdata/src/mathUtils.ts", "../../svg-pathdata/src/SVGPathDataTransformer.ts", "../../svg-pathdata/src/TransformableSVG.ts", "../../svg-pathdata/src/SVGPathDataParser.ts", "../../svg-pathdata/src/SVGPathData.ts", "../../core-js/modules/es.regexp.to-string.js", "../../stackblur-canvas/dist/stackblur-es.js"],
+  "sourcesContent": ["'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n", "'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n", "'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n  !Symbol.sham &&\n  typeof Symbol.iterator == 'symbol';\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n", "'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n", "'use strict';\nmodule.exports = false;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    globalThis[key] = value;\n  } return value;\n};\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n  version: '3.39.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n", "'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n", "'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n", "'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n", "'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n", "'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n", "'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = globalThis;\n  } else if (STATIC) {\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n", "'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n  return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n  if (userAgentStartsWith('Bun/')) return 'BUN';\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n  if (userAgentStartsWith('Deno/')) return 'DENO';\n  if (userAgentStartsWith('Node.js/')) return 'NODE';\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n  if (classof(globalThis.process) === 'process') return 'NODE';\n  if (globalThis.window && globalThis.document) return 'BROWSER';\n  return 'REST';\n})();\n", "'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n", "'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (isPossiblePrototype(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n", "'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    requireObjectCoercible(O);\n    aPossiblePrototype(proto);\n    if (!isObject(O)) return O;\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n", "'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, [], argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n", "'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n", "'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n", "'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = globalThis.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    globalThis.addEventListener &&\n    isCallable(globalThis.postMessage) &&\n    !globalThis.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    globalThis.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nmodule.exports = function (name) {\n  if (!DESCRIPTORS) return globalThis[name];\n  var descriptor = getOwnPropertyDescriptor(globalThis, name);\n  return descriptor && descriptor.value;\n};\n", "'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar Promise = globalThis.Promise;\nvar microtask = safeGetBuiltIn('queueMicrotask');\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, globalThis);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n", "'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/environment-is-node');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = globalThis.TypeError;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(new TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    globalThis.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: null\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n// `Promise` constructor\n// https://tc39.es/ecma262/#sec-promise-executor\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n", "'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    var capabilityReject = capability.reject;\n    capabilityReject(r);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n", "'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n", "'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n  activeXDocument = null;\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n", "'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegExp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n        }\n        return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n", "'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    }\n\n    return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n", "'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = null;\n    return createIterResultObject(undefined, true);\n  }\n  switch (state.kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n", "'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n", "'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    aCallable(callbackfn);\n    if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw new $TypeError(REDUCE_EMPTY);\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n", null, "var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n", "'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n", "/*\n\tBased on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n    this.ok = false;\n    this.alpha = 1.0;\n\n    // strip any leading #\n    if (color_string.charAt(0) == '#') { // remove # if any\n        color_string = color_string.substr(1,6);\n    }\n\n    color_string = color_string.replace(/ /g,'');\n    color_string = color_string.toLowerCase();\n\n    // before getting into regexps, try simple matches\n    // and overwrite the input\n    var simple_colors = {\n        aliceblue: 'f0f8ff',\n        antiquewhite: 'faebd7',\n        aqua: '00ffff',\n        aquamarine: '7fffd4',\n        azure: 'f0ffff',\n        beige: 'f5f5dc',\n        bisque: 'ffe4c4',\n        black: '000000',\n        blanchedalmond: 'ffebcd',\n        blue: '0000ff',\n        blueviolet: '8a2be2',\n        brown: 'a52a2a',\n        burlywood: 'deb887',\n        cadetblue: '5f9ea0',\n        chartreuse: '7fff00',\n        chocolate: 'd2691e',\n        coral: 'ff7f50',\n        cornflowerblue: '6495ed',\n        cornsilk: 'fff8dc',\n        crimson: 'dc143c',\n        cyan: '00ffff',\n        darkblue: '00008b',\n        darkcyan: '008b8b',\n        darkgoldenrod: 'b8860b',\n        darkgray: 'a9a9a9',\n        darkgreen: '006400',\n        darkkhaki: 'bdb76b',\n        darkmagenta: '8b008b',\n        darkolivegreen: '556b2f',\n        darkorange: 'ff8c00',\n        darkorchid: '9932cc',\n        darkred: '8b0000',\n        darksalmon: 'e9967a',\n        darkseagreen: '8fbc8f',\n        darkslateblue: '483d8b',\n        darkslategray: '2f4f4f',\n        darkturquoise: '00ced1',\n        darkviolet: '9400d3',\n        deeppink: 'ff1493',\n        deepskyblue: '00bfff',\n        dimgray: '696969',\n        dodgerblue: '1e90ff',\n        feldspar: 'd19275',\n        firebrick: 'b22222',\n        floralwhite: 'fffaf0',\n        forestgreen: '228b22',\n        fuchsia: 'ff00ff',\n        gainsboro: 'dcdcdc',\n        ghostwhite: 'f8f8ff',\n        gold: 'ffd700',\n        goldenrod: 'daa520',\n        gray: '808080',\n        green: '008000',\n        greenyellow: 'adff2f',\n        honeydew: 'f0fff0',\n        hotpink: 'ff69b4',\n        indianred : 'cd5c5c',\n        indigo : '4b0082',\n        ivory: 'fffff0',\n        khaki: 'f0e68c',\n        lavender: 'e6e6fa',\n        lavenderblush: 'fff0f5',\n        lawngreen: '7cfc00',\n        lemonchiffon: 'fffacd',\n        lightblue: 'add8e6',\n        lightcoral: 'f08080',\n        lightcyan: 'e0ffff',\n        lightgoldenrodyellow: 'fafad2',\n        lightgrey: 'd3d3d3',\n        lightgreen: '90ee90',\n        lightpink: 'ffb6c1',\n        lightsalmon: 'ffa07a',\n        lightseagreen: '20b2aa',\n        lightskyblue: '87cefa',\n        lightslateblue: '8470ff',\n        lightslategray: '778899',\n        lightsteelblue: 'b0c4de',\n        lightyellow: 'ffffe0',\n        lime: '00ff00',\n        limegreen: '32cd32',\n        linen: 'faf0e6',\n        magenta: 'ff00ff',\n        maroon: '800000',\n        mediumaquamarine: '66cdaa',\n        mediumblue: '0000cd',\n        mediumorchid: 'ba55d3',\n        mediumpurple: '9370d8',\n        mediumseagreen: '3cb371',\n        mediumslateblue: '7b68ee',\n        mediumspringgreen: '00fa9a',\n        mediumturquoise: '48d1cc',\n        mediumvioletred: 'c71585',\n        midnightblue: '191970',\n        mintcream: 'f5fffa',\n        mistyrose: 'ffe4e1',\n        moccasin: 'ffe4b5',\n        navajowhite: 'ffdead',\n        navy: '000080',\n        oldlace: 'fdf5e6',\n        olive: '808000',\n        olivedrab: '6b8e23',\n        orange: 'ffa500',\n        orangered: 'ff4500',\n        orchid: 'da70d6',\n        palegoldenrod: 'eee8aa',\n        palegreen: '98fb98',\n        paleturquoise: 'afeeee',\n        palevioletred: 'd87093',\n        papayawhip: 'ffefd5',\n        peachpuff: 'ffdab9',\n        peru: 'cd853f',\n        pink: 'ffc0cb',\n        plum: 'dda0dd',\n        powderblue: 'b0e0e6',\n        purple: '800080',\n        rebeccapurple: '663399',\n        red: 'ff0000',\n        rosybrown: 'bc8f8f',\n        royalblue: '4169e1',\n        saddlebrown: '8b4513',\n        salmon: 'fa8072',\n        sandybrown: 'f4a460',\n        seagreen: '2e8b57',\n        seashell: 'fff5ee',\n        sienna: 'a0522d',\n        silver: 'c0c0c0',\n        skyblue: '87ceeb',\n        slateblue: '6a5acd',\n        slategray: '708090',\n        snow: 'fffafa',\n        springgreen: '00ff7f',\n        steelblue: '4682b4',\n        tan: 'd2b48c',\n        teal: '008080',\n        thistle: 'd8bfd8',\n        tomato: 'ff6347',\n        turquoise: '40e0d0',\n        violet: 'ee82ee',\n        violetred: 'd02090',\n        wheat: 'f5deb3',\n        white: 'ffffff',\n        whitesmoke: 'f5f5f5',\n        yellow: 'ffff00',\n        yellowgreen: '9acd32'\n    };\n    color_string = simple_colors[color_string] || color_string;\n    // emd of simple type-in colors\n\n    // array of color definition objects\n    var color_defs = [\n        {\n            re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n            example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3]),\n                    parseFloat(bits[4])\n                ];\n            }\n        },\n        {\n            re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3])\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n            example: ['#00ff00', '336699'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1], 16),\n                    parseInt(bits[2], 16),\n                    parseInt(bits[3], 16)\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n            example: ['#fb0', 'f0f'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1] + bits[1], 16),\n                    parseInt(bits[2] + bits[2], 16),\n                    parseInt(bits[3] + bits[3], 16)\n                ];\n            }\n        }\n    ];\n\n    // search through the definitions to find a match\n    for (var i = 0; i < color_defs.length; i++) {\n        var re = color_defs[i].re;\n        var processor = color_defs[i].process;\n        var bits = re.exec(color_string);\n        if (bits) {\n            var channels = processor(bits);\n            this.r = channels[0];\n            this.g = channels[1];\n            this.b = channels[2];\n            if (channels.length > 3) {\n                this.alpha = channels[3];\n            }\n            this.ok = true;\n        }\n\n    }\n\n    // validate/cleanup values\n    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n    this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n    // some getters\n    this.toRGB = function () {\n        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n    }\n    this.toRGBA = function () {\n        return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n    }\n    this.toHex = function () {\n        var r = this.r.toString(16);\n        var g = this.g.toString(16);\n        var b = this.b.toString(16);\n        if (r.length == 1) r = '0' + r;\n        if (g.length == 1) g = '0' + g;\n        if (b.length == 1) b = '0' + b;\n        return '#' + r + g + b;\n    }\n\n    // help\n    this.getHelpXML = function () {\n\n        var examples = new Array();\n        // add regexps\n        for (var i = 0; i < color_defs.length; i++) {\n            var example = color_defs[i].example;\n            for (var j = 0; j < example.length; j++) {\n                examples[examples.length] = example[j];\n            }\n        }\n        // add type-in colors\n        for (var sc in simple_colors) {\n            examples[examples.length] = sc;\n        }\n\n        var xml = document.createElement('ul');\n        xml.setAttribute('id', 'rgbcolor-examples');\n        for (var i = 0; i < examples.length; i++) {\n            try {\n                var list_item = document.createElement('li');\n                var list_color = new RGBColor(examples[i]);\n                var example_div = document.createElement('div');\n                example_div.style.cssText =\n                        'margin: 3px; '\n                        + 'border: 1px solid black; '\n                        + 'background:' + list_color.toHex() + '; '\n                        + 'color:' + list_color.toHex()\n                ;\n                example_div.appendChild(document.createTextNode('test'));\n                var list_item_value = document.createTextNode(\n                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n                );\n                list_item.appendChild(example_div);\n                list_item.appendChild(list_item_value);\n                xml.appendChild(list_item);\n\n            } catch(e){}\n        }\n        return xml;\n\n    }\n\n}\n", "'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n", "function asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nexport { _asyncToGenerator as default };", "'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      var fullUnicode;\n      if (global) {\n        fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n\n      var results = [];\n      var result;\n      while (true) {\n        result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        var replacement;\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return stringSlice(that, index, index + search.length) === search;\n  }\n});\n", "import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n  var {\n    DOMParser: DOMParserFallback\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var preset = {\n    window: null,\n    ignoreAnimation: true,\n    ignoreMouse: true,\n    DOMParser: DOMParserFallback,\n\n    createCanvas(width, height) {\n      return new OffscreenCanvas(width, height);\n    },\n\n    createImage(url) {\n      return _asyncToGenerator(function* () {\n        var response = yield fetch(url);\n        var blob = yield response.blob();\n        var img = yield createImageBitmap(blob);\n        return img;\n      })();\n    }\n\n  };\n\n  if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n    Reflect.deleteProperty(preset, 'DOMParser');\n  }\n\n  return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n  var {\n    DOMParser,\n    canvas,\n    fetch\n  } = _ref;\n  return {\n    window: null,\n    ignoreAnimation: true,\n    ignoreMouse: true,\n    DOMParser,\n    fetch,\n    createCanvas: canvas.createCanvas,\n    createImage: canvas.loadImage\n  };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n  return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n  return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n  return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n  var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n  return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n  if (allUppercase.test(name)) {\n    return name.toLowerCase();\n  }\n\n  return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n  //                      single quotes [2]\n  //                      v         double quotes [3]\n  //                      v         v         no quotes [4]\n  //                      v         v         v\n  var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n  return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n  if (!color.startsWith('rgb')) {\n    return color;\n  }\n\n  var rgbParts = 3;\n  var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n  return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n  var matches = regex.exec(selector);\n\n  if (!matches) {\n    return [selector, 0];\n  }\n\n  return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n  var specificity = [0, 0, 0];\n  var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, '     $1 ').replace(/{[\\s\\S]*/gm, ' ');\n  var delta = 0;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n  specificity[0] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n  specificity[2] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n  specificity[1] += delta;\n  currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n  [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n  specificity[2] += delta;\n  return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n  return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n  return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n  return t * t * t;\n}\nfunction CB2(t) {\n  return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n  return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n  return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n  return t * t;\n}\nfunction QB2(t) {\n  return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n  return (1 - t) * (1 - t);\n}\n\nclass Property {\n  constructor(document, name, value) {\n    this.document = document;\n    this.name = name;\n    this.value = value;\n    this.isNormalizedColor = false;\n  }\n\n  static empty(document) {\n    return new Property(document, 'EMPTY', '');\n  }\n\n  split() {\n    var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n    var {\n      document,\n      name\n    } = this;\n    return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n  }\n\n  hasValue(zeroIsValue) {\n    var {\n      value\n    } = this;\n    return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n  }\n\n  isString(regexp) {\n    var {\n      value\n    } = this;\n    var result = typeof value === 'string';\n\n    if (!result || !regexp) {\n      return result;\n    }\n\n    return regexp.test(value);\n  }\n\n  isUrlDefinition() {\n    return this.isString(/^url\\(/);\n  }\n\n  isPixels() {\n    if (!this.hasValue()) {\n      return false;\n    }\n\n    var asString = this.getString();\n\n    switch (true) {\n      case asString.endsWith('px'):\n      case /^[0-9]+$/.test(asString):\n        return true;\n\n      default:\n        return false;\n    }\n  }\n\n  setValue(value) {\n    this.value = value;\n    return this;\n  }\n\n  getValue(def) {\n    if (typeof def === 'undefined' || this.hasValue()) {\n      return this.value;\n    }\n\n    return def;\n  }\n\n  getNumber(def) {\n    if (!this.hasValue()) {\n      if (typeof def === 'undefined') {\n        return 0;\n      }\n\n      return parseFloat(def);\n    }\n\n    var {\n      value\n    } = this;\n    var n = parseFloat(value);\n\n    if (this.isString(/%$/)) {\n      n /= 100.0;\n    }\n\n    return n;\n  }\n\n  getString(def) {\n    if (typeof def === 'undefined' || this.hasValue()) {\n      return typeof this.value === 'undefined' ? '' : String(this.value);\n    }\n\n    return String(def);\n  }\n\n  getColor(def) {\n    var color = this.getString(def);\n\n    if (this.isNormalizedColor) {\n      return color;\n    }\n\n    this.isNormalizedColor = true;\n    color = normalizeColor(color);\n    this.value = color;\n    return color;\n  }\n\n  getDpi() {\n    return 96.0; // TODO: compute?\n  }\n\n  getRem() {\n    return this.document.rootEmSize;\n  }\n\n  getEm() {\n    return this.document.emSize;\n  }\n\n  getUnits() {\n    return this.getString().replace(/[0-9.-]/g, '');\n  }\n\n  getPixels(axisOrIsFontSize) {\n    var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n    var {\n      viewPort\n    } = this.document.screen;\n\n    switch (true) {\n      case this.isString(/vmin$/):\n        return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n      case this.isString(/vmax$/):\n        return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n      case this.isString(/vw$/):\n        return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n      case this.isString(/vh$/):\n        return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n      case this.isString(/rem$/):\n        return this.getNumber() * this.getRem();\n\n      case this.isString(/em$/):\n        return this.getNumber() * this.getEm();\n\n      case this.isString(/ex$/):\n        return this.getNumber() * this.getEm() / 2.0;\n\n      case this.isString(/px$/):\n        return this.getNumber();\n\n      case this.isString(/pt$/):\n        return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n      case this.isString(/pc$/):\n        return this.getNumber() * 15;\n\n      case this.isString(/cm$/):\n        return this.getNumber() * this.getDpi() / 2.54;\n\n      case this.isString(/mm$/):\n        return this.getNumber() * this.getDpi() / 25.4;\n\n      case this.isString(/in$/):\n        return this.getNumber() * this.getDpi();\n\n      case this.isString(/%$/) && isFontSize:\n        return this.getNumber() * this.getEm();\n\n      case this.isString(/%$/):\n        return this.getNumber() * viewPort.computeSize(axis);\n\n      default:\n        {\n          var n = this.getNumber();\n\n          if (processPercent && n < 1.0) {\n            return n * viewPort.computeSize(axis);\n          }\n\n          return n;\n        }\n    }\n  }\n\n  getMilliseconds() {\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    if (this.isString(/ms$/)) {\n      return this.getNumber();\n    }\n\n    return this.getNumber() * 1000;\n  }\n\n  getRadians() {\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    switch (true) {\n      case this.isString(/deg$/):\n        return this.getNumber() * (Math.PI / 180.0);\n\n      case this.isString(/grad$/):\n        return this.getNumber() * (Math.PI / 200.0);\n\n      case this.isString(/rad$/):\n        return this.getNumber();\n\n      default:\n        return this.getNumber() * (Math.PI / 180.0);\n    }\n  }\n\n  getDefinition() {\n    var asString = this.getString();\n    var name = /#([^)'\"]+)/.exec(asString);\n\n    if (name) {\n      name = name[1];\n    }\n\n    if (!name) {\n      name = asString;\n    }\n\n    return this.document.definitions[name];\n  }\n\n  getFillStyleDefinition(element, opacity) {\n    var def = this.getDefinition();\n\n    if (!def) {\n      return null;\n    } // gradient\n\n\n    if (typeof def.createGradient === 'function') {\n      return def.createGradient(this.document.ctx, element, opacity);\n    } // pattern\n\n\n    if (typeof def.createPattern === 'function') {\n      if (def.getHrefAttribute().hasValue()) {\n        var patternTransform = def.getAttribute('patternTransform');\n        def = def.getHrefAttribute().getDefinition();\n\n        if (patternTransform.hasValue()) {\n          def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n        }\n      }\n\n      return def.createPattern(this.document.ctx, element, opacity);\n    }\n\n    return null;\n  }\n\n  getTextBaseline() {\n    if (!this.hasValue()) {\n      return null;\n    }\n\n    return Property.textBaselineMapping[this.getString()];\n  }\n\n  addOpacity(opacity) {\n    var value = this.getColor();\n    var len = value.length;\n    var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n    for (var i = 0; i < len; i++) {\n      if (value[i] === ',') {\n        commas++;\n      }\n\n      if (commas === 3) {\n        break;\n      }\n    }\n\n    if (opacity.hasValue() && this.isString() && commas !== 3) {\n      var color = new RGBColor(value);\n\n      if (color.ok) {\n        color.alpha = opacity.getNumber();\n        value = color.toRGBA();\n      }\n    }\n\n    return new Property(this.document, this.name, value);\n  }\n\n}\nProperty.textBaselineMapping = {\n  'baseline': 'alphabetic',\n  'before-edge': 'top',\n  'text-before-edge': 'top',\n  'middle': 'middle',\n  'central': 'middle',\n  'after-edge': 'bottom',\n  'text-after-edge': 'bottom',\n  'ideographic': 'ideographic',\n  'alphabetic': 'alphabetic',\n  'hanging': 'hanging',\n  'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n  constructor() {\n    this.viewPorts = [];\n  }\n\n  clear() {\n    this.viewPorts = [];\n  }\n\n  setCurrent(width, height) {\n    this.viewPorts.push({\n      width,\n      height\n    });\n  }\n\n  removeCurrent() {\n    this.viewPorts.pop();\n  }\n\n  getCurrent() {\n    var {\n      viewPorts\n    } = this;\n    return viewPorts[viewPorts.length - 1];\n  }\n\n  get width() {\n    return this.getCurrent().width;\n  }\n\n  get height() {\n    return this.getCurrent().height;\n  }\n\n  computeSize(d) {\n    if (typeof d === 'number') {\n      return d;\n    }\n\n    if (d === 'x') {\n      return this.width;\n    }\n\n    if (d === 'y') {\n      return this.height;\n    }\n\n    return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n  }\n\n}\n\nclass Point {\n  constructor(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  static parse(point) {\n    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var [x = defaultValue, y = defaultValue] = toNumbers(point);\n    return new Point(x, y);\n  }\n\n  static parseScale(scale) {\n    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var [x = defaultValue, y = x] = toNumbers(scale);\n    return new Point(x, y);\n  }\n\n  static parsePath(path) {\n    var points = toNumbers(path);\n    var len = points.length;\n    var pathPoints = [];\n\n    for (var i = 0; i < len; i += 2) {\n      pathPoints.push(new Point(points[i], points[i + 1]));\n    }\n\n    return pathPoints;\n  }\n\n  angleTo(point) {\n    return Math.atan2(point.y - this.y, point.x - this.x);\n  }\n\n  applyTransform(transform) {\n    var {\n      x,\n      y\n    } = this;\n    var xp = x * transform[0] + y * transform[2] + transform[4];\n    var yp = x * transform[1] + y * transform[3] + transform[5];\n    this.x = xp;\n    this.y = yp;\n  }\n\n}\n\nclass Mouse {\n  constructor(screen) {\n    this.screen = screen;\n    this.working = false;\n    this.events = [];\n    this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n    this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n    this.onMouseMove = this.onMouseMove.bind(this);\n  }\n\n  isWorking() {\n    return this.working;\n  }\n\n  start() {\n    if (this.working) {\n      return;\n    }\n\n    var {\n      screen,\n      onClick,\n      onMouseMove\n    } = this;\n    var canvas = screen.ctx.canvas;\n    canvas.onclick = onClick;\n    canvas.onmousemove = onMouseMove;\n    this.working = true;\n  }\n\n  stop() {\n    if (!this.working) {\n      return;\n    }\n\n    var canvas = this.screen.ctx.canvas;\n    this.working = false;\n    canvas.onclick = null;\n    canvas.onmousemove = null;\n  }\n\n  hasEvents() {\n    return this.working && this.events.length > 0;\n  }\n\n  runEvents() {\n    if (!this.working) {\n      return;\n    }\n\n    var {\n      screen: document,\n      events,\n      eventElements\n    } = this;\n    var {\n      style\n    } = document.ctx.canvas;\n\n    if (style) {\n      style.cursor = '';\n    }\n\n    events.forEach((_ref, i) => {\n      var {\n        run\n      } = _ref;\n      var element = eventElements[i];\n\n      while (element) {\n        run(element);\n        element = element.parent;\n      }\n    }); // done running, clear\n\n    this.events = [];\n    this.eventElements = [];\n  }\n\n  checkPath(element, ctx) {\n    if (!this.working || !ctx) {\n      return;\n    }\n\n    var {\n      events,\n      eventElements\n    } = this;\n    events.forEach((_ref2, i) => {\n      var {\n        x,\n        y\n      } = _ref2;\n\n      if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n        eventElements[i] = element;\n      }\n    });\n  }\n\n  checkBoundingBox(element, boundingBox) {\n    if (!this.working || !boundingBox) {\n      return;\n    }\n\n    var {\n      events,\n      eventElements\n    } = this;\n    events.forEach((_ref3, i) => {\n      var {\n        x,\n        y\n      } = _ref3;\n\n      if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n        eventElements[i] = element;\n      }\n    });\n  }\n\n  mapXY(x, y) {\n    var {\n      window,\n      ctx\n    } = this.screen;\n    var point = new Point(x, y);\n    var element = ctx.canvas;\n\n    while (element) {\n      point.x -= element.offsetLeft;\n      point.y -= element.offsetTop;\n      element = element.offsetParent;\n    }\n\n    if (window.scrollX) {\n      point.x += window.scrollX;\n    }\n\n    if (window.scrollY) {\n      point.y += window.scrollY;\n    }\n\n    return point;\n  }\n\n  onClick(event) {\n    var {\n      x,\n      y\n    } = this.mapXY(event.clientX, event.clientY);\n    this.events.push({\n      type: 'onclick',\n      x,\n      y,\n\n      run(eventTarget) {\n        if (eventTarget.onClick) {\n          eventTarget.onClick();\n        }\n      }\n\n    });\n  }\n\n  onMouseMove(event) {\n    var {\n      x,\n      y\n    } = this.mapXY(event.clientX, event.clientY);\n    this.events.push({\n      type: 'onmousemove',\n      x,\n      y,\n\n      run(eventTarget) {\n        if (eventTarget.onMouseMove) {\n          eventTarget.onMouseMove();\n        }\n      }\n\n    });\n  }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n  constructor(ctx) {\n    var {\n      fetch = defaultFetch$1,\n      window = defaultWindow\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.ctx = ctx;\n    this.FRAMERATE = 30;\n    this.MAX_VIRTUAL_PIXELS = 30000;\n    this.CLIENT_WIDTH = 800;\n    this.CLIENT_HEIGHT = 600;\n    this.viewPort = new ViewPort();\n    this.mouse = new Mouse(this);\n    this.animations = [];\n    this.waits = [];\n    this.frameDuration = 0;\n    this.isReadyLock = false;\n    this.isFirstRender = true;\n    this.intervalId = null;\n    this.window = window;\n    this.fetch = fetch;\n  }\n\n  wait(checker) {\n    this.waits.push(checker);\n  }\n\n  ready() {\n    // eslint-disable-next-line @typescript-eslint/no-misused-promises\n    if (!this.readyPromise) {\n      return Promise.resolve();\n    }\n\n    return this.readyPromise;\n  }\n\n  isReady() {\n    if (this.isReadyLock) {\n      return true;\n    }\n\n    var isReadyLock = this.waits.every(_ => _());\n\n    if (isReadyLock) {\n      this.waits = [];\n\n      if (this.resolveReady) {\n        this.resolveReady();\n      }\n    }\n\n    this.isReadyLock = isReadyLock;\n    return isReadyLock;\n  }\n\n  setDefaults(ctx) {\n    // initial values and defaults\n    ctx.strokeStyle = 'rgba(0,0,0,0)';\n    ctx.lineCap = 'butt';\n    ctx.lineJoin = 'miter';\n    ctx.miterLimit = 4;\n  }\n\n  setViewBox(_ref) {\n    var {\n      document,\n      ctx,\n      aspectRatio,\n      width,\n      desiredWidth,\n      height,\n      desiredHeight,\n      minX = 0,\n      minY = 0,\n      refX,\n      refY,\n      clip = false,\n      clipX = 0,\n      clipY = 0\n    } = _ref;\n    // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n    var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n    var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n    var align = aspectRatioAlign || 'xMidYMid';\n    var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n    var scaleX = width / desiredWidth;\n    var scaleY = height / desiredHeight;\n    var scaleMin = Math.min(scaleX, scaleY);\n    var scaleMax = Math.max(scaleX, scaleY);\n    var finalDesiredWidth = desiredWidth;\n    var finalDesiredHeight = desiredHeight;\n\n    if (meetOrSlice === 'meet') {\n      finalDesiredWidth *= scaleMin;\n      finalDesiredHeight *= scaleMin;\n    }\n\n    if (meetOrSlice === 'slice') {\n      finalDesiredWidth *= scaleMax;\n      finalDesiredHeight *= scaleMax;\n    }\n\n    var refXProp = new Property(document, 'refX', refX);\n    var refYProp = new Property(document, 'refY', refY);\n    var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n    if (hasRefs) {\n      ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n    }\n\n    if (clip) {\n      var scaledClipX = scaleMin * clipX;\n      var scaledClipY = scaleMin * clipY;\n      ctx.beginPath();\n      ctx.moveTo(scaledClipX, scaledClipY);\n      ctx.lineTo(width, scaledClipY);\n      ctx.lineTo(width, height);\n      ctx.lineTo(scaledClipX, height);\n      ctx.closePath();\n      ctx.clip();\n    }\n\n    if (!hasRefs) {\n      var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n      var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n      var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n      var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n      if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n        ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n      }\n\n      if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n        ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n      }\n\n      if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n        ctx.translate(width - finalDesiredWidth, 0);\n      }\n\n      if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n        ctx.translate(0, height - finalDesiredHeight);\n      }\n    } // scale\n\n\n    switch (true) {\n      case align === 'none':\n        ctx.scale(scaleX, scaleY);\n        break;\n\n      case meetOrSlice === 'meet':\n        ctx.scale(scaleMin, scaleMin);\n        break;\n\n      case meetOrSlice === 'slice':\n        ctx.scale(scaleMax, scaleMax);\n        break;\n    } // translate\n\n\n    ctx.translate(-minX, -minY);\n  }\n\n  start(element) {\n    var {\n      enableRedraw = false,\n      ignoreMouse = false,\n      ignoreAnimation = false,\n      ignoreDimensions = false,\n      ignoreClear = false,\n      forceRedraw,\n      scaleWidth,\n      scaleHeight,\n      offsetX,\n      offsetY\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      FRAMERATE,\n      mouse\n    } = this;\n    var frameDuration = 1000 / FRAMERATE;\n    this.frameDuration = frameDuration;\n    this.readyPromise = new Promise(resolve => {\n      this.resolveReady = resolve;\n    });\n\n    if (this.isReady()) {\n      this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n    }\n\n    if (!enableRedraw) {\n      return;\n    }\n\n    var now = Date.now();\n    var then = now;\n    var delta = 0;\n\n    var tick = () => {\n      now = Date.now();\n      delta = now - then;\n\n      if (delta >= frameDuration) {\n        then = now - delta % frameDuration;\n\n        if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n          this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n          mouse.runEvents();\n        }\n      }\n\n      this.intervalId = requestAnimationFrame(tick);\n    };\n\n    if (!ignoreMouse) {\n      mouse.start();\n    }\n\n    this.intervalId = requestAnimationFrame(tick);\n  }\n\n  stop() {\n    if (this.intervalId) {\n      requestAnimationFrame.cancel(this.intervalId);\n      this.intervalId = null;\n    }\n\n    this.mouse.stop();\n  }\n\n  shouldUpdate(ignoreAnimation, forceRedraw) {\n    // need update from animations?\n    if (!ignoreAnimation) {\n      var {\n        frameDuration\n      } = this;\n      var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n      if (shouldUpdate) {\n        return true;\n      }\n    } // need update from redraw?\n\n\n    if (typeof forceRedraw === 'function' && forceRedraw()) {\n      return true;\n    }\n\n    if (!this.isReadyLock && this.isReady()) {\n      return true;\n    } // need update from mouse events?\n\n\n    if (this.mouse.hasEvents()) {\n      return true;\n    }\n\n    return false;\n  }\n\n  render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n    var {\n      CLIENT_WIDTH,\n      CLIENT_HEIGHT,\n      viewPort,\n      ctx,\n      isFirstRender\n    } = this;\n    var canvas = ctx.canvas;\n    viewPort.clear();\n\n    if (canvas.width && canvas.height) {\n      viewPort.setCurrent(canvas.width, canvas.height);\n    } else {\n      viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n    }\n\n    var widthStyle = element.getStyle('width');\n    var heightStyle = element.getStyle('height');\n\n    if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n      // set canvas size\n      if (widthStyle.hasValue()) {\n        canvas.width = widthStyle.getPixels('x');\n\n        if (canvas.style) {\n          canvas.style.width = \"\".concat(canvas.width, \"px\");\n        }\n      }\n\n      if (heightStyle.hasValue()) {\n        canvas.height = heightStyle.getPixels('y');\n\n        if (canvas.style) {\n          canvas.style.height = \"\".concat(canvas.height, \"px\");\n        }\n      }\n    }\n\n    var cWidth = canvas.clientWidth || canvas.width;\n    var cHeight = canvas.clientHeight || canvas.height;\n\n    if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n      cWidth = widthStyle.getPixels('x');\n      cHeight = heightStyle.getPixels('y');\n    }\n\n    viewPort.setCurrent(cWidth, cHeight);\n\n    if (typeof offsetX === 'number') {\n      element.getAttribute('x', true).setValue(offsetX);\n    }\n\n    if (typeof offsetY === 'number') {\n      element.getAttribute('y', true).setValue(offsetY);\n    }\n\n    if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n      var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n      var xRatio = 0;\n      var yRatio = 0;\n\n      if (typeof scaleWidth === 'number') {\n        var _widthStyle = element.getStyle('width');\n\n        if (_widthStyle.hasValue()) {\n          xRatio = _widthStyle.getPixels('x') / scaleWidth;\n        } else if (!isNaN(viewBox[2])) {\n          xRatio = viewBox[2] / scaleWidth;\n        }\n      }\n\n      if (typeof scaleHeight === 'number') {\n        var _heightStyle = element.getStyle('height');\n\n        if (_heightStyle.hasValue()) {\n          yRatio = _heightStyle.getPixels('y') / scaleHeight;\n        } else if (!isNaN(viewBox[3])) {\n          yRatio = viewBox[3] / scaleHeight;\n        }\n      }\n\n      if (!xRatio) {\n        xRatio = yRatio;\n      }\n\n      if (!yRatio) {\n        yRatio = xRatio;\n      }\n\n      element.getAttribute('width', true).setValue(scaleWidth);\n      element.getAttribute('height', true).setValue(scaleHeight);\n      var transformStyle = element.getStyle('transform', true, true);\n      transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n    } // clear and render\n\n\n    if (!ignoreClear) {\n      ctx.clearRect(0, 0, cWidth, cHeight);\n    }\n\n    element.render(ctx);\n\n    if (isFirstRender) {\n      this.isFirstRender = false;\n    }\n  }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n  defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n  constructor() {\n    var {\n      fetch = defaultFetch,\n      DOMParser = DefaultDOMParser\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.fetch = fetch;\n    this.DOMParser = DOMParser;\n  }\n\n  parse(resource) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      if (resource.startsWith('<')) {\n        return _this.parseFromString(resource);\n      }\n\n      return _this.load(resource);\n    })();\n  }\n\n  parseFromString(xml) {\n    var parser = new this.DOMParser();\n\n    try {\n      return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n    } catch (err) {\n      return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n    }\n  }\n\n  checkDocument(document) {\n    var parserError = document.getElementsByTagName('parsererror')[0];\n\n    if (parserError) {\n      throw new Error(parserError.textContent);\n    }\n\n    return document;\n  }\n\n  load(url) {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      var response = yield _this2.fetch(url);\n      var xml = yield response.text();\n      return _this2.parseFromString(xml);\n    })();\n  }\n\n}\n\nclass Translate {\n  constructor(_, point) {\n    this.type = 'translate';\n    this.point = null;\n    this.point = Point.parse(point);\n  }\n\n  apply(ctx) {\n    var {\n      x,\n      y\n    } = this.point;\n    ctx.translate(x || 0.0, y || 0.0);\n  }\n\n  unapply(ctx) {\n    var {\n      x,\n      y\n    } = this.point;\n    ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n  }\n\n  applyToPoint(point) {\n    var {\n      x,\n      y\n    } = this.point;\n    point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n  }\n\n}\n\nclass Rotate {\n  constructor(document, rotate, transformOrigin) {\n    this.type = 'rotate';\n    this.angle = null;\n    this.originX = null;\n    this.originY = null;\n    this.cx = 0;\n    this.cy = 0;\n    var numbers = toNumbers(rotate);\n    this.angle = new Property(document, 'angle', numbers[0]);\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n    this.cx = numbers[1] || 0;\n    this.cy = numbers[2] || 0;\n  }\n\n  apply(ctx) {\n    var {\n      cx,\n      cy,\n      originX,\n      originY,\n      angle\n    } = this;\n    var tx = cx + originX.getPixels('x');\n    var ty = cy + originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.rotate(angle.getRadians());\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      cx,\n      cy,\n      originX,\n      originY,\n      angle\n    } = this;\n    var tx = cx + originX.getPixels('x');\n    var ty = cy + originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.rotate(-1.0 * angle.getRadians());\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    var {\n      cx,\n      cy,\n      angle\n    } = this;\n    var rad = angle.getRadians();\n    point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n    ]);\n    point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n    point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n    ]);\n  }\n\n}\n\nclass Scale {\n  constructor(_, scale, transformOrigin) {\n    this.type = 'scale';\n    this.scale = null;\n    this.originX = null;\n    this.originY = null;\n    var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n    if (scaleSize.x === 0 || scaleSize.y === 0) {\n      scaleSize.x = PSEUDO_ZERO;\n      scaleSize.y = PSEUDO_ZERO;\n    }\n\n    this.scale = scaleSize;\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n  }\n\n  apply(ctx) {\n    var {\n      scale: {\n        x,\n        y\n      },\n      originX,\n      originY\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.scale(x, y || x);\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      scale: {\n        x,\n        y\n      },\n      originX,\n      originY\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.scale(1.0 / x, 1.0 / y || x);\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    var {\n      x,\n      y\n    } = this.scale;\n    point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n  }\n\n}\n\nclass Matrix {\n  constructor(_, matrix, transformOrigin) {\n    this.type = 'matrix';\n    this.matrix = [];\n    this.originX = null;\n    this.originY = null;\n    this.matrix = toNumbers(matrix);\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n  }\n\n  apply(ctx) {\n    var {\n      originX,\n      originY,\n      matrix\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      originX,\n      originY,\n      matrix\n    } = this;\n    var a = matrix[0];\n    var b = matrix[2];\n    var c = matrix[4];\n    var d = matrix[1];\n    var e = matrix[3];\n    var f = matrix[5];\n    var g = 0.0;\n    var h = 0.0;\n    var i = 1.0;\n    var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    point.applyTransform(this.matrix);\n  }\n\n}\n\nclass Skew extends Matrix {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skew';\n    this.angle = null;\n    this.angle = new Property(document, 'angle', skew);\n  }\n\n}\n\nclass SkewX extends Skew {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skewX';\n    this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n  }\n\n}\n\nclass SkewY extends Skew {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skewY';\n    this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n  }\n\n}\n\nfunction parseTransforms(transform) {\n  return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n  var [type, value] = transform.split('(');\n  return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n  constructor(document, transform, transformOrigin) {\n    this.document = document;\n    this.transforms = [];\n    var data = parseTransforms(transform);\n    data.forEach(transform => {\n      if (transform === 'none') {\n        return;\n      }\n\n      var [type, value] = parseTransform(transform);\n      var TransformType = Transform.transformTypes[type];\n\n      if (typeof TransformType !== 'undefined') {\n        this.transforms.push(new TransformType(this.document, value, transformOrigin));\n      }\n    });\n  }\n\n  static fromElement(document, element) {\n    var transformStyle = element.getStyle('transform', false, true);\n    var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n    var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n    if (transformStyle.hasValue()) {\n      return new Transform(document, transformStyle.getString(), transformOrigin);\n    }\n\n    return null;\n  }\n\n  apply(ctx) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = 0; i < len; i++) {\n      transforms[i].apply(ctx);\n    }\n  }\n\n  unapply(ctx) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = len - 1; i >= 0; i--) {\n      transforms[i].unapply(ctx);\n    }\n  } // TODO: applyToPoint unused ... remove?\n\n\n  applyToPoint(point) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = 0; i < len; i++) {\n      transforms[i].applyToPoint(point);\n    }\n  }\n\n}\nTransform.transformTypes = {\n  translate: Translate,\n  rotate: Rotate,\n  scale: Scale,\n  matrix: Matrix,\n  skewX: SkewX,\n  skewY: SkewY\n};\n\nclass Element {\n  constructor(document, node) {\n    var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    this.document = document;\n    this.node = node;\n    this.captureTextNodes = captureTextNodes;\n    this.attributes = {};\n    this.styles = {};\n    this.stylesSpecificity = {};\n    this.animationFrozen = false;\n    this.animationFrozenValue = '';\n    this.parent = null;\n    this.children = [];\n\n    if (!node || node.nodeType !== 1) {\n      // ELEMENT_NODE\n      return;\n    } // add attributes\n\n\n    Array.from(node.attributes).forEach(attribute => {\n      var nodeName = normalizeAttributeName(attribute.nodeName);\n      this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n    });\n    this.addStylesFromStyleDefinition(); // add inline styles\n\n    if (this.getAttribute('style').hasValue()) {\n      var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n      styles.forEach(style => {\n        if (!style) {\n          return;\n        }\n\n        var [name, value] = style.split(':').map(_ => _.trim());\n        this.styles[name] = new Property(document, name, value);\n      });\n    }\n\n    var {\n      definitions\n    } = document;\n    var id = this.getAttribute('id'); // add id\n\n    if (id.hasValue()) {\n      if (!definitions[id.getString()]) {\n        definitions[id.getString()] = this;\n      }\n    }\n\n    Array.from(node.childNodes).forEach(childNode => {\n      if (childNode.nodeType === 1) {\n        this.addChild(childNode); // ELEMENT_NODE\n      } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n        var textNode = document.createTextNode(childNode);\n\n        if (textNode.getText().length > 0) {\n          this.addChild(textNode); // TEXT_NODE\n        }\n      }\n    });\n  }\n\n  getAttribute(name) {\n    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var attr = this.attributes[name];\n\n    if (!attr && createIfNotExists) {\n      var _attr = new Property(this.document, name, '');\n\n      this.attributes[name] = _attr;\n      return _attr;\n    }\n\n    return attr || Property.empty(this.document);\n  }\n\n  getHrefAttribute() {\n    for (var key in this.attributes) {\n      if (key === 'href' || key.endsWith(':href')) {\n        return this.attributes[key];\n      }\n    }\n\n    return Property.empty(this.document);\n  }\n\n  getStyle(name) {\n    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var style = this.styles[name];\n\n    if (style) {\n      return style;\n    }\n\n    var attr = this.getAttribute(name);\n\n    if (attr !== null && attr !== void 0 && attr.hasValue()) {\n      this.styles[name] = attr; // move up to me to cache\n\n      return attr;\n    }\n\n    if (!skipAncestors) {\n      var {\n        parent\n      } = this;\n\n      if (parent) {\n        var parentStyle = parent.getStyle(name);\n\n        if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n          return parentStyle;\n        }\n      }\n    }\n\n    if (createIfNotExists) {\n      var _style = new Property(this.document, name, '');\n\n      this.styles[name] = _style;\n      return _style;\n    }\n\n    return style || Property.empty(this.document);\n  }\n\n  render(ctx) {\n    // don't render display=none\n    // don't render visibility=hidden\n    if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n      return;\n    }\n\n    ctx.save();\n\n    if (this.getStyle('mask').hasValue()) {\n      // mask\n      var mask = this.getStyle('mask').getDefinition();\n\n      if (mask) {\n        this.applyEffects(ctx);\n        mask.apply(ctx, this);\n      }\n    } else if (this.getStyle('filter').getValue('none') !== 'none') {\n      // filter\n      var filter = this.getStyle('filter').getDefinition();\n\n      if (filter) {\n        this.applyEffects(ctx);\n        filter.apply(ctx, this);\n      }\n    } else {\n      this.setContext(ctx);\n      this.renderChildren(ctx);\n      this.clearContext(ctx);\n    }\n\n    ctx.restore();\n  }\n\n  setContext(_) {// NO RENDER\n  }\n\n  applyEffects(ctx) {\n    // transform\n    var transform = Transform.fromElement(this.document, this);\n\n    if (transform) {\n      transform.apply(ctx);\n    } // clip\n\n\n    var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n    if (clipPathStyleProp.hasValue()) {\n      var clip = clipPathStyleProp.getDefinition();\n\n      if (clip) {\n        clip.apply(ctx);\n      }\n    }\n  }\n\n  clearContext(_) {// NO RENDER\n  }\n\n  renderChildren(ctx) {\n    this.children.forEach(child => {\n      child.render(ctx);\n    });\n  }\n\n  addChild(childNode) {\n    var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n    child.parent = this;\n\n    if (!Element.ignoreChildTypes.includes(child.type)) {\n      this.children.push(child);\n    }\n  }\n\n  matchesSelector(selector) {\n    var _node$getAttribute;\n\n    var {\n      node\n    } = this;\n\n    if (typeof node.matches === 'function') {\n      return node.matches(selector);\n    }\n\n    var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n    if (!styleClasses || styleClasses === '') {\n      return false;\n    }\n\n    return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n  }\n\n  addStylesFromStyleDefinition() {\n    var {\n      styles,\n      stylesSpecificity\n    } = this.document;\n\n    for (var selector in styles) {\n      if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n        var style = styles[selector];\n        var specificity = stylesSpecificity[selector];\n\n        if (style) {\n          for (var name in style) {\n            var existingSpecificity = this.stylesSpecificity[name];\n\n            if (typeof existingSpecificity === 'undefined') {\n              existingSpecificity = '000';\n            }\n\n            if (specificity >= existingSpecificity) {\n              this.styles[name] = style[name];\n              this.stylesSpecificity[name] = specificity;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  removeStyles(element, ignoreStyles) {\n    var toRestore = ignoreStyles.reduce((toRestore, name) => {\n      var styleProp = element.getStyle(name);\n\n      if (!styleProp.hasValue()) {\n        return toRestore;\n      }\n\n      var value = styleProp.getString();\n      styleProp.setValue('');\n      return [...toRestore, [name, value]];\n    }, []);\n    return toRestore;\n  }\n\n  restoreStyles(element, styles) {\n    styles.forEach(_ref => {\n      var [name, value] = _ref;\n      element.getStyle(name, true).setValue(value);\n    });\n  }\n\n  isFirstChild() {\n    var _this$parent;\n\n    return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n  }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n  }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n  var trimmed = fontFamily.trim();\n  return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n  return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n  if (!fontStyle) {\n    return '';\n  }\n\n  var targetFontStyle = fontStyle.trim().toLowerCase();\n\n  switch (targetFontStyle) {\n    case 'normal':\n    case 'italic':\n    case 'oblique':\n    case 'inherit':\n    case 'initial':\n    case 'unset':\n      return targetFontStyle;\n\n    default:\n      if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n        return targetFontStyle;\n      }\n\n      return '';\n  }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n  if (!fontWeight) {\n    return '';\n  }\n\n  var targetFontWeight = fontWeight.trim().toLowerCase();\n\n  switch (targetFontWeight) {\n    case 'normal':\n    case 'bold':\n    case 'lighter':\n    case 'bolder':\n    case 'inherit':\n    case 'initial':\n    case 'unset':\n      return targetFontWeight;\n\n    default:\n      if (/^[\\d.]+$/.test(targetFontWeight)) {\n        return targetFontWeight;\n      }\n\n      return '';\n  }\n}\n\nclass Font {\n  constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n    var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n    this.fontFamily = fontFamily || inheritFont.fontFamily;\n    this.fontSize = fontSize || inheritFont.fontSize;\n    this.fontStyle = fontStyle || inheritFont.fontStyle;\n    this.fontWeight = fontWeight || inheritFont.fontWeight;\n    this.fontVariant = fontVariant || inheritFont.fontVariant;\n  }\n\n  static parse() {\n    var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var inherit = arguments.length > 1 ? arguments[1] : undefined;\n    var fontStyle = '';\n    var fontVariant = '';\n    var fontWeight = '';\n    var fontSize = '';\n    var fontFamily = '';\n    var parts = compressSpaces(font).trim().split(' ');\n    var set = {\n      fontSize: false,\n      fontStyle: false,\n      fontWeight: false,\n      fontVariant: false\n    };\n    parts.forEach(part => {\n      switch (true) {\n        case !set.fontStyle && Font.styles.includes(part):\n          if (part !== 'inherit') {\n            fontStyle = part;\n          }\n\n          set.fontStyle = true;\n          break;\n\n        case !set.fontVariant && Font.variants.includes(part):\n          if (part !== 'inherit') {\n            fontVariant = part;\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          break;\n\n        case !set.fontWeight && Font.weights.includes(part):\n          if (part !== 'inherit') {\n            fontWeight = part;\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          set.fontWeight = true;\n          break;\n\n        case !set.fontSize:\n          if (part !== 'inherit') {\n            [fontSize] = part.split('/');\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          set.fontWeight = true;\n          set.fontSize = true;\n          break;\n\n        default:\n          if (part !== 'inherit') {\n            fontFamily += part;\n          }\n\n      }\n    });\n    return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n  }\n\n  toString() {\n    return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n    prepareFontFamily(this.fontFamily)].join(' ').trim();\n  }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n  constructor() {\n    var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n    var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n    var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n    var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n    this.x1 = x1;\n    this.y1 = y1;\n    this.x2 = x2;\n    this.y2 = y2;\n    this.addPoint(x1, y1);\n    this.addPoint(x2, y2);\n  }\n\n  get x() {\n    return this.x1;\n  }\n\n  get y() {\n    return this.y1;\n  }\n\n  get width() {\n    return this.x2 - this.x1;\n  }\n\n  get height() {\n    return this.y2 - this.y1;\n  }\n\n  addPoint(x, y) {\n    if (typeof x !== 'undefined') {\n      if (isNaN(this.x1) || isNaN(this.x2)) {\n        this.x1 = x;\n        this.x2 = x;\n      }\n\n      if (x < this.x1) {\n        this.x1 = x;\n      }\n\n      if (x > this.x2) {\n        this.x2 = x;\n      }\n    }\n\n    if (typeof y !== 'undefined') {\n      if (isNaN(this.y1) || isNaN(this.y2)) {\n        this.y1 = y;\n        this.y2 = y;\n      }\n\n      if (y < this.y1) {\n        this.y1 = y;\n      }\n\n      if (y > this.y2) {\n        this.y2 = y;\n      }\n    }\n  }\n\n  addX(x) {\n    this.addPoint(x, null);\n  }\n\n  addY(y) {\n    this.addPoint(null, y);\n  }\n\n  addBoundingBox(boundingBox) {\n    if (!boundingBox) {\n      return;\n    }\n\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = boundingBox;\n    this.addPoint(x1, y1);\n    this.addPoint(x2, y2);\n  }\n\n  sumCubic(t, p0, p1, p2, p3) {\n    return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n  }\n\n  bezierCurveAdd(forX, p0, p1, p2, p3) {\n    var b = 6 * p0 - 12 * p1 + 6 * p2;\n    var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n    var c = 3 * p1 - 3 * p0;\n\n    if (a === 0) {\n      if (b === 0) {\n        return;\n      }\n\n      var t = -c / b;\n\n      if (0 < t && t < 1) {\n        if (forX) {\n          this.addX(this.sumCubic(t, p0, p1, p2, p3));\n        } else {\n          this.addY(this.sumCubic(t, p0, p1, p2, p3));\n        }\n      }\n\n      return;\n    }\n\n    var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n    if (b2ac < 0) {\n      return;\n    }\n\n    var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n    if (0 < t1 && t1 < 1) {\n      if (forX) {\n        this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n      } else {\n        this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n      }\n    }\n\n    var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n    if (0 < t2 && t2 < 1) {\n      if (forX) {\n        this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n      } else {\n        this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n      }\n    }\n  } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n  addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n    this.addPoint(p0x, p0y);\n    this.addPoint(p3x, p3y);\n    this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n    this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n  }\n\n  addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n    var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n    var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n    var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n    var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n    this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n  }\n\n  isPointInBox(x, y) {\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = this;\n    return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n  }\n\n}\n\nclass PathParser extends SVGPathData {\n  constructor(path) {\n    super(path // Fix spaces after signs.\n    .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n    .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n    this.control = null;\n    this.start = null;\n    this.current = null;\n    this.command = null;\n    this.commands = this.commands;\n    this.i = -1;\n    this.previousCommand = null;\n    this.points = [];\n    this.angles = [];\n  }\n\n  reset() {\n    this.i = -1;\n    this.command = null;\n    this.previousCommand = null;\n    this.start = new Point(0, 0);\n    this.control = new Point(0, 0);\n    this.current = new Point(0, 0);\n    this.points = [];\n    this.angles = [];\n  }\n\n  isEnd() {\n    var {\n      i,\n      commands\n    } = this;\n    return i >= commands.length - 1;\n  }\n\n  next() {\n    var command = this.commands[++this.i];\n    this.previousCommand = this.command;\n    this.command = command;\n    return command;\n  }\n\n  getPoint() {\n    var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n    var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n    var point = new Point(this.command[xProp], this.command[yProp]);\n    return this.makeAbsolute(point);\n  }\n\n  getAsControlPoint(xProp, yProp) {\n    var point = this.getPoint(xProp, yProp);\n    this.control = point;\n    return point;\n  }\n\n  getAsCurrentPoint(xProp, yProp) {\n    var point = this.getPoint(xProp, yProp);\n    this.current = point;\n    return point;\n  }\n\n  getReflectedControlPoint() {\n    var previousCommand = this.previousCommand.type;\n\n    if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n      return this.current;\n    } // reflect point\n\n\n    var {\n      current: {\n        x: cx,\n        y: cy\n      },\n      control: {\n        x: ox,\n        y: oy\n      }\n    } = this;\n    var point = new Point(2 * cx - ox, 2 * cy - oy);\n    return point;\n  }\n\n  makeAbsolute(point) {\n    if (this.command.relative) {\n      var {\n        x,\n        y\n      } = this.current;\n      point.x += x;\n      point.y += y;\n    }\n\n    return point;\n  }\n\n  addMarker(point, from, priorTo) {\n    var {\n      points,\n      angles\n    } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n    if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n      angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n    }\n\n    this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n  }\n\n  addMarkerAngle(point, angle) {\n    this.points.push(point);\n    this.angles.push(angle);\n  }\n\n  getMarkerPoints() {\n    return this.points;\n  }\n\n  getMarkerAngles() {\n    var {\n      angles\n    } = this;\n    var len = angles.length;\n\n    for (var i = 0; i < len; i++) {\n      if (!angles[i]) {\n        for (var j = i + 1; j < len; j++) {\n          if (angles[j]) {\n            angles[i] = angles[j];\n            break;\n          }\n        }\n      }\n    }\n\n    return angles;\n  }\n\n}\n\nclass RenderedElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.modifiedEmSizeStack = false;\n  }\n\n  calculateOpacity() {\n    var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n    var element = this;\n\n    while (element) {\n      var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n      if (opacityStyle.hasValue(true)) {\n        opacity *= opacityStyle.getNumber();\n      }\n\n      element = element.parent;\n    }\n\n    return opacity;\n  }\n\n  setContext(ctx) {\n    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (!fromMeasure) {\n      // causes stack overflow when measuring text with gradients\n      // fill\n      var fillStyleProp = this.getStyle('fill');\n      var fillOpacityStyleProp = this.getStyle('fill-opacity');\n      var strokeStyleProp = this.getStyle('stroke');\n      var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n      if (fillStyleProp.isUrlDefinition()) {\n        var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n        if (fillStyle) {\n          ctx.fillStyle = fillStyle;\n        }\n      } else if (fillStyleProp.hasValue()) {\n        if (fillStyleProp.getString() === 'currentColor') {\n          fillStyleProp.setValue(this.getStyle('color').getColor());\n        }\n\n        var _fillStyle = fillStyleProp.getColor();\n\n        if (_fillStyle !== 'inherit') {\n          ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n        }\n      }\n\n      if (fillOpacityStyleProp.hasValue()) {\n        var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n        ctx.fillStyle = _fillStyle2;\n      } // stroke\n\n\n      if (strokeStyleProp.isUrlDefinition()) {\n        var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n        if (strokeStyle) {\n          ctx.strokeStyle = strokeStyle;\n        }\n      } else if (strokeStyleProp.hasValue()) {\n        if (strokeStyleProp.getString() === 'currentColor') {\n          strokeStyleProp.setValue(this.getStyle('color').getColor());\n        }\n\n        var _strokeStyle = strokeStyleProp.getString();\n\n        if (_strokeStyle !== 'inherit') {\n          ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n        }\n      }\n\n      if (strokeOpacityProp.hasValue()) {\n        var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n        ctx.strokeStyle = _strokeStyle2;\n      }\n\n      var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n      if (strokeWidthStyleProp.hasValue()) {\n        var newLineWidth = strokeWidthStyleProp.getPixels();\n        ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n        : newLineWidth;\n      }\n\n      var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n      var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n      var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n      // const pointOrderStyleProp = this.getStyle('paint-order');\n\n      var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n      var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n      if (strokeLinecapStyleProp.hasValue()) {\n        ctx.lineCap = strokeLinecapStyleProp.getString();\n      }\n\n      if (strokeLinejoinStyleProp.hasValue()) {\n        ctx.lineJoin = strokeLinejoinStyleProp.getString();\n      }\n\n      if (strokeMiterlimitProp.hasValue()) {\n        ctx.miterLimit = strokeMiterlimitProp.getNumber();\n      } // NEED TEST\n      // if (pointOrderStyleProp.hasValue()) {\n      // \t// ?\n      // \tctx.paintOrder = pointOrderStyleProp.getValue();\n      // }\n\n\n      if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n        var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n        if (typeof ctx.setLineDash !== 'undefined') {\n          ctx.setLineDash(gaps);\n        } else // @ts-expect-error Handle browser prefix.\n          if (typeof ctx.webkitLineDash !== 'undefined') {\n            // @ts-expect-error Handle browser prefix.\n            ctx.webkitLineDash = gaps;\n          } else // @ts-expect-error Handle browser prefix.\n            if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n              // @ts-expect-error Handle browser prefix.\n              ctx.mozDash = gaps;\n            }\n\n        var offset = strokeDashoffsetProp.getPixels();\n\n        if (typeof ctx.lineDashOffset !== 'undefined') {\n          ctx.lineDashOffset = offset;\n        } else // @ts-expect-error Handle browser prefix.\n          if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n            // @ts-expect-error Handle browser prefix.\n            ctx.webkitLineDashOffset = offset;\n          } else // @ts-expect-error Handle browser prefix.\n            if (typeof ctx.mozDashOffset !== 'undefined') {\n              // @ts-expect-error Handle browser prefix.\n              ctx.mozDashOffset = offset;\n            }\n      }\n    } // font\n\n\n    this.modifiedEmSizeStack = false;\n\n    if (typeof ctx.font !== 'undefined') {\n      var fontStyleProp = this.getStyle('font');\n      var fontStyleStyleProp = this.getStyle('font-style');\n      var fontVariantStyleProp = this.getStyle('font-variant');\n      var fontWeightStyleProp = this.getStyle('font-weight');\n      var fontSizeStyleProp = this.getStyle('font-size');\n      var fontFamilyStyleProp = this.getStyle('font-family');\n      var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n      fontStyleStyleProp.setValue(font.fontStyle);\n      fontVariantStyleProp.setValue(font.fontVariant);\n      fontWeightStyleProp.setValue(font.fontWeight);\n      fontSizeStyleProp.setValue(font.fontSize);\n      fontFamilyStyleProp.setValue(font.fontFamily);\n      ctx.font = font.toString();\n\n      if (fontSizeStyleProp.isPixels()) {\n        this.document.emSize = fontSizeStyleProp.getPixels();\n        this.modifiedEmSizeStack = true;\n      }\n    }\n\n    if (!fromMeasure) {\n      // effects\n      this.applyEffects(ctx); // opacity\n\n      ctx.globalAlpha = this.calculateOpacity();\n    }\n  }\n\n  clearContext(ctx) {\n    super.clearContext(ctx);\n\n    if (this.modifiedEmSizeStack) {\n      this.document.popEmSize();\n    }\n  }\n\n}\n\nclass PathElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'path';\n    this.pathParser = null;\n    this.pathParser = new PathParser(this.getAttribute('d').getString());\n  }\n\n  path(ctx) {\n    var {\n      pathParser\n    } = this;\n    var boundingBox = new BoundingBox();\n    pathParser.reset();\n\n    if (ctx) {\n      ctx.beginPath();\n    }\n\n    while (!pathParser.isEnd()) {\n      switch (pathParser.next().type) {\n        case PathParser.MOVE_TO:\n          this.pathM(ctx, boundingBox);\n          break;\n\n        case PathParser.LINE_TO:\n          this.pathL(ctx, boundingBox);\n          break;\n\n        case PathParser.HORIZ_LINE_TO:\n          this.pathH(ctx, boundingBox);\n          break;\n\n        case PathParser.VERT_LINE_TO:\n          this.pathV(ctx, boundingBox);\n          break;\n\n        case PathParser.CURVE_TO:\n          this.pathC(ctx, boundingBox);\n          break;\n\n        case PathParser.SMOOTH_CURVE_TO:\n          this.pathS(ctx, boundingBox);\n          break;\n\n        case PathParser.QUAD_TO:\n          this.pathQ(ctx, boundingBox);\n          break;\n\n        case PathParser.SMOOTH_QUAD_TO:\n          this.pathT(ctx, boundingBox);\n          break;\n\n        case PathParser.ARC:\n          this.pathA(ctx, boundingBox);\n          break;\n\n        case PathParser.CLOSE_PATH:\n          this.pathZ(ctx, boundingBox);\n          break;\n      }\n    }\n\n    return boundingBox;\n  }\n\n  getBoundingBox(_) {\n    return this.path();\n  }\n\n  getMarkers() {\n    var {\n      pathParser\n    } = this;\n    var points = pathParser.getMarkerPoints();\n    var angles = pathParser.getMarkerAngles();\n    var markers = points.map((point, i) => [point, angles[i]]);\n    return markers;\n  }\n\n  renderChildren(ctx) {\n    this.path(ctx);\n    this.document.screen.mouse.checkPath(this, ctx);\n    var fillRuleStyleProp = this.getStyle('fill-rule');\n\n    if (ctx.fillStyle !== '') {\n      if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n        ctx.fill(fillRuleStyleProp.getString());\n      } else {\n        ctx.fill();\n      }\n    }\n\n    if (ctx.strokeStyle !== '') {\n      if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n        ctx.save();\n        ctx.setTransform(1, 0, 0, 1, 0, 0);\n        ctx.stroke();\n        ctx.restore();\n      } else {\n        ctx.stroke();\n      }\n    }\n\n    var markers = this.getMarkers();\n\n    if (markers) {\n      var markersLastIndex = markers.length - 1;\n      var markerStartStyleProp = this.getStyle('marker-start');\n      var markerMidStyleProp = this.getStyle('marker-mid');\n      var markerEndStyleProp = this.getStyle('marker-end');\n\n      if (markerStartStyleProp.isUrlDefinition()) {\n        var marker = markerStartStyleProp.getDefinition();\n        var [point, angle] = markers[0];\n        marker.render(ctx, point, angle);\n      }\n\n      if (markerMidStyleProp.isUrlDefinition()) {\n        var _marker = markerMidStyleProp.getDefinition();\n\n        for (var i = 1; i < markersLastIndex; i++) {\n          var [_point, _angle] = markers[i];\n\n          _marker.render(ctx, _point, _angle);\n        }\n      }\n\n      if (markerEndStyleProp.isUrlDefinition()) {\n        var _marker2 = markerEndStyleProp.getDefinition();\n\n        var [_point2, _angle2] = markers[markersLastIndex];\n\n        _marker2.render(ctx, _point2, _angle2);\n      }\n    }\n  }\n\n  static pathM(pathParser) {\n    var point = pathParser.getAsCurrentPoint();\n    pathParser.start = pathParser.current;\n    return {\n      point\n    };\n  }\n\n  pathM(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      point\n    } = PathElement.pathM(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.moveTo(x, y);\n    }\n  }\n\n  static pathL(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point\n    };\n  }\n\n  pathL(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathL(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathH(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n    pathParser.current = point;\n    return {\n      current,\n      point\n    };\n  }\n\n  pathH(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathH(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathV(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n    pathParser.current = point;\n    return {\n      current,\n      point\n    };\n  }\n\n  pathV(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathV(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathC(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getPoint('x1', 'y1');\n    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathC(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathC(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, point);\n    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathS(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getReflectedControlPoint();\n    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathS(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathS(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, point);\n    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathQ(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathQ(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathQ(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathT(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var controlPoint = pathParser.getReflectedControlPoint();\n    pathParser.control = controlPoint;\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathT(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathT(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathA(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var {\n      rX,\n      rY,\n      xRot,\n      lArcFlag,\n      sweepFlag\n    } = command;\n    var xAxisRotation = xRot * (Math.PI / 180.0);\n    var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n    // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n    // x1', y1'\n\n    var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n    var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n    if (l > 1) {\n      rX *= Math.sqrt(l);\n      rY *= Math.sqrt(l);\n    } // cx', cy'\n\n\n    var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n    if (isNaN(s)) {\n      s = 0;\n    }\n\n    var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n    var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n    var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n    // angle delta\n\n    var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n    var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n    var ad = vectorsAngle(u, v); // Δθ\n\n    if (vectorsRatio(u, v) <= -1) {\n      ad = Math.PI;\n    }\n\n    if (vectorsRatio(u, v) >= 1) {\n      ad = 0;\n    }\n\n    return {\n      currentPoint,\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    };\n  }\n\n  pathA(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      currentPoint,\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    } = PathElement.pathA(pathParser); // for markers\n\n    var dir = 1 - sweepFlag ? 1.0 : -1.0;\n    var ah = a1 + dir * (ad / 2.0);\n    var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n    pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n    pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n    boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n    if (ctx && !isNaN(a1) && !isNaN(ad)) {\n      var r = rX > rY ? rX : rY;\n      var sx = rX > rY ? 1 : rX / rY;\n      var sy = rX > rY ? rY / rX : 1;\n      ctx.translate(centp.x, centp.y);\n      ctx.rotate(xAxisRotation);\n      ctx.scale(sx, sy);\n      ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n      ctx.scale(1 / sx, 1 / sy);\n      ctx.rotate(-xAxisRotation);\n      ctx.translate(-centp.x, -centp.y);\n    }\n  }\n\n  static pathZ(pathParser) {\n    pathParser.current = pathParser.start;\n  }\n\n  pathZ(ctx, boundingBox) {\n    PathElement.pathZ(this.pathParser);\n\n    if (ctx) {\n      // only close path if it is not a straight line\n      if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n        ctx.closePath();\n      }\n    }\n  }\n\n}\n\nclass GlyphElement extends PathElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'glyph';\n    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n    this.unicode = this.getAttribute('unicode').getString();\n    this.arabicForm = this.getAttribute('arabic-form').getString();\n  }\n\n}\n\nclass TextElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, new.target === TextElement ? true : captureTextNodes);\n    this.type = 'text';\n    this.x = 0;\n    this.y = 0;\n    this.measureCache = -1;\n  }\n\n  setContext(ctx) {\n    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    super.setContext(ctx, fromMeasure);\n    var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n    if (textBaseline) {\n      ctx.textBaseline = textBaseline;\n    }\n  }\n\n  initializeCoordinates() {\n    this.x = 0;\n    this.y = 0;\n    this.leafTexts = [];\n    this.textChunkStart = 0;\n    this.minX = Number.POSITIVE_INFINITY;\n    this.maxX = Number.NEGATIVE_INFINITY;\n  }\n\n  getBoundingBox(ctx) {\n    if (this.type !== 'text') {\n      return this.getTElementBoundingBox(ctx);\n    } // first, calculate child positions\n\n\n    this.initializeCoordinates();\n    this.adjustChildCoordinatesRecursive(ctx);\n    var boundingBox = null; // then calculate bounding box\n\n    this.children.forEach((_, i) => {\n      var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n      if (!boundingBox) {\n        boundingBox = childBoundingBox;\n      } else {\n        boundingBox.addBoundingBox(childBoundingBox);\n      }\n    });\n    return boundingBox;\n  }\n\n  getFontSize() {\n    var {\n      document,\n      parent\n    } = this;\n    var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n    var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n    return fontSize;\n  }\n\n  getTElementBoundingBox(ctx) {\n    var fontSize = this.getFontSize();\n    return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n  }\n\n  getGlyph(font, text, i) {\n    var char = text[i];\n    var glyph = null;\n\n    if (font.isArabic) {\n      var len = text.length;\n      var prevChar = text[i - 1];\n      var nextChar = text[i + 1];\n      var arabicForm = 'isolated';\n\n      if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n        arabicForm = 'terminal';\n      }\n\n      if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n        arabicForm = 'medial';\n      }\n\n      if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n        arabicForm = 'initial';\n      }\n\n      if (typeof font.glyphs[char] !== 'undefined') {\n        // NEED TEST\n        var maybeGlyph = font.glyphs[char];\n        glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n      }\n    } else {\n      glyph = font.glyphs[char];\n    }\n\n    if (!glyph) {\n      glyph = font.missingGlyph;\n    }\n\n    return glyph;\n  }\n\n  getText() {\n    return '';\n  }\n\n  getTextFromNode(node) {\n    var textNode = node || this.node;\n    var childNodes = Array.from(textNode.parentNode.childNodes);\n    var index = childNodes.indexOf(textNode);\n    var lastIndex = childNodes.length - 1;\n    var text = compressSpaces( // textNode.value\n    // || textNode.text\n    textNode.textContent || '');\n\n    if (index === 0) {\n      text = trimLeft(text);\n    }\n\n    if (index === lastIndex) {\n      text = trimRight(text);\n    }\n\n    return text;\n  }\n\n  renderChildren(ctx) {\n    if (this.type !== 'text') {\n      this.renderTElementChildren(ctx);\n      return;\n    } // first, calculate child positions\n\n\n    this.initializeCoordinates();\n    this.adjustChildCoordinatesRecursive(ctx); // then render\n\n    this.children.forEach((_, i) => {\n      this.renderChild(ctx, this, this, i);\n    });\n    var {\n      mouse\n    } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n    if (mouse.isWorking()) {\n      mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n    }\n  }\n\n  renderTElementChildren(ctx) {\n    var {\n      document,\n      parent\n    } = this;\n    var renderText = this.getText();\n    var customFont = parent.getStyle('font-family').getDefinition();\n\n    if (customFont) {\n      var {\n        unitsPerEm\n      } = customFont.fontFace;\n      var ctxFont = Font.parse(document.ctx.font);\n      var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n      var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n      var scale = fontSize / unitsPerEm;\n      var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n      var dx = toNumbers(parent.getAttribute('dx').getString());\n      var len = text.length;\n\n      for (var i = 0; i < len; i++) {\n        var glyph = this.getGlyph(customFont, text, i);\n        ctx.translate(this.x, this.y);\n        ctx.scale(scale, -scale);\n        var lw = ctx.lineWidth;\n        ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n        if (fontStyle === 'italic') {\n          ctx.transform(1, 0, .4, 1, 0, 0);\n        }\n\n        glyph.render(ctx);\n\n        if (fontStyle === 'italic') {\n          ctx.transform(1, 0, -.4, 1, 0, 0);\n        }\n\n        ctx.lineWidth = lw;\n        ctx.scale(1 / scale, -1 / scale);\n        ctx.translate(-this.x, -this.y);\n        this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n          this.x += dx[i];\n        }\n      }\n\n      return;\n    }\n\n    var {\n      x,\n      y\n    } = this; // NEED TEST\n    // if (ctx.paintOrder === 'stroke') {\n    // \tif (ctx.strokeStyle) {\n    // \t\tctx.strokeText(renderText, x, y);\n    // \t}\n    // \tif (ctx.fillStyle) {\n    // \t\tctx.fillText(renderText, x, y);\n    // \t}\n    // } else {\n\n    if (ctx.fillStyle) {\n      ctx.fillText(renderText, x, y);\n    }\n\n    if (ctx.strokeStyle) {\n      ctx.strokeText(renderText, x, y);\n    } // }\n\n  }\n\n  applyAnchoring() {\n    if (this.textChunkStart >= this.leafTexts.length) {\n      return;\n    } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n    // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n    // Vertical text is not supported.\n\n\n    var firstElement = this.leafTexts[this.textChunkStart];\n    var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n    var isRTL = false; // we treat RTL like LTR\n\n    var shift = 0;\n\n    if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n      shift = firstElement.x - this.minX;\n    } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n      shift = firstElement.x - this.maxX;\n    } else {\n      shift = firstElement.x - (this.minX + this.maxX) / 2;\n    }\n\n    for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n      this.leafTexts[i].x += shift;\n    } // start new chunk\n\n\n    this.minX = Number.POSITIVE_INFINITY;\n    this.maxX = Number.NEGATIVE_INFINITY;\n    this.textChunkStart = this.leafTexts.length;\n  }\n\n  adjustChildCoordinatesRecursive(ctx) {\n    this.children.forEach((_, i) => {\n      this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n    });\n    this.applyAnchoring();\n  }\n\n  adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n\n    if (child.children.length > 0) {\n      child.children.forEach((_, i) => {\n        textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n      });\n    } else {\n      // only leafs are relevant\n      this.adjustChildCoordinates(ctx, textParent, parent, i);\n    }\n  }\n\n  adjustChildCoordinates(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n\n    if (typeof child.measureText !== 'function') {\n      return child;\n    }\n\n    ctx.save();\n    child.setContext(ctx, true);\n    var xAttr = child.getAttribute('x');\n    var yAttr = child.getAttribute('y');\n    var dxAttr = child.getAttribute('dx');\n    var dyAttr = child.getAttribute('dy');\n    var customFont = child.getStyle('font-family').getDefinition();\n    var isRTL = Boolean(customFont) && customFont.isRTL;\n\n    if (i === 0) {\n      // First children inherit attributes from parent(s). Positional attributes\n      // are only inherited from a parent to it's first child.\n      if (!xAttr.hasValue()) {\n        xAttr.setValue(child.getInheritedAttribute('x'));\n      }\n\n      if (!yAttr.hasValue()) {\n        yAttr.setValue(child.getInheritedAttribute('y'));\n      }\n\n      if (!dxAttr.hasValue()) {\n        dxAttr.setValue(child.getInheritedAttribute('dx'));\n      }\n\n      if (!dyAttr.hasValue()) {\n        dyAttr.setValue(child.getInheritedAttribute('dy'));\n      }\n    }\n\n    var width = child.measureText(ctx);\n\n    if (isRTL) {\n      textParent.x -= width;\n    }\n\n    if (xAttr.hasValue()) {\n      // an \"x\" attribute marks the start of a new chunk\n      textParent.applyAnchoring();\n      child.x = xAttr.getPixels('x');\n\n      if (dxAttr.hasValue()) {\n        child.x += dxAttr.getPixels('x');\n      }\n    } else {\n      if (dxAttr.hasValue()) {\n        textParent.x += dxAttr.getPixels('x');\n      }\n\n      child.x = textParent.x;\n    }\n\n    textParent.x = child.x;\n\n    if (!isRTL) {\n      textParent.x += width;\n    }\n\n    if (yAttr.hasValue()) {\n      child.y = yAttr.getPixels('y');\n\n      if (dyAttr.hasValue()) {\n        child.y += dyAttr.getPixels('y');\n      }\n    } else {\n      if (dyAttr.hasValue()) {\n        textParent.y += dyAttr.getPixels('y');\n      }\n\n      child.y = textParent.y;\n    }\n\n    textParent.y = child.y; // update the current chunk and it's bounds\n\n    textParent.leafTexts.push(child);\n    textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n    textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n    child.clearContext(ctx);\n    ctx.restore();\n    return child;\n  }\n\n  getChildBoundingBox(ctx, textParent, parent, i) {\n    var child = parent.children[i]; // not a text node?\n\n    if (typeof child.getBoundingBox !== 'function') {\n      return null;\n    }\n\n    var boundingBox = child.getBoundingBox(ctx);\n\n    if (!boundingBox) {\n      return null;\n    }\n\n    child.children.forEach((_, i) => {\n      var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n      boundingBox.addBoundingBox(childBoundingBox);\n    });\n    return boundingBox;\n  }\n\n  renderChild(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n    child.render(ctx);\n    child.children.forEach((_, i) => {\n      textParent.renderChild(ctx, textParent, child, i);\n    });\n  }\n\n  measureText(ctx) {\n    var {\n      measureCache\n    } = this;\n\n    if (~measureCache) {\n      return measureCache;\n    }\n\n    var renderText = this.getText();\n    var measure = this.measureTargetText(ctx, renderText);\n    this.measureCache = measure;\n    return measure;\n  }\n\n  measureTargetText(ctx, targetText) {\n    if (!targetText.length) {\n      return 0;\n    }\n\n    var {\n      parent\n    } = this;\n    var customFont = parent.getStyle('font-family').getDefinition();\n\n    if (customFont) {\n      var fontSize = this.getFontSize();\n      var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n      var dx = toNumbers(parent.getAttribute('dx').getString());\n      var len = text.length;\n      var _measure = 0;\n\n      for (var i = 0; i < len; i++) {\n        var glyph = this.getGlyph(customFont, text, i);\n        _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n          _measure += dx[i];\n        }\n      }\n\n      return _measure;\n    }\n\n    if (!ctx.measureText) {\n      return targetText.length * 10;\n    }\n\n    ctx.save();\n    this.setContext(ctx, true);\n    var {\n      width: measure\n    } = ctx.measureText(targetText);\n    this.clearContext(ctx);\n    ctx.restore();\n    return measure;\n  }\n  /**\r\n   * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n   * are only inherited from a parent to its first child.\r\n   * @param name - The attribute name.\r\n   * @returns The attribute value or null.\r\n   */\n\n\n  getInheritedAttribute(name) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n    var current = this;\n\n    while (current instanceof TextElement && current.isFirstChild()) {\n      var parentAttr = current.parent.getAttribute(name);\n\n      if (parentAttr.hasValue(true)) {\n        return parentAttr.getValue('0');\n      }\n\n      current = current.parent;\n    }\n\n    return null;\n  }\n\n}\n\nclass TSpanElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n    this.type = 'tspan'; // if this node has children, then they own the text\n\n    this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n  }\n\n  getText() {\n    return this.text;\n  }\n\n}\n\nclass TextNode extends TSpanElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'textNode';\n  }\n\n}\n\nclass SVGElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'svg';\n    this.root = false;\n  }\n\n  setContext(ctx) {\n    var _this$node$parentNode;\n\n    var {\n      document\n    } = this;\n    var {\n      screen,\n      window\n    } = document;\n    var canvas = ctx.canvas;\n    screen.setDefaults(ctx);\n\n    if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n      ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n      var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n      if (fontSizeProp.hasValue()) {\n        document.rootEmSize = fontSizeProp.getPixels('y');\n        document.emSize = document.rootEmSize;\n      }\n    } // create new view port\n\n\n    if (!this.getAttribute('x').hasValue()) {\n      this.getAttribute('x', true).setValue(0);\n    }\n\n    if (!this.getAttribute('y').hasValue()) {\n      this.getAttribute('y', true).setValue(0);\n    }\n\n    var {\n      width,\n      height\n    } = screen.viewPort;\n\n    if (!this.getStyle('width').hasValue()) {\n      this.getStyle('width', true).setValue('100%');\n    }\n\n    if (!this.getStyle('height').hasValue()) {\n      this.getStyle('height', true).setValue('100%');\n    }\n\n    if (!this.getStyle('color').hasValue()) {\n      this.getStyle('color', true).setValue('black');\n    }\n\n    var refXAttr = this.getAttribute('refX');\n    var refYAttr = this.getAttribute('refY');\n    var viewBoxAttr = this.getAttribute('viewBox');\n    var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n    var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n    var minX = 0;\n    var minY = 0;\n    var clipX = 0;\n    var clipY = 0;\n\n    if (viewBox) {\n      minX = viewBox[0];\n      minY = viewBox[1];\n    }\n\n    if (!this.root) {\n      width = this.getStyle('width').getPixels('x');\n      height = this.getStyle('height').getPixels('y');\n\n      if (this.type === 'marker') {\n        clipX = minX;\n        clipY = minY;\n        minX = 0;\n        minY = 0;\n      }\n    }\n\n    screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n    // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n    if (this.node // is not temporary SVGElement\n    && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n      this.getStyle('transform-origin', true, true).setValue('50% 50%');\n    }\n\n    super.setContext(ctx);\n    ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n    if (viewBox) {\n      width = viewBox[2];\n      height = viewBox[3];\n    }\n\n    document.setViewBox({\n      ctx,\n      aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n      width: screen.viewPort.width,\n      desiredWidth: width,\n      height: screen.viewPort.height,\n      desiredHeight: height,\n      minX,\n      minY,\n      refX: refXAttr.getValue(),\n      refY: refYAttr.getValue(),\n      clip,\n      clipX,\n      clipY\n    });\n\n    if (viewBox) {\n      screen.viewPort.removeCurrent();\n      screen.viewPort.setCurrent(width, height);\n    }\n  }\n\n  clearContext(ctx) {\n    super.clearContext(ctx);\n    this.document.screen.viewPort.removeCurrent();\n  }\n  /**\r\n   * Resize SVG to fit in given size.\r\n   * @param width\r\n   * @param height\r\n   * @param preserveAspectRatio\r\n   */\n\n\n  resize(width) {\n    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var widthAttr = this.getAttribute('width', true);\n    var heightAttr = this.getAttribute('height', true);\n    var viewBoxAttr = this.getAttribute('viewBox');\n    var styleAttr = this.getAttribute('style');\n    var originWidth = widthAttr.getNumber(0);\n    var originHeight = heightAttr.getNumber(0);\n\n    if (preserveAspectRatio) {\n      if (typeof preserveAspectRatio === 'string') {\n        this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n      } else {\n        var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n        if (preserveAspectRatioAttr.hasValue()) {\n          preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n        }\n      }\n    }\n\n    widthAttr.setValue(width);\n    heightAttr.setValue(height);\n\n    if (!viewBoxAttr.hasValue()) {\n      viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n    }\n\n    if (styleAttr.hasValue()) {\n      var widthStyle = this.getStyle('width');\n      var heightStyle = this.getStyle('height');\n\n      if (widthStyle.hasValue()) {\n        widthStyle.setValue(\"\".concat(width, \"px\"));\n      }\n\n      if (heightStyle.hasValue()) {\n        heightStyle.setValue(\"\".concat(height, \"px\"));\n      }\n    }\n  }\n\n}\n\nclass RectElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'rect';\n  }\n\n  path(ctx) {\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width', false, true).getPixels('x');\n    var height = this.getStyle('height', false, true).getPixels('y');\n    var rxAttr = this.getAttribute('rx');\n    var ryAttr = this.getAttribute('ry');\n    var rx = rxAttr.getPixels('x');\n    var ry = ryAttr.getPixels('y');\n\n    if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n      ry = rx;\n    }\n\n    if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n      rx = ry;\n    }\n\n    rx = Math.min(rx, width / 2.0);\n    ry = Math.min(ry, height / 2.0);\n\n    if (ctx) {\n      var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n      ctx.beginPath(); // always start the path so we don't fill prior paths\n\n      if (height > 0 && width > 0) {\n        ctx.moveTo(x + rx, y);\n        ctx.lineTo(x + width - rx, y);\n        ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n        ctx.lineTo(x + width, y + height - ry);\n        ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n        ctx.lineTo(x + rx, y + height);\n        ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n        ctx.lineTo(x, y + ry);\n        ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n        ctx.closePath();\n      }\n    }\n\n    return new BoundingBox(x, y, x + width, y + height);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass CircleElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'circle';\n  }\n\n  path(ctx) {\n    var cx = this.getAttribute('cx').getPixels('x');\n    var cy = this.getAttribute('cy').getPixels('y');\n    var r = this.getAttribute('r').getPixels();\n\n    if (ctx && r > 0) {\n      ctx.beginPath();\n      ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n      ctx.closePath();\n    }\n\n    return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass EllipseElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'ellipse';\n  }\n\n  path(ctx) {\n    var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n    var rx = this.getAttribute('rx').getPixels('x');\n    var ry = this.getAttribute('ry').getPixels('y');\n    var cx = this.getAttribute('cx').getPixels('x');\n    var cy = this.getAttribute('cy').getPixels('y');\n\n    if (ctx && rx > 0 && ry > 0) {\n      ctx.beginPath();\n      ctx.moveTo(cx + rx, cy);\n      ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n      ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n      ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n      ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n      ctx.closePath();\n    }\n\n    return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass LineElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'line';\n  }\n\n  getPoints() {\n    return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n  }\n\n  path(ctx) {\n    var [{\n      x: x0,\n      y: y0\n    }, {\n      x: x1,\n      y: y1\n    }] = this.getPoints();\n\n    if (ctx) {\n      ctx.beginPath();\n      ctx.moveTo(x0, y0);\n      ctx.lineTo(x1, y1);\n    }\n\n    return new BoundingBox(x0, y0, x1, y1);\n  }\n\n  getMarkers() {\n    var [p0, p1] = this.getPoints();\n    var a = p0.angleTo(p1);\n    return [[p0, a], [p1, a]];\n  }\n\n}\n\nclass PolylineElement extends PathElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'polyline';\n    this.points = [];\n    this.points = Point.parsePath(this.getAttribute('points').getString());\n  }\n\n  path(ctx) {\n    var {\n      points\n    } = this;\n    var [{\n      x: x0,\n      y: y0\n    }] = points;\n    var boundingBox = new BoundingBox(x0, y0);\n\n    if (ctx) {\n      ctx.beginPath();\n      ctx.moveTo(x0, y0);\n    }\n\n    points.forEach(_ref => {\n      var {\n        x,\n        y\n      } = _ref;\n      boundingBox.addPoint(x, y);\n\n      if (ctx) {\n        ctx.lineTo(x, y);\n      }\n    });\n    return boundingBox;\n  }\n\n  getMarkers() {\n    var {\n      points\n    } = this;\n    var lastIndex = points.length - 1;\n    var markers = [];\n    points.forEach((point, i) => {\n      if (i === lastIndex) {\n        return;\n      }\n\n      markers.push([point, point.angleTo(points[i + 1])]);\n    });\n\n    if (markers.length > 0) {\n      markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n    }\n\n    return markers;\n  }\n\n}\n\nclass PolygonElement extends PolylineElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'polygon';\n  }\n\n  path(ctx) {\n    var boundingBox = super.path(ctx);\n    var [{\n      x,\n      y\n    }] = this.points;\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n      ctx.closePath();\n    }\n\n    return boundingBox;\n  }\n\n}\n\nclass PatternElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'pattern';\n  }\n\n  createPattern(ctx, _, parentOpacityProp) {\n    var width = this.getStyle('width').getPixels('x', true);\n    var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n    var patternSvg = new SVGElement(this.document, null);\n    patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n    patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n    patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n    patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n    patternSvg.children = this.children;\n    var patternCanvas = this.document.createCanvas(width, height);\n    var patternCtx = patternCanvas.getContext('2d');\n    var xAttr = this.getAttribute('x');\n    var yAttr = this.getAttribute('y');\n\n    if (xAttr.hasValue() && yAttr.hasValue()) {\n      patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n    }\n\n    if (parentOpacityProp.hasValue()) {\n      this.styles['fill-opacity'] = parentOpacityProp;\n    } else {\n      Reflect.deleteProperty(this.styles, 'fill-opacity');\n    } // render 3x3 grid so when we transform there's no white space on edges\n\n\n    for (var x = -1; x <= 1; x++) {\n      for (var y = -1; y <= 1; y++) {\n        patternCtx.save();\n        patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n        patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n        patternSvg.render(patternCtx);\n        patternCtx.restore();\n      }\n    }\n\n    var pattern = ctx.createPattern(patternCanvas, 'repeat');\n    return pattern;\n  }\n\n}\n\nclass MarkerElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'marker';\n  }\n\n  render(ctx, point, angle) {\n    if (!point) {\n      return;\n    }\n\n    var {\n      x,\n      y\n    } = point;\n    var orient = this.getAttribute('orient').getString('auto');\n    var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n    ctx.translate(x, y);\n\n    if (orient === 'auto') {\n      ctx.rotate(angle);\n    }\n\n    if (markerUnits === 'strokeWidth') {\n      ctx.scale(ctx.lineWidth, ctx.lineWidth);\n    }\n\n    ctx.save(); // render me using a temporary svg element\n\n    var markerSvg = new SVGElement(this.document, null);\n    markerSvg.type = this.type;\n    markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n    markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n    markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n    markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n    markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n    markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n    markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n    markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n    markerSvg.children = this.children;\n    markerSvg.render(ctx);\n    ctx.restore();\n\n    if (markerUnits === 'strokeWidth') {\n      ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n    }\n\n    if (orient === 'auto') {\n      ctx.rotate(-angle);\n    }\n\n    ctx.translate(-x, -y);\n  }\n\n}\n\nclass DefsElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'defs';\n  }\n\n  render() {// NOOP\n  }\n\n}\n\nclass GElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'g';\n  }\n\n  getBoundingBox(ctx) {\n    var boundingBox = new BoundingBox();\n    this.children.forEach(child => {\n      boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n    });\n    return boundingBox;\n  }\n\n}\n\nclass GradientElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.attributesToInherit = ['gradientUnits'];\n    this.stops = [];\n    var {\n      stops,\n      children\n    } = this;\n    children.forEach(child => {\n      if (child.type === 'stop') {\n        stops.push(child);\n      }\n    });\n  }\n\n  getGradientUnits() {\n    return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n  }\n\n  createGradient(ctx, element, parentOpacityProp) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n    var stopsContainer = this;\n\n    if (this.getHrefAttribute().hasValue()) {\n      stopsContainer = this.getHrefAttribute().getDefinition();\n      this.inheritStopContainer(stopsContainer);\n    }\n\n    var {\n      stops\n    } = stopsContainer;\n    var gradient = this.getGradient(ctx, element);\n\n    if (!gradient) {\n      return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n    }\n\n    stops.forEach(stop => {\n      gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n    });\n\n    if (this.getAttribute('gradientTransform').hasValue()) {\n      // render as transformed pattern on temporary canvas\n      var {\n        document\n      } = this;\n      var {\n        MAX_VIRTUAL_PIXELS,\n        viewPort\n      } = document.screen;\n      var [rootView] = viewPort.viewPorts;\n      var rect = new RectElement(document, null);\n      rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n      rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n      rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n      rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n      var group = new GElement(document, null);\n      group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n      group.children = [rect];\n      var patternSvg = new SVGElement(document, null);\n      patternSvg.attributes.x = new Property(document, 'x', 0);\n      patternSvg.attributes.y = new Property(document, 'y', 0);\n      patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n      patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n      patternSvg.children = [group];\n      var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n      var patternCtx = patternCanvas.getContext('2d');\n      patternCtx.fillStyle = gradient;\n      patternSvg.render(patternCtx);\n      return patternCtx.createPattern(patternCanvas, 'no-repeat');\n    }\n\n    return gradient;\n  }\n\n  inheritStopContainer(stopsContainer) {\n    this.attributesToInherit.forEach(attributeToInherit => {\n      if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n        this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n      }\n    });\n  }\n\n  addParentOpacity(parentOpacityProp, color) {\n    if (parentOpacityProp.hasValue()) {\n      var colorProp = new Property(this.document, 'color', color);\n      return colorProp.addOpacity(parentOpacityProp).getColor();\n    }\n\n    return color;\n  }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'linearGradient';\n    this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n  }\n\n  getGradient(ctx, element) {\n    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n    var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n    if (isBoundingBoxUnits && !boundingBox) {\n      return null;\n    }\n\n    if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n      this.getAttribute('x1', true).setValue(0);\n      this.getAttribute('y1', true).setValue(0);\n      this.getAttribute('x2', true).setValue(1);\n      this.getAttribute('y2', true).setValue(0);\n    }\n\n    var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n    var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n    var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n    var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n    if (x1 === x2 && y1 === y2) {\n      return null;\n    }\n\n    return ctx.createLinearGradient(x1, y1, x2, y2);\n  }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'radialGradient';\n    this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n  }\n\n  getGradient(ctx, element) {\n    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n    var boundingBox = element.getBoundingBox(ctx);\n\n    if (isBoundingBoxUnits && !boundingBox) {\n      return null;\n    }\n\n    if (!this.getAttribute('cx').hasValue()) {\n      this.getAttribute('cx', true).setValue('50%');\n    }\n\n    if (!this.getAttribute('cy').hasValue()) {\n      this.getAttribute('cy', true).setValue('50%');\n    }\n\n    if (!this.getAttribute('r').hasValue()) {\n      this.getAttribute('r', true).setValue('50%');\n    }\n\n    var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n    var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n    var fx = cx;\n    var fy = cy;\n\n    if (this.getAttribute('fx').hasValue()) {\n      fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n    }\n\n    if (this.getAttribute('fy').hasValue()) {\n      fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n    }\n\n    var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n    var fr = this.getAttribute('fr').getPixels();\n    return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n  }\n\n}\n\nclass StopElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'stop';\n    var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n    var stopOpacity = this.getStyle('stop-opacity');\n    var stopColor = this.getStyle('stop-color', true);\n\n    if (stopColor.getString() === '') {\n      stopColor.setValue('#000');\n    }\n\n    if (stopOpacity.hasValue()) {\n      stopColor = stopColor.addOpacity(stopOpacity);\n    }\n\n    this.offset = offset;\n    this.color = stopColor.getColor();\n  }\n\n}\n\nclass AnimateElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'animate';\n    this.duration = 0;\n    this.initialValue = null;\n    this.initialUnits = '';\n    this.removed = false;\n    this.frozen = false;\n    document.screen.animations.push(this);\n    this.begin = this.getAttribute('begin').getMilliseconds();\n    this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n    this.from = this.getAttribute('from');\n    this.to = this.getAttribute('to');\n    this.values = new Property(document, 'values', null);\n    var valuesAttr = this.getAttribute('values');\n\n    if (valuesAttr.hasValue()) {\n      this.values.setValue(valuesAttr.getString().split(';'));\n    }\n  }\n\n  getProperty() {\n    var attributeType = this.getAttribute('attributeType').getString();\n    var attributeName = this.getAttribute('attributeName').getString();\n\n    if (attributeType === 'CSS') {\n      return this.parent.getStyle(attributeName, true);\n    }\n\n    return this.parent.getAttribute(attributeName, true);\n  }\n\n  calcValue() {\n    var {\n      initialUnits\n    } = this;\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress(); // tween value linearly\n\n    var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n    if (initialUnits === '%') {\n      newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n    }\n\n    return \"\".concat(newValue).concat(initialUnits);\n  }\n\n  update(delta) {\n    var {\n      parent\n    } = this;\n    var prop = this.getProperty(); // set initial value\n\n    if (!this.initialValue) {\n      this.initialValue = prop.getString();\n      this.initialUnits = prop.getUnits();\n    } // if we're past the end time\n\n\n    if (this.duration > this.maxDuration) {\n      var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n      if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n        this.duration = 0;\n      } else if (fill === 'freeze' && !this.frozen) {\n        this.frozen = true;\n        parent.animationFrozen = true;\n        parent.animationFrozenValue = prop.getString();\n      } else if (fill === 'remove' && !this.removed) {\n        this.removed = true;\n        prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n        return true;\n      }\n\n      return false;\n    }\n\n    this.duration += delta; // if we're past the begin time\n\n    var updated = false;\n\n    if (this.begin < this.duration) {\n      var newValue = this.calcValue(); // tween\n\n      var typeAttr = this.getAttribute('type');\n\n      if (typeAttr.hasValue()) {\n        // for transform, etc.\n        var type = typeAttr.getString();\n        newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n      }\n\n      prop.setValue(newValue);\n      updated = true;\n    }\n\n    return updated;\n  }\n\n  getProgress() {\n    var {\n      document,\n      values\n    } = this;\n    var result = {\n      progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n    };\n\n    if (values.hasValue()) {\n      var p = result.progress * (values.getValue().length - 1);\n      var lb = Math.floor(p);\n      var ub = Math.ceil(p);\n      result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n      result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n      result.progress = (p - lb) / (ub - lb);\n    } else {\n      result.from = this.from;\n      result.to = this.to;\n    }\n\n    return result;\n  }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'animateColor';\n  }\n\n  calcValue() {\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress();\n    var colorFrom = new RGBColor(from.getColor());\n    var colorTo = new RGBColor(to.getColor());\n\n    if (colorFrom.ok && colorTo.ok) {\n      // tween color linearly\n      var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n      var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n      var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n      return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n    }\n\n    return this.getAttribute('from').getColor();\n  }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'animateTransform';\n  }\n\n  calcValue() {\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress(); // tween value linearly\n\n    var transformFrom = toNumbers(from.getString());\n    var transformTo = toNumbers(to.getString());\n    var newValue = transformFrom.map((from, i) => {\n      var to = transformTo[i];\n      return from + (to - from) * progress;\n    }).join(' ');\n    return newValue;\n  }\n\n}\n\nclass FontElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'font';\n    this.glyphs = {};\n    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n    var {\n      definitions\n    } = document;\n    var {\n      children\n    } = this;\n\n    for (var child of children) {\n      switch (child.type) {\n        case 'font-face':\n          {\n            this.fontFace = child;\n            var fontFamilyStyle = child.getStyle('font-family');\n\n            if (fontFamilyStyle.hasValue()) {\n              definitions[fontFamilyStyle.getString()] = this;\n            }\n\n            break;\n          }\n\n        case 'missing-glyph':\n          this.missingGlyph = child;\n          break;\n\n        case 'glyph':\n          {\n            var glyph = child;\n\n            if (glyph.arabicForm) {\n              this.isRTL = true;\n              this.isArabic = true;\n\n              if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n                this.glyphs[glyph.unicode] = {};\n              }\n\n              this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n            } else {\n              this.glyphs[glyph.unicode] = glyph;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n\n  render() {// NO RENDER\n  }\n\n}\n\nclass FontFaceElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'font-face';\n    this.ascent = this.getAttribute('ascent').getNumber();\n    this.descent = this.getAttribute('descent').getNumber();\n    this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n  }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'missing-glyph';\n    this.horizAdvX = 0;\n  }\n\n}\n\nclass TRefElement extends TextElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'tref';\n  }\n\n  getText() {\n    var element = this.getHrefAttribute().getDefinition();\n\n    if (element) {\n      var firstChild = element.children[0];\n\n      if (firstChild) {\n        return firstChild.getText();\n      }\n    }\n\n    return '';\n  }\n\n}\n\nclass AElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'a';\n    var {\n      childNodes\n    } = node;\n    var firstChild = childNodes[0];\n    var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n    this.hasText = hasText;\n    this.text = hasText ? this.getTextFromNode(firstChild) : '';\n  }\n\n  getText() {\n    return this.text;\n  }\n\n  renderChildren(ctx) {\n    if (this.hasText) {\n      // render as text element\n      super.renderChildren(ctx);\n      var {\n        document,\n        x,\n        y\n      } = this;\n      var {\n        mouse\n      } = document.screen;\n      var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n      if (mouse.isWorking()) {\n        mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n      }\n    } else if (this.children.length > 0) {\n      // render as temporary group\n      var g = new GElement(this.document, null);\n      g.children = this.children;\n      g.parent = this;\n      g.render(ctx);\n    }\n  }\n\n  onClick() {\n    var {\n      window\n    } = this.document;\n\n    if (window) {\n      window.open(this.getHrefAttribute().getString());\n    }\n  }\n\n  onMouseMove() {\n    var ctx = this.document.ctx;\n    ctx.canvas.style.cursor = 'pointer';\n  }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'textPath';\n    this.textWidth = 0;\n    this.textHeight = 0;\n    this.pathLength = -1;\n    this.glyphInfo = null;\n    this.letterSpacingCache = [];\n    this.measuresCache = new Map([['', 0]]);\n    var pathElement = this.getHrefAttribute().getDefinition();\n    this.text = this.getTextFromNode();\n    this.dataArray = this.parsePathData(pathElement);\n  }\n\n  getText() {\n    return this.text;\n  }\n\n  path(ctx) {\n    var {\n      dataArray\n    } = this;\n\n    if (ctx) {\n      ctx.beginPath();\n    }\n\n    dataArray.forEach(_ref => {\n      var {\n        type,\n        points\n      } = _ref;\n\n      switch (type) {\n        case PathParser.LINE_TO:\n          if (ctx) {\n            ctx.lineTo(points[0], points[1]);\n          }\n\n          break;\n\n        case PathParser.MOVE_TO:\n          if (ctx) {\n            ctx.moveTo(points[0], points[1]);\n          }\n\n          break;\n\n        case PathParser.CURVE_TO:\n          if (ctx) {\n            ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n          }\n\n          break;\n\n        case PathParser.QUAD_TO:\n          if (ctx) {\n            ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n          }\n\n          break;\n\n        case PathParser.ARC:\n          {\n            var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n            var r = rx > ry ? rx : ry;\n            var scaleX = rx > ry ? 1 : rx / ry;\n            var scaleY = rx > ry ? ry / rx : 1;\n\n            if (ctx) {\n              ctx.translate(cx, cy);\n              ctx.rotate(psi);\n              ctx.scale(scaleX, scaleY);\n              ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n              ctx.scale(1 / scaleX, 1 / scaleY);\n              ctx.rotate(-psi);\n              ctx.translate(-cx, -cy);\n            }\n\n            break;\n          }\n\n        case PathParser.CLOSE_PATH:\n          if (ctx) {\n            ctx.closePath();\n          }\n\n          break;\n      }\n    });\n  }\n\n  renderChildren(ctx) {\n    this.setTextData(ctx);\n    ctx.save();\n    var textDecoration = this.parent.getStyle('text-decoration').getString();\n    var fontSize = this.getFontSize();\n    var {\n      glyphInfo\n    } = this;\n    var fill = ctx.fillStyle;\n\n    if (textDecoration === 'underline') {\n      ctx.beginPath();\n    }\n\n    glyphInfo.forEach((glyph, i) => {\n      var {\n        p0,\n        p1,\n        rotation,\n        text: partialText\n      } = glyph;\n      ctx.save();\n      ctx.translate(p0.x, p0.y);\n      ctx.rotate(rotation);\n\n      if (ctx.fillStyle) {\n        ctx.fillText(partialText, 0, 0);\n      }\n\n      if (ctx.strokeStyle) {\n        ctx.strokeText(partialText, 0, 0);\n      }\n\n      ctx.restore();\n\n      if (textDecoration === 'underline') {\n        if (i === 0) {\n          ctx.moveTo(p0.x, p0.y + fontSize / 8);\n        }\n\n        ctx.lineTo(p1.x, p1.y + fontSize / 5);\n      } // // To assist with debugging visually, uncomment following\n      //\n      // ctx.beginPath();\n      // if (i % 2)\n      // \tctx.strokeStyle = 'red';\n      // else\n      // \tctx.strokeStyle = 'green';\n      // ctx.moveTo(p0.x, p0.y);\n      // ctx.lineTo(p1.x, p1.y);\n      // ctx.stroke();\n      // ctx.closePath();\n\n    });\n\n    if (textDecoration === 'underline') {\n      ctx.lineWidth = fontSize / 20;\n      ctx.strokeStyle = fill;\n      ctx.stroke();\n      ctx.closePath();\n    }\n\n    ctx.restore();\n  }\n\n  getLetterSpacingAt() {\n    var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    return this.letterSpacingCache[idx] || 0;\n  }\n\n  findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n    var offset = inputOffset;\n    var glyphWidth = this.measureText(ctx, c);\n\n    if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n      glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n    }\n\n    if (charI > -1) {\n      offset += this.getLetterSpacingAt(charI);\n    }\n\n    var splineStep = this.textHeight / 20;\n    var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n    var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n    var segment = {\n      p0,\n      p1\n    };\n    var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n    if (dy) {\n      var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n      var dyY = Math.cos(-rotation) * dy;\n      segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n        x: p0.x + dyX,\n        y: p0.y + dyY\n      });\n      segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n        x: p1.x + dyX,\n        y: p1.y + dyY\n      });\n    }\n\n    offset += glyphWidth;\n    return {\n      offset,\n      segment,\n      rotation\n    };\n  }\n\n  measureText(ctx, text) {\n    var {\n      measuresCache\n    } = this;\n    var targetText = text || this.getText();\n\n    if (measuresCache.has(targetText)) {\n      return measuresCache.get(targetText);\n    }\n\n    var measure = this.measureTargetText(ctx, targetText);\n    measuresCache.set(targetText, measure);\n    return measure;\n  } // This method supposes what all custom fonts already loaded.\n  // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n  // You need to call this method manually to update glyphs cache.\n\n\n  setTextData(ctx) {\n    if (this.glyphInfo) {\n      return;\n    }\n\n    var renderText = this.getText();\n    var chars = renderText.split('');\n    var spacesNumber = renderText.split(' ').length - 1;\n    var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n    var dy = this.parent.getAttribute('dy').getPixels('y');\n    var anchor = this.parent.getStyle('text-anchor').getString('start');\n    var thisSpacing = this.getStyle('letter-spacing');\n    var parentSpacing = this.parent.getStyle('letter-spacing');\n    var letterSpacing = 0;\n\n    if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n      letterSpacing = parentSpacing.getPixels();\n    } else if (thisSpacing.hasValue()) {\n      if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n        letterSpacing = thisSpacing.getPixels();\n      }\n    } // fill letter-spacing cache\n\n\n    var letterSpacingCache = [];\n    var textLen = renderText.length;\n    this.letterSpacingCache = letterSpacingCache;\n\n    for (var i = 0; i < textLen; i++) {\n      letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n    }\n\n    var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n    var textWidth = this.measureText(ctx);\n    var textFullWidth = Math.max(textWidth + dxSum, 0);\n    this.textWidth = textWidth;\n    this.textHeight = this.getFontSize();\n    this.glyphInfo = [];\n    var fullPathWidth = this.getPathLength();\n    var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n    var offset = 0;\n\n    if (anchor === 'middle' || anchor === 'center') {\n      offset = -textFullWidth / 2;\n    }\n\n    if (anchor === 'end' || anchor === 'right') {\n      offset = -textFullWidth;\n    }\n\n    offset += startOffset;\n    chars.forEach((char, i) => {\n      // Find such segment what distance between p0 and p1 is approx. width of glyph\n      var {\n        offset: nextOffset,\n        segment,\n        rotation\n      } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n      offset = nextOffset;\n\n      if (!segment.p0 || !segment.p1) {\n        return;\n      } // const width = this.getLineLength(\n      // \tsegment.p0.x,\n      // \tsegment.p0.y,\n      // \tsegment.p1.x,\n      // \tsegment.p1.y\n      // );\n      // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n      // Can foresee having a rough pair table built in that the developer can override as needed.\n      // Or use \"dx\" attribute of the <text> node as a naive replacement\n      // const kern = 0;\n      // placeholder for future implementation\n      // const midpoint = this.getPointOnLine(\n      // \tkern + width / 2.0,\n      // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n      // );\n\n\n      this.glyphInfo.push({\n        // transposeX: midpoint.x,\n        // transposeY: midpoint.y,\n        text: chars[i],\n        p0: segment.p0,\n        p1: segment.p1,\n        rotation\n      });\n    });\n  }\n\n  parsePathData(path) {\n    this.pathLength = -1; // reset path length\n\n    if (!path) {\n      return [];\n    }\n\n    var pathCommands = [];\n    var {\n      pathParser\n    } = path;\n    pathParser.reset(); // convert l, H, h, V, and v to L\n\n    while (!pathParser.isEnd()) {\n      var {\n        current\n      } = pathParser;\n      var startX = current ? current.x : 0;\n      var startY = current ? current.y : 0;\n      var command = pathParser.next();\n      var nextCommandType = command.type;\n      var points = [];\n\n      switch (command.type) {\n        case PathParser.MOVE_TO:\n          this.pathM(pathParser, points);\n          break;\n\n        case PathParser.LINE_TO:\n          nextCommandType = this.pathL(pathParser, points);\n          break;\n\n        case PathParser.HORIZ_LINE_TO:\n          nextCommandType = this.pathH(pathParser, points);\n          break;\n\n        case PathParser.VERT_LINE_TO:\n          nextCommandType = this.pathV(pathParser, points);\n          break;\n\n        case PathParser.CURVE_TO:\n          this.pathC(pathParser, points);\n          break;\n\n        case PathParser.SMOOTH_CURVE_TO:\n          nextCommandType = this.pathS(pathParser, points);\n          break;\n\n        case PathParser.QUAD_TO:\n          this.pathQ(pathParser, points);\n          break;\n\n        case PathParser.SMOOTH_QUAD_TO:\n          nextCommandType = this.pathT(pathParser, points);\n          break;\n\n        case PathParser.ARC:\n          points = this.pathA(pathParser);\n          break;\n\n        case PathParser.CLOSE_PATH:\n          PathElement.pathZ(pathParser);\n          break;\n      }\n\n      if (command.type !== PathParser.CLOSE_PATH) {\n        pathCommands.push({\n          type: nextCommandType,\n          points,\n          start: {\n            x: startX,\n            y: startY\n          },\n          pathLength: this.calcLength(startX, startY, nextCommandType, points)\n        });\n      } else {\n        pathCommands.push({\n          type: PathParser.CLOSE_PATH,\n          points: [],\n          pathLength: 0\n        });\n      }\n    }\n\n    return pathCommands;\n  }\n\n  pathM(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathM(pathParser).point;\n    points.push(x, y);\n  }\n\n  pathL(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathL(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathH(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathH(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathV(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathV(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathC(pathParser, points) {\n    var {\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathC(pathParser);\n    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n  }\n\n  pathS(pathParser, points) {\n    var {\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathS(pathParser);\n    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    return PathParser.CURVE_TO;\n  }\n\n  pathQ(pathParser, points) {\n    var {\n      controlPoint,\n      currentPoint\n    } = PathElement.pathQ(pathParser);\n    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n  }\n\n  pathT(pathParser, points) {\n    var {\n      controlPoint,\n      currentPoint\n    } = PathElement.pathT(pathParser);\n    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    return PathParser.QUAD_TO;\n  }\n\n  pathA(pathParser) {\n    var {\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    } = PathElement.pathA(pathParser);\n\n    if (sweepFlag === 0 && ad > 0) {\n      ad -= 2 * Math.PI;\n    }\n\n    if (sweepFlag === 1 && ad < 0) {\n      ad += 2 * Math.PI;\n    }\n\n    return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n  }\n\n  calcLength(x, y, commandType, points) {\n    var len = 0;\n    var p1 = null;\n    var p2 = null;\n    var t = 0;\n\n    switch (commandType) {\n      case PathParser.LINE_TO:\n        return this.getLineLength(x, y, points[0], points[1]);\n\n      case PathParser.CURVE_TO:\n        // Approximates by breaking curve into 100 line segments\n        len = 0.0;\n        p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n        for (t = 0.01; t <= 1; t += 0.01) {\n          p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          p1 = p2;\n        }\n\n        return len;\n\n      case PathParser.QUAD_TO:\n        // Approximates by breaking curve into 100 line segments\n        len = 0.0;\n        p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n        for (t = 0.01; t <= 1; t += 0.01) {\n          p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          p1 = p2;\n        }\n\n        return len;\n\n      case PathParser.ARC:\n        {\n          // Approximates by breaking curve into line segments\n          len = 0.0;\n          var start = points[4]; // 4 = theta\n\n          var dTheta = points[5]; // 5 = dTheta\n\n          var end = points[4] + dTheta;\n          var inc = Math.PI / 180.0; // 1 degree resolution\n\n          if (Math.abs(start - end) < inc) {\n            inc = Math.abs(start - end);\n          } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n          p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n          if (dTheta < 0) {\n            // clockwise\n            for (t = start - inc; t > end; t -= inc) {\n              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n              p1 = p2;\n            }\n          } else {\n            // counter-clockwise\n            for (t = start + inc; t < end; t += inc) {\n              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n              p1 = p2;\n            }\n          }\n\n          p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          return len;\n        }\n    }\n\n    return 0;\n  }\n\n  getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n    var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n    var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n    var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n    var run = Math.sqrt(dist * dist / (1 + m * m));\n\n    if (p2x < p1x) {\n      run *= -1;\n    }\n\n    var rise = m * run;\n    var pt = null;\n\n    if (p2x === p1x) {\n      // vertical line\n      pt = {\n        x: fromX,\n        y: fromY + rise\n      };\n    } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n      pt = {\n        x: fromX + run,\n        y: fromY + rise\n      };\n    } else {\n      var ix = 0;\n      var iy = 0;\n      var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n      if (len < PSEUDO_ZERO) {\n        return null;\n      }\n\n      var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n      u /= len * len;\n      ix = p1x + u * (p2x - p1x);\n      iy = p1y + u * (p2y - p1y);\n      var pRise = this.getLineLength(fromX, fromY, ix, iy);\n      var pRun = Math.sqrt(dist * dist - pRise * pRise);\n      run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n      if (p2x < p1x) {\n        run *= -1;\n      }\n\n      rise = m * run;\n      pt = {\n        x: ix + run,\n        y: iy + rise\n      };\n    }\n\n    return pt;\n  }\n\n  getPointOnPath(distance) {\n    var fullLen = this.getPathLength();\n    var cumulativePathLength = 0;\n    var p = null;\n\n    if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n      return null;\n    }\n\n    var {\n      dataArray\n    } = this;\n\n    for (var command of dataArray) {\n      if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n        cumulativePathLength += command.pathLength;\n        continue;\n      }\n\n      var delta = distance - cumulativePathLength;\n      var currentT = 0;\n\n      switch (command.type) {\n        case PathParser.LINE_TO:\n          p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n          break;\n\n        case PathParser.ARC:\n          {\n            var start = command.points[4]; // 4 = theta\n\n            var dTheta = command.points[5]; // 5 = dTheta\n\n            var end = command.points[4] + dTheta;\n            currentT = start + delta / command.pathLength * dTheta;\n\n            if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n              break;\n            }\n\n            p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n            break;\n          }\n\n        case PathParser.CURVE_TO:\n          currentT = delta / command.pathLength;\n\n          if (currentT > 1) {\n            currentT = 1;\n          }\n\n          p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n          break;\n\n        case PathParser.QUAD_TO:\n          currentT = delta / command.pathLength;\n\n          if (currentT > 1) {\n            currentT = 1;\n          }\n\n          p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n          break;\n      }\n\n      if (p) {\n        return p;\n      }\n\n      break;\n    }\n\n    return null;\n  }\n\n  getLineLength(x1, y1, x2, y2) {\n    return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  }\n\n  getPathLength() {\n    if (this.pathLength === -1) {\n      this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n    }\n\n    return this.pathLength;\n  }\n\n  getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n    var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n    var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n    return {\n      x,\n      y\n    };\n  }\n\n  getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n    var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n    var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n    return {\n      x,\n      y\n    };\n  }\n\n  getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n    var cosPsi = Math.cos(psi);\n    var sinPsi = Math.sin(psi);\n    var pt = {\n      x: rx * Math.cos(theta),\n      y: ry * Math.sin(theta)\n    };\n    return {\n      x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n      y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n    };\n  } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n  buildEquidistantCache(inputStep, inputPrecision) {\n    var fullLen = this.getPathLength();\n    var precision = inputPrecision || 0.25; // accuracy vs performance\n\n    var step = inputStep || fullLen / 100;\n\n    if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n      // Prepare cache\n      this.equidistantCache = {\n        step,\n        precision,\n        points: []\n      }; // Calculate points\n\n      var s = 0;\n\n      for (var l = 0; l <= fullLen; l += precision) {\n        var p0 = this.getPointOnPath(l);\n        var p1 = this.getPointOnPath(l + precision);\n\n        if (!p0 || !p1) {\n          continue;\n        }\n\n        s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n        if (s >= step) {\n          this.equidistantCache.points.push({\n            x: p0.x,\n            y: p0.y,\n            distance: l\n          });\n          s -= step;\n        }\n      }\n    }\n  }\n\n  getEquidistantPointOnPath(targetDistance, step, precision) {\n    this.buildEquidistantCache(step, precision);\n\n    if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n      return null;\n    }\n\n    var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n    return this.equidistantCache.points[idx] || null;\n  }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'image';\n    this.loaded = false;\n    var href = this.getHrefAttribute().getString();\n\n    if (!href) {\n      return;\n    }\n\n    var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n    document.images.push(this);\n\n    if (!isSvg) {\n      void this.loadImage(href);\n    } else {\n      void this.loadSvg(href);\n    }\n\n    this.isSvg = isSvg;\n  }\n\n  loadImage(href) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      try {\n        var image = yield _this.document.createImage(href);\n        _this.image = image;\n      } catch (err) {\n        console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n      }\n\n      _this.loaded = true;\n    })();\n  }\n\n  loadSvg(href) {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      var match = dataUriRegex.exec(href);\n\n      if (match) {\n        var data = match[5];\n\n        if (match[4] === 'base64') {\n          _this2.image = atob(data);\n        } else {\n          _this2.image = decodeURIComponent(data);\n        }\n      } else {\n        try {\n          var response = yield _this2.document.fetch(href);\n          var svg = yield response.text();\n          _this2.image = svg;\n        } catch (err) {\n          console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n        }\n      }\n\n      _this2.loaded = true;\n    })();\n  }\n\n  renderChildren(ctx) {\n    var {\n      document,\n      image,\n      loaded\n    } = this;\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n\n    if (!loaded || !image || !width || !height) {\n      return;\n    }\n\n    ctx.save();\n    ctx.translate(x, y);\n\n    if (this.isSvg) {\n      var subDocument = document.canvg.forkString(ctx, this.image, {\n        ignoreMouse: true,\n        ignoreAnimation: true,\n        ignoreDimensions: true,\n        ignoreClear: true,\n        offsetX: 0,\n        offsetY: 0,\n        scaleWidth: width,\n        scaleHeight: height\n      });\n      subDocument.document.documentElement.parent = this;\n      void subDocument.render();\n    } else {\n      var _image = this.image;\n      document.setViewBox({\n        ctx,\n        aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n        width,\n        desiredWidth: _image.width,\n        height,\n        desiredHeight: _image.height\n      });\n\n      if (this.loaded) {\n        if (typeof _image.complete === 'undefined' || _image.complete) {\n          ctx.drawImage(_image, 0, 0);\n        }\n      }\n    }\n\n    ctx.restore();\n  }\n\n  getBoundingBox() {\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n    return new BoundingBox(x, y, x + width, y + height);\n  }\n\n}\n\nclass SymbolElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'symbol';\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\n\nclass SVGFontLoader {\n  constructor(document) {\n    this.document = document;\n    this.loaded = false;\n    document.fonts.push(this);\n  }\n\n  load(fontFamily, url) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      try {\n        var {\n          document\n        } = _this;\n        var svgDocument = yield document.canvg.parser.load(url);\n        var fonts = svgDocument.getElementsByTagName('font');\n        Array.from(fonts).forEach(fontNode => {\n          var font = document.createElement(fontNode);\n          document.definitions[fontFamily] = font;\n        });\n      } catch (err) {\n        console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n      }\n\n      _this.loaded = true;\n    })();\n  }\n\n}\n\nclass StyleElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'style';\n    var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n    .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n    .replace(/@import.*;/g, '') // remove imports\n    );\n    var cssDefs = css.split('}');\n    cssDefs.forEach(_ => {\n      var def = _.trim();\n\n      if (!def) {\n        return;\n      }\n\n      var cssParts = def.split('{');\n      var cssClasses = cssParts[0].split(',');\n      var cssProps = cssParts[1].split(';');\n      cssClasses.forEach(_ => {\n        var cssClass = _.trim();\n\n        if (!cssClass) {\n          return;\n        }\n\n        var props = document.styles[cssClass] || {};\n        cssProps.forEach(cssProp => {\n          var prop = cssProp.indexOf(':');\n          var name = cssProp.substr(0, prop).trim();\n          var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n          if (name && value) {\n            props[name] = new Property(document, name, value);\n          }\n        });\n        document.styles[cssClass] = props;\n        document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n        if (cssClass === '@font-face') {\n          //  && !nodeEnv\n          var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n          var srcs = props.src.getString().split(',');\n          srcs.forEach(src => {\n            if (src.indexOf('format(\"svg\")') > 0) {\n              var url = parseExternalUrl(src);\n\n              if (url) {\n                void new SVGFontLoader(document).load(fontFamily, url);\n              }\n            }\n          });\n        }\n      });\n    });\n  }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'use';\n  }\n\n  setContext(ctx) {\n    super.setContext(ctx);\n    var xAttr = this.getAttribute('x');\n    var yAttr = this.getAttribute('y');\n\n    if (xAttr.hasValue()) {\n      ctx.translate(xAttr.getPixels('x'), 0);\n    }\n\n    if (yAttr.hasValue()) {\n      ctx.translate(0, yAttr.getPixels('y'));\n    }\n  }\n\n  path(ctx) {\n    var {\n      element\n    } = this;\n\n    if (element) {\n      element.path(ctx);\n    }\n  }\n\n  renderChildren(ctx) {\n    var {\n      document,\n      element\n    } = this;\n\n    if (element) {\n      var tempSvg = element;\n\n      if (element.type === 'symbol') {\n        // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n        tempSvg = new SVGElement(document, null);\n        tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n        tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n        tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n        tempSvg.children = element.children; // element is still the parent of the children\n\n        element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n      }\n\n      if (tempSvg.type === 'svg') {\n        var widthStyle = this.getStyle('width', false, true);\n        var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n        if (widthStyle.hasValue()) {\n          tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n        }\n\n        if (heightStyle.hasValue()) {\n          tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n        }\n      }\n\n      var oldParent = tempSvg.parent;\n      tempSvg.parent = this;\n      tempSvg.render(ctx);\n      tempSvg.parent = oldParent;\n    }\n  }\n\n  getBoundingBox(ctx) {\n    var {\n      element\n    } = this;\n\n    if (element) {\n      return element.getBoundingBox(ctx);\n    }\n\n    return null;\n  }\n\n  elementTransform() {\n    var {\n      document,\n      element\n    } = this;\n    return Transform.fromElement(document, element);\n  }\n\n  get element() {\n    if (!this.cachedElement) {\n      this.cachedElement = this.getHrefAttribute().getDefinition();\n    }\n\n    return this.cachedElement;\n  }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n  return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n  img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n  var mi = matrix[i];\n  return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n  return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feColorMatrix';\n    var matrix = toNumbers(this.getAttribute('values').getString());\n\n    switch (this.getAttribute('type').getString('matrix')) {\n      // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n      case 'saturate':\n        {\n          var s = matrix[0];\n          /* eslint-disable array-element-newline */\n\n          matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n          /* eslint-enable array-element-newline */\n\n          break;\n        }\n\n      case 'hueRotate':\n        {\n          var a = matrix[0] * Math.PI / 180.0;\n          /* eslint-disable array-element-newline */\n\n          matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n          /* eslint-enable array-element-newline */\n\n          break;\n        }\n\n      case 'luminanceToAlpha':\n        /* eslint-disable array-element-newline */\n        matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n        /* eslint-enable array-element-newline */\n\n        break;\n    }\n\n    this.matrix = matrix;\n    this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n  }\n\n  apply(ctx, _x, _y, width, height) {\n    // assuming x==0 && y==0 for now\n    var {\n      includeOpacity,\n      matrix\n    } = this;\n    var srcData = ctx.getImageData(0, 0, width, height);\n\n    for (var y = 0; y < height; y++) {\n      for (var x = 0; x < width; x++) {\n        var r = imGet(srcData.data, x, y, width, height, 0);\n        var g = imGet(srcData.data, x, y, width, height, 1);\n        var b = imGet(srcData.data, x, y, width, height, 2);\n        var a = imGet(srcData.data, x, y, width, height, 3);\n        var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n        var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n        var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n        var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n        if (includeOpacity) {\n          nr = 0;\n          ng = 0;\n          nb = 0;\n          na *= a / 255;\n        }\n\n        imSet(srcData.data, x, y, width, height, 0, nr);\n        imSet(srcData.data, x, y, width, height, 1, ng);\n        imSet(srcData.data, x, y, width, height, 2, nb);\n        imSet(srcData.data, x, y, width, height, 3, na);\n      }\n    }\n\n    ctx.clearRect(0, 0, width, height);\n    ctx.putImageData(srcData, 0, 0);\n  }\n\n}\n\nclass MaskElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'mask';\n  }\n\n  apply(ctx, element) {\n    var {\n      document\n    } = this; // render as temp svg\n\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n\n    if (!width && !height) {\n      var boundingBox = new BoundingBox();\n      this.children.forEach(child => {\n        boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n      });\n      x = Math.floor(boundingBox.x1);\n      y = Math.floor(boundingBox.y1);\n      width = Math.floor(boundingBox.width);\n      height = Math.floor(boundingBox.height);\n    }\n\n    var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n    var maskCanvas = document.createCanvas(x + width, y + height);\n    var maskCtx = maskCanvas.getContext('2d');\n    document.screen.setDefaults(maskCtx);\n    this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n    // TODO: refactor out apply from feColorMatrix\n\n    new FeColorMatrixElement(document, {\n      nodeType: 1,\n      childNodes: [],\n      attributes: [{\n        nodeName: 'type',\n        value: 'luminanceToAlpha'\n      }, {\n        nodeName: 'includeOpacity',\n        value: 'true'\n      }]\n    }).apply(maskCtx, 0, 0, x + width, y + height);\n    var tmpCanvas = document.createCanvas(x + width, y + height);\n    var tmpCtx = tmpCanvas.getContext('2d');\n    document.screen.setDefaults(tmpCtx);\n    element.render(tmpCtx);\n    tmpCtx.globalCompositeOperation = 'destination-in';\n    tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n    tmpCtx.fillRect(0, 0, x + width, y + height);\n    ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n    ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n    this.restoreStyles(element, ignoredStyles);\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'clipPath';\n  }\n\n  apply(ctx) {\n    var {\n      document\n    } = this;\n    var contextProto = Reflect.getPrototypeOf(ctx);\n    var {\n      beginPath,\n      closePath\n    } = ctx;\n\n    if (contextProto) {\n      contextProto.beginPath = noop;\n      contextProto.closePath = noop;\n    }\n\n    Reflect.apply(beginPath, ctx, []);\n    this.children.forEach(child => {\n      if (typeof child.path === 'undefined') {\n        return;\n      }\n\n      var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />\n\n      if (!transform) {\n        transform = Transform.fromElement(document, child);\n      }\n\n      if (transform) {\n        transform.apply(ctx);\n      }\n\n      child.path(ctx);\n\n      if (contextProto) {\n        contextProto.closePath = closePath;\n      }\n\n      if (transform) {\n        transform.unapply(ctx);\n      }\n    });\n    Reflect.apply(closePath, ctx, []);\n    ctx.clip();\n\n    if (contextProto) {\n      contextProto.beginPath = beginPath;\n      contextProto.closePath = closePath;\n    }\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\n\nclass FilterElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'filter';\n  }\n\n  apply(ctx, element) {\n    // render as temp svg\n    var {\n      document,\n      children\n    } = this;\n    var boundingBox = element.getBoundingBox(ctx);\n\n    if (!boundingBox) {\n      return;\n    }\n\n    var px = 0;\n    var py = 0;\n    children.forEach(child => {\n      var efd = child.extraFilterDistance || 0;\n      px = Math.max(px, efd);\n      py = Math.max(py, efd);\n    });\n    var width = Math.floor(boundingBox.width);\n    var height = Math.floor(boundingBox.height);\n    var tmpCanvasWidth = width + 2 * px;\n    var tmpCanvasHeight = height + 2 * py;\n\n    if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n      return;\n    }\n\n    var x = Math.floor(boundingBox.x);\n    var y = Math.floor(boundingBox.y);\n    var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n    var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n    var tmpCtx = tmpCanvas.getContext('2d');\n    document.screen.setDefaults(tmpCtx);\n    tmpCtx.translate(-x + px, -y + py);\n    element.render(tmpCtx); // apply filters\n\n    children.forEach(child => {\n      if (typeof child.apply === 'function') {\n        child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n      }\n    }); // render on me\n\n    ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n    this.restoreStyles(element, ignoredStyles);\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feDropShadow';\n    this.addStylesFromStyleDefinition();\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeMorphologyElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'feMorphology';\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeCompositeElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'feComposite';\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feGaussianBlur';\n    this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n    this.extraFilterDistance = this.blurRadius;\n  }\n\n  apply(ctx, x, y, width, height) {\n    var {\n      document,\n      blurRadius\n    } = this;\n    var body = document.window ? document.window.document.body : null;\n    var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n    canvas.id = document.getUniqueId();\n\n    if (body) {\n      canvas.style.display = 'none';\n      body.appendChild(canvas);\n    }\n\n    canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n    if (body) {\n      body.removeChild(canvas);\n    }\n  }\n\n}\n\nclass TitleElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'title';\n  }\n\n}\n\nclass DescElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'desc';\n  }\n\n}\n\nvar elements = {\n  'svg': SVGElement,\n  'rect': RectElement,\n  'circle': CircleElement,\n  'ellipse': EllipseElement,\n  'line': LineElement,\n  'polyline': PolylineElement,\n  'polygon': PolygonElement,\n  'path': PathElement,\n  'pattern': PatternElement,\n  'marker': MarkerElement,\n  'defs': DefsElement,\n  'linearGradient': LinearGradientElement,\n  'radialGradient': RadialGradientElement,\n  'stop': StopElement,\n  'animate': AnimateElement,\n  'animateColor': AnimateColorElement,\n  'animateTransform': AnimateTransformElement,\n  'font': FontElement,\n  'font-face': FontFaceElement,\n  'missing-glyph': MissingGlyphElement,\n  'glyph': GlyphElement,\n  'text': TextElement,\n  'tspan': TSpanElement,\n  'tref': TRefElement,\n  'a': AElement,\n  'textPath': TextPathElement,\n  'image': ImageElement,\n  'g': GElement,\n  'symbol': SymbolElement,\n  'style': StyleElement,\n  'use': UseElement,\n  'mask': MaskElement,\n  'clipPath': ClipPathElement,\n  'filter': FilterElement,\n  'feDropShadow': FeDropShadowElement,\n  'feMorphology': FeMorphologyElement,\n  'feComposite': FeCompositeElement,\n  'feColorMatrix': FeColorMatrixElement,\n  'feGaussianBlur': FeGaussianBlurElement,\n  'title': TitleElement,\n  'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n  var canvas = document.createElement('canvas');\n  canvas.width = width;\n  canvas.height = height;\n  return canvas;\n}\n\nfunction createImage(_x) {\n  return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n  _createImage = _asyncToGenerator(function* (src) {\n    var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var image = document.createElement('img');\n\n    if (anonymousCrossOrigin) {\n      image.crossOrigin = 'Anonymous';\n    }\n\n    return new Promise((resolve, reject) => {\n      image.onload = () => {\n        resolve(image);\n      };\n\n      image.onerror = (_event, _source, _lineno, _colno, error) => {\n        reject(error);\n      };\n\n      image.src = src;\n    });\n  });\n  return _createImage.apply(this, arguments);\n}\n\nclass Document {\n  constructor(canvg) {\n    var {\n      rootEmSize = 12,\n      emSize = 12,\n      createCanvas = Document.createCanvas,\n      createImage = Document.createImage,\n      anonymousCrossOrigin\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.canvg = canvg;\n    this.definitions = {};\n    this.styles = {};\n    this.stylesSpecificity = {};\n    this.images = [];\n    this.fonts = [];\n    this.emSizeStack = [];\n    this.uniqueId = 0;\n    this.screen = canvg.screen;\n    this.rootEmSize = rootEmSize;\n    this.emSize = emSize;\n    this.createCanvas = createCanvas;\n    this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n    this.screen.wait(this.isImagesLoaded.bind(this));\n    this.screen.wait(this.isFontsLoaded.bind(this));\n  }\n\n  bindCreateImage(createImage, anonymousCrossOrigin) {\n    if (typeof anonymousCrossOrigin === 'boolean') {\n      return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n    }\n\n    return createImage;\n  }\n\n  get window() {\n    return this.screen.window;\n  }\n\n  get fetch() {\n    return this.screen.fetch;\n  }\n\n  get ctx() {\n    return this.screen.ctx;\n  }\n\n  get emSize() {\n    var {\n      emSizeStack\n    } = this;\n    return emSizeStack[emSizeStack.length - 1];\n  }\n\n  set emSize(value) {\n    var {\n      emSizeStack\n    } = this;\n    emSizeStack.push(value);\n  }\n\n  popEmSize() {\n    var {\n      emSizeStack\n    } = this;\n    emSizeStack.pop();\n  }\n\n  getUniqueId() {\n    return \"canvg\".concat(++this.uniqueId);\n  }\n\n  isImagesLoaded() {\n    return this.images.every(_ => _.loaded);\n  }\n\n  isFontsLoaded() {\n    return this.fonts.every(_ => _.loaded);\n  }\n\n  createDocumentElement(document) {\n    var documentElement = this.createElement(document.documentElement);\n    documentElement.root = true;\n    documentElement.addStylesFromStyleDefinition();\n    this.documentElement = documentElement;\n    return documentElement;\n  }\n\n  createElement(node) {\n    var elementType = node.nodeName.replace(/^[^:]+:/, '');\n    var ElementType = Document.elementTypes[elementType];\n\n    if (typeof ElementType !== 'undefined') {\n      return new ElementType(this, node);\n    }\n\n    return new UnknownElement(this, node);\n  }\n\n  createTextNode(node) {\n    return new TextNode(this, node);\n  }\n\n  setViewBox(config) {\n    this.screen.setViewBox(_objectSpread$1({\n      document: this\n    }, config));\n  }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n  /**\r\n   * Main constructor.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG Document.\r\n   * @param options - Rendering options.\r\n   */\n  constructor(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    this.parser = new Parser(options);\n    this.screen = new Screen(ctx, options);\n    this.options = options;\n    var document = new Document(this, options);\n    var documentElement = document.createDocumentElement(svg);\n    this.document = document;\n    this.documentElement = documentElement;\n  }\n  /**\r\n   * Create Canvg instance from SVG source string or URL.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string or URL.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  static from(ctx, svg) {\n    var _arguments = arguments;\n    return _asyncToGenerator(function* () {\n      var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n      var parser = new Parser(options);\n      var svgDocument = yield parser.parse(svg);\n      return new Canvg(ctx, svgDocument, options);\n    })();\n  }\n  /**\r\n   * Create Canvg instance from SVG source string.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  static fromString(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var parser = new Parser(options);\n    var svgDocument = parser.parseFromString(svg);\n    return new Canvg(ctx, svgDocument, options);\n  }\n  /**\r\n   * Create new Canvg instance with inherited options.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string or URL.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  fork(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n  }\n  /**\r\n   * Create new Canvg instance with inherited options.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  forkString(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n  }\n  /**\r\n   * Document is ready promise.\r\n   * @returns Ready promise.\r\n   */\n\n\n  ready() {\n    return this.screen.ready();\n  }\n  /**\r\n   * Document is ready value.\r\n   * @returns Is ready or not.\r\n   */\n\n\n  isReady() {\n    return this.screen.isReady();\n  }\n  /**\r\n   * Render only first frame, ignoring animations and mouse.\r\n   * @param options - Rendering options.\r\n   */\n\n\n  render() {\n    var _arguments2 = arguments,\n        _this = this;\n\n    return _asyncToGenerator(function* () {\n      var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n      _this.start(_objectSpread({\n        enableRedraw: true,\n        ignoreAnimation: true,\n        ignoreMouse: true\n      }, options));\n\n      yield _this.ready();\n\n      _this.stop();\n    })();\n  }\n  /**\r\n   * Start rendering.\r\n   * @param options - Render options.\r\n   */\n\n\n  start() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var {\n      documentElement,\n      screen,\n      options: baseOptions\n    } = this;\n    screen.start(documentElement, _objectSpread(_objectSpread({\n      enableRedraw: true\n    }, baseOptions), options));\n  }\n  /**\r\n   * Stop rendering.\r\n   */\n\n\n  stop() {\n    this.screen.stop();\n  }\n  /**\r\n   * Resize SVG to fit in given size.\r\n   * @param width\r\n   * @param height\r\n   * @param preserveAspectRatio\r\n   */\n\n\n  resize(width) {\n    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    this.documentElement.resize(width, height, preserveAspectRatio);\n  }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return slice(that, end - search.length, end) === search;\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  'test'.split(/(?:)/, -1).length !== 4 ||\n  'ab'.split(/(?:ab)*/).length !== 2 ||\n  '.'.split(/(.?)(.?)/).length !== 4 ||\n  // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n  '.'.split(/()()/).length > 1 ||\n  ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n    return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n  } : nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (!BUGGY) {\n        var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n        if (res.done) return res.value;\n      }\n\n      var C = speciesConstructor(rx, RegExp);\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n", "'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n", "'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\n  }\n});\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n", "import { SVGPathData } from \"./SVGPathData\";\nimport { SVGCommand } from \"./types\";\n\n// Encode SVG PathData\n// http://www.w3.org/TR/SVG/paths.html#PathDataBNF\n\n// Private consts : Char groups\nconst WSP = \" \";\n\nexport function encodeSVGPath(commands: SVGCommand | SVGCommand[]) {\n  let str = \"\";\n\n  if (!Array.isArray(commands)) {\n    commands = [commands];\n  }\n  for (let i = 0; i < commands.length; i++) {\n    const command = commands[i];\n    if (command.type === SVGPathData.CLOSE_PATH) {\n      str += \"z\";\n    } else if (command.type === SVGPathData.HORIZ_LINE_TO) {\n      str += (command.relative ? \"h\" : \"H\") +\n        command.x;\n    } else if (command.type === SVGPathData.VERT_LINE_TO) {\n      str += (command.relative ? \"v\" : \"V\") +\n        command.y;\n    } else if (command.type === SVGPathData.MOVE_TO) {\n      str += (command.relative ? \"m\" : \"M\") +\n        command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.LINE_TO) {\n      str += (command.relative ? \"l\" : \"L\") +\n        command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.CURVE_TO) {\n      str += (command.relative ? \"c\" : \"C\") +\n        command.x1 + WSP + command.y1 +\n        WSP + command.x2 + WSP + command.y2 +\n        WSP + command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.SMOOTH_CURVE_TO) {\n      str += (command.relative ? \"s\" : \"S\") +\n        command.x2 + WSP + command.y2 +\n        WSP + command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.QUAD_TO) {\n      str += (command.relative ? \"q\" : \"Q\") +\n        command.x1 + WSP + command.y1 +\n        WSP + command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.SMOOTH_QUAD_TO) {\n      str += (command.relative ? \"t\" : \"T\") +\n        command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.ARC) {\n      str += (command.relative ? \"a\" : \"A\") +\n        command.rX + WSP + command.rY +\n        WSP + command.xRot +\n        WSP + (+command.lArcFlag) + WSP + (+command.sweepFlag) +\n        WSP + command.x + WSP + command.y;\n    } else {\n      // Unknown command\n      throw new Error(\n        `Unexpected command type \"${ (command as any).type}\" at index ${i}.`);\n    }\n  }\n\n  return str;\n}\n", "import { SVGPathData } from \"./SVGPathData\";\nimport { CommandA, CommandC } from \"./types\";\n\nexport function rotate([x, y]: [number, number], rad: number) {\n  return [\n    x * Math.cos(rad) - y * Math.sin(rad),\n    x * Math.sin(rad) + y * Math.cos(rad),\n  ];\n}\n\nconst DEBUG_CHECK_NUMBERS = true;\nexport function assertNumbers(...numbers: number[]) {\n  if (DEBUG_CHECK_NUMBERS) {\n    for (let i = 0; i < numbers.length; i++) {\n      if (\"number\" !== typeof numbers[i]) {\n        throw new Error(\n          `assertNumbers arguments[${i}] is not a number. ${typeof numbers[i]} == typeof ${numbers[i]}`);\n      }\n    }\n  }\n  return true;\n}\n\nconst PI = Math.PI;\n\n/**\n * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n * Fixes rX and rY.\n * Ensures lArcFlag and sweepFlag are 0 or 1\n * Adds center coordinates: command.cX, command.cY (relative or absolute, depending on command.relative)\n * Adds start and end arc parameters (in degrees): command.phi1, command.phi2; phi1 < phi2 iff. c.sweepFlag == true\n */\nexport function annotateArcCommand(c: CommandA, x1: number, y1: number) {\n  c.lArcFlag = (0 === c.lArcFlag) ? 0 : 1;\n  c.sweepFlag = (0 === c.sweepFlag) ? 0 : 1;\n  // tslint:disable-next-line\n  let {rX, rY, x, y} = c;\n\n  rX = Math.abs(c.rX);\n  rY = Math.abs(c.rY);\n  const [x1_, y1_] = rotate([(x1 - x) / 2, (y1 - y) / 2], -c.xRot / 180 * PI);\n  const testValue = Math.pow(x1_, 2) / Math.pow(rX, 2) + Math.pow(y1_, 2) / Math.pow(rY, 2);\n\n  if (1 < testValue) {\n    rX *= Math.sqrt(testValue);\n    rY *= Math.sqrt(testValue);\n  }\n  c.rX = rX;\n  c.rY = rY;\n  const c_ScaleTemp = (Math.pow(rX, 2) * Math.pow(y1_, 2) + Math.pow(rY, 2) * Math.pow(x1_, 2));\n  const c_Scale = (c.lArcFlag !== c.sweepFlag ? 1 : -1) *\n    Math.sqrt(Math.max(0, (Math.pow(rX, 2) * Math.pow(rY, 2) - c_ScaleTemp) / c_ScaleTemp));\n  const cx_ = rX * y1_ / rY * c_Scale;\n  const cy_ = -rY * x1_ / rX * c_Scale;\n  const cRot = rotate([cx_, cy_], c.xRot / 180 * PI);\n\n  c.cX = cRot[0] + (x1 + x) / 2;\n  c.cY = cRot[1] + (y1 + y) / 2;\n  c.phi1 = Math.atan2((y1_ - cy_) / rY, (x1_ - cx_) / rX);\n  c.phi2 = Math.atan2((-y1_ - cy_) / rY, (-x1_ - cx_) / rX);\n  if (0 === c.sweepFlag && c.phi2 > c.phi1) {\n    c.phi2 -= 2 * PI;\n  }\n  if (1 === c.sweepFlag && c.phi2 < c.phi1) {\n    c.phi2 += 2 * PI;\n  }\n  c.phi1 *= 180 / PI;\n  c.phi2 *= 180 / PI;\n}\n\n/**\n * Solves a quadratic system of equations of the form\n *      a * x + b * y = c\n *      x² + y² = 1\n * This can be understood as the intersection of the unit circle with a line.\n *      => y = (c - a x) / b\n *      => x² + (c - a x)² / b² = 1\n *      => x² b² + c² - 2 c a x + a² x² = b²\n *      => (a² + b²) x² - 2 a c x + (c² - b²) = 0\n */\nexport function intersectionUnitCircleLine(a: number, b: number, c: number): [number, number][] {\n  assertNumbers(a, b, c);\n  // cf. pqFormula\n  const termSqr = a * a + b * b - c * c;\n\n  if (0 > termSqr) {\n    return [];\n  } else if (0 === termSqr) {\n    return [\n      [\n        (a * c) / (a * a + b * b),\n        (b * c) / (a * a + b * b)]];\n  }\n  const term = Math.sqrt(termSqr);\n\n  return [\n    [\n      (a * c + b * term) / (a * a + b * b),\n      (b * c - a * term) / (a * a + b * b)],\n    [\n      (a * c - b * term) / (a * a + b * b),\n      (b * c + a * term) / (a * a + b * b)]];\n\n}\n\nexport const DEG = Math.PI / 180;\n\nexport function lerp(a: number, b: number, t: number) {\n  return (1 - t) * a + t * b;\n}\n\nexport function arcAt(c: number, x1: number, x2: number, phiDeg: number) {\n  return c + Math.cos(phiDeg / 180 * PI) * x1 + Math.sin(phiDeg / 180 * PI) * x2;\n}\n\nexport function bezierRoot(x0: number, x1: number, x2: number, x3: number) {\n  const EPS = 1e-6;\n  const x01 = x1 - x0;\n  const x12 = x2 - x1;\n  const x23 = x3 - x2;\n  const a = 3 * x01 + 3 * x23 - 6 * x12;\n  const b = (x12 - x01) * 6;\n  const c = 3 * x01;\n  // solve a * t² + b * t + c = 0\n\n  if (Math.abs(a) < EPS) {\n    // equivalent to b * t + c =>\n    return [-c / b];\n  }\n  return pqFormula(b / a, c / a, EPS);\n\n}\n\nexport function bezierAt(x0: number, x1: number, x2: number, x3: number, t: number) {\n  // console.log(x0, y0, x1, y1, x2, y2, x3, y3, t)\n  const s = 1 - t;\n  const c0 = s * s * s;\n  const c1 = 3 * s * s * t;\n  const c2 = 3 * s * t * t;\n  const c3 = t * t * t;\n\n  return x0 * c0 + x1 * c1 + x2 * c2 + x3 * c3;\n}\n\nfunction pqFormula(p: number, q: number, PRECISION = 1e-6) {\n  // 4 times the discriminant:in\n  const discriminantX4 = p * p / 4 - q;\n\n  if (discriminantX4 < -PRECISION) {\n    return [];\n  } else if (discriminantX4 <= PRECISION) {\n    return [-p / 2];\n  }\n  const root = Math.sqrt(discriminantX4);\n\n  return [-(p / 2) - root, -(p / 2) + root];\n\n}\n\nexport function a2c(arc: CommandA, x0: number, y0: number): CommandC[] {\n  if (!arc.cX) {\n    annotateArcCommand(arc, x0, y0);\n  }\n\n  const phiMin = Math.min(arc.phi1!, arc.phi2!), phiMax = Math.max(arc.phi1!, arc.phi2!), deltaPhi = phiMax - phiMin;\n  const partCount = Math.ceil(deltaPhi / 90 );\n\n  const result: CommandC[] = new Array(partCount);\n  let prevX = x0, prevY = y0;\n  for (let i = 0; i < partCount; i++) {\n    const phiStart = lerp(arc.phi1!, arc.phi2!, i / partCount);\n    const phiEnd = lerp(arc.phi1!, arc.phi2!, (i + 1) / partCount);\n    const deltaPhi = phiEnd - phiStart;\n    const f = 4 / 3 * Math.tan(deltaPhi * DEG / 4);\n    // x1/y1, x2/y2 and x/y coordinates on the unit circle for phiStart/phiEnd\n    const [x1, y1] = [\n      Math.cos(phiStart * DEG) - f * Math.sin(phiStart * DEG),\n      Math.sin(phiStart * DEG) + f * Math.cos(phiStart * DEG)];\n    const [x, y] = [Math.cos(phiEnd * DEG), Math.sin(phiEnd * DEG)];\n    const [x2, y2] = [x + f * Math.sin(phiEnd * DEG), y - f * Math.cos(phiEnd * DEG)];\n    result[i] = {relative: arc.relative, type: SVGPathData.CURVE_TO } as any;\n    const transform = (x: number, y: number) => {\n      const [xTemp, yTemp] = rotate([x * arc.rX, y * arc.rY], arc.xRot);\n      return [arc.cX! + xTemp, arc.cY! + yTemp];\n    };\n    [result[i].x1, result[i].y1] = transform(x1, y1);\n    [result[i].x2, result[i].y2] = transform(x2, y2);\n    [result[i].x, result[i].y] = transform(x, y);\n    if (arc.relative) {\n      result[i].x1 -= prevX;\n      result[i].y1 -= prevY;\n      result[i].x2 -= prevX;\n      result[i].y2 -= prevY;\n      result[i].x -= prevX;\n      result[i].y -= prevY;\n    }\n    [prevX, prevY] = [result[i].x, result[i].y];\n  }\n  return result;\n}\n", "// Transform SVG PathData\n// http://www.w3.org/TR/SVG/paths.html#PathDataBNF\n\nimport { a2c, annotateArcCommand, arcAt, assertNumbers, bezierAt, bezierRoot,\n  intersectionUnitCircleLine } from \"./mathUtils\";\nimport { SVGPathData } from \"./SVGPathData\";\nimport { SVGCommand, TransformFunction } from \"./types\";\n\nexport namespace SVGPathDataTransformer {\n  // Predefined transforming functions\n  // Rounds commands values\n  export function ROUND(roundVal = 1e13) {\n    assertNumbers(roundVal);\n    function rf(val: number) { return Math.round(val * roundVal) / roundVal; }\n    return function round(command: any) {\n      if (\"undefined\" !== typeof command.x1) {\n        command.x1 = rf(command.x1);\n      }\n      if (\"undefined\" !== typeof command.y1) {\n        command.y1 = rf(command.y1);\n      }\n\n      if (\"undefined\" !== typeof command.x2) {\n        command.x2 = rf(command.x2);\n      }\n      if (\"undefined\" !== typeof command.y2) {\n        command.y2 = rf(command.y2);\n      }\n\n      if (\"undefined\" !== typeof command.x) {\n        command.x = rf(command.x);\n      }\n      if (\"undefined\" !== typeof command.y) {\n        command.y = rf(command.y);\n      }\n\n      if (\"undefined\" !== typeof command.rX) {\n        command.rX = rf(command.rX);\n      }\n      if (\"undefined\" !== typeof command.rY) {\n        command.rY = rf(command.rY);\n      }\n\n      return command;\n    };\n  }\n  // Relative to absolute commands\n  export function TO_ABS() {\n    return INFO((command, prevX, prevY) => {\n      if (command.relative) {\n        // x1/y1 values\n        if (\"undefined\" !== typeof command.x1) {\n          command.x1 += prevX;\n        }\n        if (\"undefined\" !== typeof command.y1) {\n          command.y1 += prevY;\n        }\n        // x2/y2 values\n        if (\"undefined\" !== typeof command.x2) {\n          command.x2 += prevX;\n        }\n        if (\"undefined\" !== typeof command.y2) {\n          command.y2 += prevY;\n        }\n        // Finally x/y values\n        if (\"undefined\" !== typeof command.x) {\n          command.x += prevX;\n        }\n        if (\"undefined\" !== typeof command.y) {\n          command.y += prevY;\n        }\n        command.relative = false;\n      }\n      return command;\n    });\n  }\n  // Absolute to relative commands\n  export function TO_REL() {\n    return INFO((command, prevX, prevY) => {\n      if (!command.relative) {\n        // x1/y1 values\n        if (\"undefined\" !== typeof command.x1) {\n          command.x1 -= prevX;\n        }\n        if (\"undefined\" !== typeof command.y1) {\n          command.y1 -= prevY;\n        }\n        // x2/y2 values\n        if (\"undefined\" !== typeof command.x2) {\n          command.x2 -= prevX;\n        }\n        if (\"undefined\" !== typeof command.y2) {\n          command.y2 -= prevY;\n        }\n        // Finally x/y values\n        if (\"undefined\" !== typeof command.x) {\n          command.x -= prevX;\n        }\n        if (\"undefined\" !== typeof command.y) {\n          command.y -= prevY;\n        }\n        command.relative = true;\n      }\n      return command;\n    });\n  }\n  // Convert H, V, Z and A with rX = 0 to L\n  export function NORMALIZE_HVZ(normalizeZ = true, normalizeH = true, normalizeV = true) {\n    return INFO((command, prevX, prevY, pathStartX, pathStartY) => {\n      if (isNaN(pathStartX) && !(command.type & SVGPathData.MOVE_TO)) {\n        throw new Error(\"path must start with moveto\");\n      }\n      if (normalizeH && command.type & SVGPathData.HORIZ_LINE_TO) {\n        command.type = SVGPathData.LINE_TO;\n        command.y = command.relative ? 0 : prevY;\n      }\n      if (normalizeV && command.type & SVGPathData.VERT_LINE_TO) {\n        command.type = SVGPathData.LINE_TO;\n        command.x = command.relative ? 0 : prevX;\n      }\n      if (normalizeZ && command.type & SVGPathData.CLOSE_PATH) {\n        command.type = SVGPathData.LINE_TO;\n        command.x = command.relative ? pathStartX - prevX : pathStartX;\n        command.y = command.relative ? pathStartY - prevY : pathStartY;\n      }\n      if (command.type & SVGPathData.ARC && (0 === command.rX || 0 === command.rY)) {\n        command.type = SVGPathData.LINE_TO;\n        delete command.rX;\n        delete command.rY;\n        delete command.xRot;\n        delete command.lArcFlag;\n        delete command.sweepFlag;\n      }\n      return command;\n    });\n  }\n  /*\n   * Transforms smooth curves and quads to normal curves and quads (SsTt to CcQq)\n   */\n  export function NORMALIZE_ST() {\n    let prevCurveC2X = NaN;\n    let prevCurveC2Y = NaN;\n    let prevQuadCX = NaN;\n    let prevQuadCY = NaN;\n\n    return INFO((command, prevX, prevY) => {\n      if (command.type & SVGPathData.SMOOTH_CURVE_TO) {\n        command.type = SVGPathData.CURVE_TO;\n        prevCurveC2X = isNaN(prevCurveC2X) ? prevX : prevCurveC2X;\n        prevCurveC2Y = isNaN(prevCurveC2Y) ? prevY : prevCurveC2Y;\n        command.x1 = command.relative ? prevX - prevCurveC2X : 2 * prevX - prevCurveC2X;\n        command.y1 = command.relative ? prevY - prevCurveC2Y : 2 * prevY - prevCurveC2Y;\n      }\n      if (command.type & SVGPathData.CURVE_TO) {\n        prevCurveC2X = command.relative ? prevX + command.x2 : command.x2;\n        prevCurveC2Y = command.relative ? prevY + command.y2 : command.y2;\n      } else {\n        prevCurveC2X = NaN;\n        prevCurveC2Y = NaN;\n      }\n      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        command.type = SVGPathData.QUAD_TO;\n        prevQuadCX = isNaN(prevQuadCX) ? prevX : prevQuadCX;\n        prevQuadCY = isNaN(prevQuadCY) ? prevY : prevQuadCY;\n        command.x1 = command.relative ? prevX - prevQuadCX : 2 * prevX - prevQuadCX;\n        command.y1 = command.relative ? prevY - prevQuadCY : 2 * prevY - prevQuadCY;\n      }\n      if (command.type & SVGPathData.QUAD_TO) {\n        prevQuadCX = command.relative ? prevX + command.x1 : command.x1;\n        prevQuadCY = command.relative ? prevY + command.y1 : command.y1;\n      } else {\n        prevQuadCX = NaN;\n        prevQuadCY = NaN;\n      }\n\n      return command;\n    });\n  }\n  /*\n   * A quadratic bézier curve can be represented by a cubic bézier curve which has\n   * the same end points as the quadratic and both control points in place of the\n   * quadratic\"s one.\n   *\n   * This transformer replaces QqTt commands with Cc commands respectively.\n   * This is useful for reading path data into a system which only has a\n   * representation for cubic curves.\n   */\n  export function QT_TO_C() {\n    let prevQuadX1 = NaN;\n    let prevQuadY1 = NaN;\n\n    return INFO((command, prevX, prevY) => {\n      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        command.type = SVGPathData.QUAD_TO;\n        prevQuadX1 = isNaN(prevQuadX1) ? prevX : prevQuadX1;\n        prevQuadY1 = isNaN(prevQuadY1) ? prevY : prevQuadY1;\n        command.x1 = command.relative ? prevX - prevQuadX1 : 2 * prevX - prevQuadX1;\n        command.y1 = command.relative ? prevY - prevQuadY1 : 2 * prevY - prevQuadY1;\n      }\n      if (command.type & SVGPathData.QUAD_TO) {\n        prevQuadX1 = command.relative ? prevX + command.x1 : command.x1;\n        prevQuadY1 = command.relative ? prevY + command.y1 : command.y1;\n        const x1 = command.x1;\n        const y1 = command.y1;\n\n        command.type = SVGPathData.CURVE_TO;\n        command.x1 = ((command.relative ? 0 : prevX) + x1 * 2) / 3;\n        command.y1 = ((command.relative ? 0 : prevY) + y1 * 2) / 3;\n        command.x2 = (command.x + x1 * 2) / 3;\n        command.y2 = (command.y + y1 * 2) / 3;\n      } else {\n        prevQuadX1 = NaN;\n        prevQuadY1 = NaN;\n      }\n\n      return command;\n    });\n  }\n  export function INFO(\n    f: (command: any, prevXAbs: number, prevYAbs: number,\n        pathStartXAbs: number, pathStartYAbs: number) => any | any[]) {\n    let prevXAbs = 0;\n    let prevYAbs = 0;\n    let pathStartXAbs = NaN;\n    let pathStartYAbs = NaN;\n\n    return function transform(command: any) {\n      if (isNaN(pathStartXAbs) && !(command.type & SVGPathData.MOVE_TO)) {\n        throw new Error(\"path must start with moveto\");\n      }\n\n      const result = f(command, prevXAbs, prevYAbs, pathStartXAbs, pathStartYAbs);\n\n      if (command.type & SVGPathData.CLOSE_PATH) {\n        prevXAbs = pathStartXAbs;\n        prevYAbs = pathStartYAbs;\n      }\n\n      if (\"undefined\" !== typeof command.x) {\n        prevXAbs = (command.relative ? prevXAbs + command.x : command.x);\n      }\n      if (\"undefined\" !== typeof command.y) {\n        prevYAbs = (command.relative ? prevYAbs + command.y : command.y);\n      }\n\n      if (command.type & SVGPathData.MOVE_TO) {\n        pathStartXAbs = prevXAbs;\n        pathStartYAbs = prevYAbs;\n      }\n\n      return result;\n    };\n  }\n  /*\n   * remove 0-length segments\n   */\n  export function SANITIZE(EPS = 0) {\n    assertNumbers(EPS);\n    let prevCurveC2X = NaN;\n    let prevCurveC2Y = NaN;\n    let prevQuadCX = NaN;\n    let prevQuadCY = NaN;\n\n    return INFO((command, prevX, prevY, pathStartX, pathStartY) => {\n      const abs = Math.abs;\n      let skip = false;\n      let x1Rel = 0;\n      let y1Rel = 0;\n\n      if (command.type & SVGPathData.SMOOTH_CURVE_TO) {\n        x1Rel = isNaN(prevCurveC2X) ? 0 : prevX - prevCurveC2X;\n        y1Rel = isNaN(prevCurveC2Y) ? 0 : prevY - prevCurveC2Y;\n      }\n      if (command.type & (SVGPathData.CURVE_TO | SVGPathData.SMOOTH_CURVE_TO)) {\n        prevCurveC2X = command.relative ? prevX + command.x2 : command.x2;\n        prevCurveC2Y = command.relative ? prevY + command.y2 : command.y2;\n      } else {\n        prevCurveC2X = NaN;\n        prevCurveC2Y = NaN;\n      }\n      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        prevQuadCX = isNaN(prevQuadCX) ? prevX : 2 * prevX - prevQuadCX;\n        prevQuadCY = isNaN(prevQuadCY) ? prevY : 2 * prevY - prevQuadCY;\n      } else if (command.type & SVGPathData.QUAD_TO) {\n        prevQuadCX = command.relative ? prevX + command.x1 : command.x1;\n        prevQuadCY = command.relative ? prevY + command.y1 : command.y2;\n      } else {\n        prevQuadCX = NaN;\n        prevQuadCY = NaN;\n      }\n\n      if (command.type & SVGPathData.LINE_COMMANDS ||\n        command.type & SVGPathData.ARC && (0 === command.rX || 0 === command.rY || !command.lArcFlag) ||\n        command.type & SVGPathData.CURVE_TO || command.type & SVGPathData.SMOOTH_CURVE_TO ||\n        command.type & SVGPathData.QUAD_TO || command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        const xRel = \"undefined\" === typeof command.x ? 0 :\n          (command.relative ? command.x : command.x - prevX);\n        const yRel = \"undefined\" === typeof command.y ? 0 :\n          (command.relative ? command.y : command.y - prevY);\n\n        x1Rel = !isNaN(prevQuadCX) ? prevQuadCX - prevX :\n          \"undefined\" === typeof command.x1 ? x1Rel :\n            command.relative ? command.x :\n              command.x1 - prevX;\n        y1Rel = !isNaN(prevQuadCY) ? prevQuadCY - prevY :\n          \"undefined\" === typeof command.y1 ? y1Rel :\n            command.relative ? command.y :\n              command.y1 - prevY;\n\n        const x2Rel = \"undefined\" === typeof command.x2 ? 0 :\n          (command.relative ? command.x : command.x2 - prevX);\n        const y2Rel = \"undefined\" === typeof command.y2 ? 0 :\n          (command.relative ? command.y : command.y2 - prevY);\n\n        if (abs(xRel) <= EPS && abs(yRel) <= EPS &&\n          abs(x1Rel) <= EPS && abs(y1Rel) <= EPS &&\n          abs(x2Rel) <= EPS && abs(y2Rel) <= EPS) {\n          skip = true;\n        }\n      }\n\n      if (command.type & SVGPathData.CLOSE_PATH) {\n        if (abs(prevX - pathStartX) <= EPS && abs(prevY - pathStartY) <= EPS) {\n          skip = true;\n        }\n      }\n\n      return skip ? [] : command;\n    });\n  }\n  // SVG Transforms : http://www.w3.org/TR/SVGTiny12/coords.html#TransformList\n  // Matrix : http://apike.ca/prog_svg_transform.html\n  // a c e\n  // b d f\n  export function MATRIX(a: number, b: number, c: number, d: number, e: number, f: number) {\n    assertNumbers(a, b, c, d, e, f);\n\n    return INFO((command, prevX, prevY, pathStartX) => {\n      const origX1 = command.x1;\n      const origX2 = command.x2;\n      // if isNaN(pathStartX), then this is the first command, which is ALWAYS an\n      // absolute MOVE_TO, regardless what the relative flag says\n      const comRel = command.relative && !isNaN(pathStartX);\n      const x = \"undefined\" !== typeof command.x ? command.x : (comRel ? 0 : prevX);\n      const y = \"undefined\" !== typeof command.y ? command.y : (comRel ? 0 : prevY);\n\n      if (command.type & SVGPathData.HORIZ_LINE_TO && 0 !== b) {\n        command.type = SVGPathData.LINE_TO;\n        command.y = command.relative ? 0 : prevY;\n      }\n      if (command.type & SVGPathData.VERT_LINE_TO && 0 !== c) {\n        command.type = SVGPathData.LINE_TO;\n        command.x = command.relative ? 0 : prevX;\n      }\n\n      if (\"undefined\" !== typeof command.x) {\n        command.x = (command.x * a) + (y * c) + (comRel ? 0 : e);\n      }\n      if (\"undefined\" !== typeof command.y) {\n        command.y = (x * b) + command.y * d + (comRel ? 0 : f);\n      }\n      if (\"undefined\" !== typeof command.x1) {\n        command.x1 = command.x1 * a + command.y1 * c + (comRel ? 0 : e);\n      }\n      if (\"undefined\" !== typeof command.y1) {\n        command.y1 = origX1 * b + command.y1 * d + (comRel ? 0 : f);\n      }\n      if (\"undefined\" !== typeof command.x2) {\n        command.x2 = command.x2 * a + command.y2 * c + (comRel ? 0 : e);\n      }\n      if (\"undefined\" !== typeof command.y2) {\n        command.y2 = origX2 * b + command.y2 * d + (comRel ? 0 : f);\n      }\n      function sqr(x: number) { return x * x; }\n      const det = a * d - b * c;\n\n      if (\"undefined\" !== typeof command.xRot) {\n        // Skip if this is a pure translation\n        if (1 !== a || 0 !== b || 0 !== c || 1 !== d) {\n          // Special case for singular matrix\n          if (0 === det) {\n            // In the singular case, the arc is compressed to a line. The actual geometric image of the original\n            // curve under this transform possibly extends beyond the starting and/or ending points of the segment, but\n            // for simplicity we ignore this detail and just replace this command with a single line segment.\n            delete command.rX;\n            delete command.rY;\n            delete command.xRot;\n            delete command.lArcFlag;\n            delete command.sweepFlag;\n            command.type = SVGPathData.LINE_TO;\n          } else {\n            // Convert to radians\n            const xRot = command.xRot * Math.PI / 180;\n\n            // Convert rotated ellipse to general conic form\n            // x0^2/rX^2 + y0^2/rY^2 - 1 = 0\n            // x0 = x*cos(xRot) + y*sin(xRot)\n            // y0 = -x*sin(xRot) + y*cos(xRot)\n            // --> A*x^2 + B*x*y + C*y^2 - 1 = 0, where\n            const sinRot = Math.sin(xRot);\n            const cosRot = Math.cos(xRot);\n            const xCurve = 1 / sqr(command.rX);\n            const yCurve = 1 / sqr(command.rY);\n            const A = sqr(cosRot) * xCurve + sqr(sinRot) * yCurve;\n            const B = 2 * sinRot * cosRot * (xCurve - yCurve);\n            const C = sqr(sinRot) * xCurve + sqr(cosRot) * yCurve;\n\n            // Apply matrix to A*x^2 + B*x*y + C*y^2 - 1 = 0\n            // x1 = a*x + c*y\n            // y1 = b*x + d*y\n            //      (we can ignore e and f, since pure translations don\"t affect the shape of the ellipse)\n            // --> A1*x1^2 + B1*x1*y1 + C1*y1^2 - det^2 = 0, where\n            const A1 = A * d * d - B * b * d + C * b * b;\n            const B1 = B * (a * d + b * c) - 2 * (A * c * d + C * a * b);\n            const C1 = A * c * c - B * a * c + C * a * a;\n\n            // Unapply newXRot to get back to axis-aligned ellipse equation\n            // x1 = x2*cos(newXRot) - y2*sin(newXRot)\n            // y1 = x2*sin(newXRot) + y2*cos(newXRot)\n            // A1*x1^2 + B1*x1*y1 + C1*y1^2 - det^2 =\n            //   x2^2*(A1*cos(newXRot)^2 + B1*sin(newXRot)*cos(newXRot) + C1*sin(newXRot)^2)\n            //   + x2*y2*(2*(C1 - A1)*sin(newXRot)*cos(newXRot) + B1*(cos(newXRot)^2 - sin(newXRot)^2))\n            //   + y2^2*(A1*sin(newXRot)^2 - B1*sin(newXRot)*cos(newXRot) + C1*cos(newXRot)^2)\n            //   (which must have the same zeroes as)\n            // x2^2/newRX^2 + y2^2/newRY^2 - 1\n            //   (so we have)\n            // 2*(C1 - A1)*sin(newXRot)*cos(newXRot) + B1*(cos(newXRot)^2 - sin(newXRot)^2) = 0\n            // (A1 - C1)*sin(2*newXRot) = B1*cos(2*newXRot)\n            // 2*newXRot = atan2(B1, A1 - C1)\n            const newXRot = ((Math.atan2(B1, A1 - C1) + Math.PI) % Math.PI) / 2;\n            // For any integer n, (atan2(B1, A1 - C1) + n*pi)/2 is a solution to the above; incrementing n just swaps\n            // the x and y radii computed below (since that\"s what rotating an ellipse by pi/2 does).  Choosing the\n            // rotation between 0 and pi/2 eliminates the ambiguity and leads to more predictable output.\n\n            // Finally, we get newRX and newRY from the same-zeroes relationship that gave us newXRot\n            const newSinRot = Math.sin(newXRot);\n            const newCosRot = Math.cos(newXRot);\n\n            command.rX = Math.abs(det) /\n              Math.sqrt(A1 * sqr(newCosRot) + B1 * newSinRot * newCosRot + C1 * sqr(newSinRot));\n            command.rY = Math.abs(det) /\n              Math.sqrt(A1 * sqr(newSinRot) - B1 * newSinRot * newCosRot + C1 * sqr(newCosRot));\n            command.xRot = newXRot * 180 / Math.PI;\n          }\n        }\n      }\n      // sweepFlag needs to be inverted when mirroring shapes\n      // see http://www.itk.ilstu.edu/faculty/javila/SVG/SVG_drawing1/elliptical_curve.htm\n      // m 65,10 a 50,25 0 1 0 50,25\n      // M 65,60 A 50,25 0 1 1 115,35\n      if (\"undefined\" !== typeof command.sweepFlag && 0 > det) {\n        command.sweepFlag = +!command.sweepFlag;\n      }\n      return command;\n    });\n  }\n  export function ROTATE(a: number, x = 0, y = 0) {\n    assertNumbers(a, x, y);\n    const sin = Math.sin(a);\n    const cos = Math.cos(a);\n\n    return MATRIX(cos, sin, -sin, cos, x - x * cos + y * sin, y - x * sin - y * cos);\n  }\n  export function TRANSLATE(dX: number, dY = 0) {\n    assertNumbers(dX, dY);\n    return MATRIX(1, 0, 0, 1, dX, dY);\n  }\n  export function SCALE(dX: number, dY = dX) {\n    assertNumbers(dX, dY);\n    return MATRIX(dX, 0, 0, dY, 0, 0);\n  }\n  export function SKEW_X(a: number) {\n    assertNumbers(a);\n    return MATRIX(1, 0, Math.atan(a), 1, 0, 0);\n  }\n  export function SKEW_Y(a: number) {\n    assertNumbers(a);\n    return MATRIX(1, Math.atan(a), 0, 1, 0, 0);\n  }\n  export function X_AXIS_SYMMETRY(xOffset = 0) {\n    assertNumbers(xOffset);\n    return MATRIX(-1, 0, 0, 1, xOffset, 0);\n  }\n  export function Y_AXIS_SYMMETRY(yOffset = 0) {\n    assertNumbers(yOffset);\n    return MATRIX(1, 0, 0, -1, 0, yOffset);\n  }\n  // Convert arc commands to curve commands\n  export function A_TO_C() {\n    return INFO((command, prevX, prevY) => {\n      if (SVGPathData.ARC === command.type) {\n        return a2c(command, command.relative ? 0 : prevX, command.relative ? 0 : prevY);\n      }\n      return command;\n    });\n  }\n  // @see annotateArcCommand\n  export function ANNOTATE_ARCS() {\n    return INFO((c, x1, y1) => {\n      if (c.relative) {\n        x1 = 0;\n        y1 = 0;\n      }\n      if (SVGPathData.ARC === c.type) {\n        annotateArcCommand(c, x1, y1);\n      }\n      return c;\n    });\n  }\n  export function CLONE() {\n    return (c: SVGCommand) => {\n      const result = {} as SVGCommand;\n      // tslint:disable-next-line\n      for (const key in c) {\n        result[key as keyof SVGCommand] = c[key as keyof SVGCommand];\n      }\n      return result;\n    };\n  }\n  // @see annotateArcCommand\n  export function CALCULATE_BOUNDS() {\n    const clone = CLONE();\n    const toAbs = TO_ABS();\n    const qtToC = QT_TO_C();\n    const normST = NORMALIZE_ST();\n    const f: TransformFunction & {minX: number, maxX: number, minY: number, maxY: number} =\n        INFO((command, prevXAbs, prevYAbs) => {\n      const c = normST(qtToC(toAbs(clone(command))));\n      function fixX(absX: number) {\n        if (absX > f.maxX) { f.maxX = absX; }\n        if (absX < f.minX) { f.minX = absX; }\n      }\n      function fixY(absY: number) {\n        if (absY > f.maxY) { f.maxY = absY; }\n        if (absY < f.minY) { f.minY = absY; }\n      }\n      if (c.type & SVGPathData.DRAWING_COMMANDS) {\n        fixX(prevXAbs);\n        fixY(prevYAbs);\n      }\n      if (c.type & SVGPathData.HORIZ_LINE_TO) {\n        fixX(c.x);\n      }\n      if (c.type & SVGPathData.VERT_LINE_TO) {\n        fixY(c.y);\n      }\n      if (c.type & SVGPathData.LINE_TO) {\n        fixX(c.x);\n        fixY(c.y);\n      }\n      if (c.type & SVGPathData.CURVE_TO) {\n        // add start and end points\n        fixX(c.x);\n        fixY(c.y);\n        const xDerivRoots = bezierRoot(prevXAbs, c.x1, c.x2, c.x);\n\n        for (const derivRoot of xDerivRoots) {\n          if (0 < derivRoot && 1 > derivRoot) {\n            fixX(bezierAt(prevXAbs, c.x1, c.x2, c.x, derivRoot));\n          }\n        }\n        const yDerivRoots = bezierRoot(prevYAbs, c.y1, c.y2, c.y);\n\n        for (const derivRoot of yDerivRoots) {\n          if (0 < derivRoot && 1 > derivRoot) {\n            fixY(bezierAt(prevYAbs, c.y1, c.y2, c.y, derivRoot));\n          }\n        }\n      }\n      if (c.type & SVGPathData.ARC) {\n        // add start and end points\n        fixX(c.x);\n        fixY(c.y);\n        annotateArcCommand(c, prevXAbs, prevYAbs);\n        // p = cos(phi) * xv + sin(phi) * yv\n        // dp = -sin(phi) * xv + cos(phi) * yv = 0\n        const xRotRad = c.xRot / 180 * Math.PI;\n        // points on ellipse for phi = 0° and phi = 90°\n        const x0 = Math.cos(xRotRad) * c.rX;\n        const y0 = Math.sin(xRotRad) * c.rX;\n        const x90 = -Math.sin(xRotRad) * c.rY;\n        const y90 = Math.cos(xRotRad) * c.rY;\n\n        // annotateArcCommand returns phi1 and phi2 such that -180° < phi1 < 180° and phi2 is smaller or greater\n        // depending on the sweep flag. Calculate phiMin, phiMax such that -180° < phiMin < 180° and phiMin < phiMax\n        const [phiMin, phiMax] = c.phi1 < c.phi2 ?\n          [c.phi1, c.phi2] :\n          (-180 > c.phi2 ? [c.phi2 + 360, c.phi1 + 360] : [c.phi2, c.phi1]);\n        const normalizeXiEta = ([xi, eta]: [number, number]) => {\n          const phiRad = Math.atan2(eta, xi);\n          const phi = phiRad * 180 / Math.PI;\n\n          return phi < phiMin ? phi + 360 : phi;\n        };\n        // xi = cos(phi), eta = sin(phi)\n\n        const xDerivRoots = intersectionUnitCircleLine(x90, -x0, 0).map(normalizeXiEta);\n        for (const derivRoot of xDerivRoots) {\n          if (derivRoot > phiMin && derivRoot < phiMax) {\n            fixX(arcAt(c.cX, x0, x90, derivRoot));\n          }\n        }\n\n        const yDerivRoots = intersectionUnitCircleLine(y90, -y0, 0).map(normalizeXiEta);\n        for (const derivRoot of yDerivRoots) {\n          if (derivRoot > phiMin && derivRoot < phiMax) {\n            fixY(arcAt(c.cY, y0, y90, derivRoot));\n          }\n        }\n      }\n      return command;\n    }) as any;\n\n    f.minX = Infinity;\n    f.maxX = -Infinity;\n    f.minY = Infinity;\n    f.maxY = -Infinity;\n    return f;\n  }\n}\n", "import { SVGPathDataTransformer } from \"./SVGPathDataTransformer\";\nimport { TransformFunction } from \"./types\";\n\nexport abstract class TransformableSVG {\n  round(x?: number) {\n    return this.transform(SVGPathDataTransformer.ROUND(x));\n  }\n\n  toAbs() {\n    return this.transform(SVGPathDataTransformer.TO_ABS());\n  }\n\n  toRel() {\n    return this.transform(SVGPathDataTransformer.TO_REL());\n  }\n\n  normalizeHVZ(a?: boolean, b?: boolean, c?: boolean) {\n    return this.transform(SVGPathDataTransformer.NORMALIZE_HVZ(a, b, c));\n  }\n\n  normalizeST() {\n    return this.transform(SVGPathDataTransformer.NORMALIZE_ST());\n  }\n\n  qtToC() {\n    return this.transform(SVGPathDataTransformer.QT_TO_C());\n  }\n\n  aToC() {\n    return this.transform(SVGPathDataTransformer.A_TO_C());\n  }\n\n  sanitize(eps?: number) {\n    return this.transform(SVGPathDataTransformer.SANITIZE(eps));\n  }\n\n  translate(x: number, y?: number) {\n    return this.transform(SVGPathDataTransformer.TRANSLATE(x, y));\n  }\n\n  scale(x: number, y?: number) {\n    return this.transform(SVGPathDataTransformer.SCALE(x, y));\n  }\n\n  rotate(a: number, x?: number, y?: number) {\n    return this.transform(SVGPathDataTransformer.ROTATE(a, x, y));\n  }\n\n  matrix(a: number, b: number, c: number, d: number, e: number, f: number) {\n    return this.transform(SVGPathDataTransformer.MATRIX(a, b, c, d, e, f));\n  }\n\n  skewX(a: number) {\n    return this.transform(SVGPathDataTransformer.SKEW_X(a));\n  }\n\n  skewY(a: number) {\n    return this.transform(SVGPathDataTransformer.SKEW_Y(a));\n  }\n\n  xSymmetry(xOffset?: number) {\n    return this.transform(SVGPathDataTransformer.X_AXIS_SYMMETRY(xOffset));\n  }\n\n  ySymmetry(yOffset?: number) {\n    return this.transform(SVGPathDataTransformer.Y_AXIS_SYMMETRY(yOffset));\n  }\n\n  annotateArcs() {\n    return this.transform(SVGPathDataTransformer.ANNOTATE_ARCS());\n  }\n\n  abstract transform(transformFunction: TransformFunction): this;\n}\n", "// Parse SVG PathData\n// http://www.w3.org/TR/SVG/paths.html#PathDataBNF\nimport { COMMAND_ARG_COUNTS, SVGPathData } from \"./SVGPathData\";\nimport { TransformableSVG } from \"./TransformableSVG\";\nimport { SVGCommand, TransformFunction } from \"./types\";\n// Private consts : Char groups\nconst isWhiteSpace = (c: string) =>\n  \" \" === c || \"\\t\" === c || \"\\r\" === c || \"\\n\" === c;\nconst isDigit = (c: string) =>\n  \"0\".charCodeAt(0) <= c.charCodeAt(0) && c.charCodeAt(0) <= \"9\".charCodeAt(0);\nconst COMMANDS = \"mMzZlLhHvVcCsSqQtTaA\";\n\nexport class SVGPathDataParser extends TransformableSVG {\n  private curNumber: string = \"\";\n  private curCommandType: SVGCommand[\"type\"] | -1 = -1;\n  private curCommandRelative = false;\n  private canParseCommandOrComma = true;\n  private curNumberHasExp = false;\n  private curNumberHasExpDigits = false;\n  private curNumberHasDecimal = false;\n  private curArgs: number[] = [];\n\n  constructor() {\n    super();\n  }\n\n  finish(commands: SVGCommand[] = []) {\n    this.parse(\" \", commands);\n    // Adding residual command\n    if (0 !== this.curArgs.length || !this.canParseCommandOrComma) {\n      throw new SyntaxError(\"Unterminated command at the path end.\");\n    }\n    return commands;\n  }\n\n  parse(str: string, commands: SVGCommand[] = []) {\n    const finishCommand = (command: SVGCommand) => {\n      commands.push(command);\n      this.curArgs.length = 0;\n      this.canParseCommandOrComma = true;\n    };\n\n    for (let i = 0; i < str.length; i++) {\n      const c = str[i];\n      // White spaces parsing\n      const isAArcFlag = this.curCommandType === SVGPathData.ARC &&\n        (this.curArgs.length === 3 || this.curArgs.length === 4) &&\n        this.curNumber.length === 1 &&\n        (this.curNumber === \"0\" || this.curNumber === \"1\");\n      const isEndingDigit = isDigit(c) && (\n        (this.curNumber === \"0\" && c === \"0\") ||\n        isAArcFlag\n      );\n\n      if (\n        isDigit(c) &&\n        !isEndingDigit\n      ) {\n        this.curNumber += c;\n        this.curNumberHasExpDigits = this.curNumberHasExp;\n        continue;\n      }\n      if (\"e\" === c || \"E\" === c) {\n        this.curNumber += c;\n        this.curNumberHasExp = true;\n        continue;\n      }\n      if (\n        (\"-\" === c || \"+\" === c) &&\n        this.curNumberHasExp &&\n        !this.curNumberHasExpDigits\n      ) {\n        this.curNumber += c;\n        continue;\n      }\n      // if we already have a \".\", it means we are starting a new number\n      if (\".\" === c && !this.curNumberHasExp && !this.curNumberHasDecimal && !isAArcFlag) {\n        this.curNumber += c;\n        this.curNumberHasDecimal = true;\n        continue;\n      }\n\n      // New number\n      if (this.curNumber && -1 !== this.curCommandType) {\n        const val = Number(this.curNumber);\n        if (isNaN(val)) {\n          throw new SyntaxError(`Invalid number ending at ${i}`);\n        }\n        if (this.curCommandType === SVGPathData.ARC) {\n          if (0 === this.curArgs.length || 1 === this.curArgs.length) {\n            if (0 > val) {\n              throw new SyntaxError(\n                `Expected positive number, got \"${val}\" at index \"${i}\"`,\n              );\n            }\n          } else if (3 === this.curArgs.length || 4 === this.curArgs.length) {\n            if (\"0\" !== this.curNumber && \"1\" !== this.curNumber) {\n              throw new SyntaxError(\n                `Expected a flag, got \"${this.curNumber}\" at index \"${i}\"`,\n              );\n            }\n          }\n        }\n        this.curArgs.push(val);\n        if (this.curArgs.length === COMMAND_ARG_COUNTS[this.curCommandType]) {\n          if (SVGPathData.HORIZ_LINE_TO === this.curCommandType) {\n            finishCommand({\n              type: SVGPathData.HORIZ_LINE_TO,\n              relative: this.curCommandRelative,\n              x: val,\n            });\n          } else if (SVGPathData.VERT_LINE_TO === this.curCommandType) {\n            finishCommand({\n              type: SVGPathData.VERT_LINE_TO,\n              relative: this.curCommandRelative,\n              y: val,\n            });\n            // Move to / line to / smooth quadratic curve to commands (x, y)\n          } else if (\n            this.curCommandType === SVGPathData.MOVE_TO ||\n            this.curCommandType === SVGPathData.LINE_TO ||\n            this.curCommandType === SVGPathData.SMOOTH_QUAD_TO\n          ) {\n            finishCommand({\n              type: this.curCommandType,\n              relative: this.curCommandRelative,\n              x: this.curArgs[0],\n              y: this.curArgs[1],\n            } as SVGCommand);\n            // Switch to line to state\n            if (SVGPathData.MOVE_TO === this.curCommandType) {\n              this.curCommandType = SVGPathData.LINE_TO;\n            }\n          } else if (this.curCommandType === SVGPathData.CURVE_TO) {\n            finishCommand({\n              type: SVGPathData.CURVE_TO,\n              relative: this.curCommandRelative,\n              x1: this.curArgs[0],\n              y1: this.curArgs[1],\n              x2: this.curArgs[2],\n              y2: this.curArgs[3],\n              x: this.curArgs[4],\n              y: this.curArgs[5],\n            });\n          } else if (this.curCommandType === SVGPathData.SMOOTH_CURVE_TO) {\n            finishCommand({\n              type: SVGPathData.SMOOTH_CURVE_TO,\n              relative: this.curCommandRelative,\n              x2: this.curArgs[0],\n              y2: this.curArgs[1],\n              x: this.curArgs[2],\n              y: this.curArgs[3],\n            });\n          } else if (this.curCommandType === SVGPathData.QUAD_TO) {\n            finishCommand({\n              type: SVGPathData.QUAD_TO,\n              relative: this.curCommandRelative,\n              x1: this.curArgs[0],\n              y1: this.curArgs[1],\n              x: this.curArgs[2],\n              y: this.curArgs[3],\n            });\n          } else if (this.curCommandType === SVGPathData.ARC) {\n            finishCommand({\n              type: SVGPathData.ARC,\n              relative: this.curCommandRelative,\n              rX: this.curArgs[0],\n              rY: this.curArgs[1],\n              xRot: this.curArgs[2],\n              lArcFlag: this.curArgs[3] as 0 | 1,\n              sweepFlag: this.curArgs[4] as 0 | 1,\n              x: this.curArgs[5],\n              y: this.curArgs[6],\n            });\n          }\n        }\n        this.curNumber = \"\";\n        this.curNumberHasExpDigits = false;\n        this.curNumberHasExp = false;\n        this.curNumberHasDecimal = false;\n        this.canParseCommandOrComma = true;\n      }\n      // Continue if a white space or a comma was detected\n      if (isWhiteSpace(c)) {\n        continue;\n      }\n      if (\",\" === c && this.canParseCommandOrComma) {\n        // L 0,0, H is not valid:\n        this.canParseCommandOrComma = false;\n        continue;\n      }\n      // if a sign is detected, then parse the new number\n      if (\"+\" === c || \"-\" === c || \".\" === c) {\n        this.curNumber = c;\n        this.curNumberHasDecimal = \".\" === c;\n        continue;\n      }\n      // if a 0 is detected, then parse the new number\n      if (isEndingDigit) {\n        this.curNumber = c;\n        this.curNumberHasDecimal = false;\n        continue;\n      }\n\n      // Adding residual command\n      if (0 !== this.curArgs.length) {\n        throw new SyntaxError(`Unterminated command at index ${i}.`);\n      }\n      if (!this.canParseCommandOrComma) {\n        throw new SyntaxError(\n          `Unexpected character \"${c}\" at index ${i}. Command cannot follow comma`,\n        );\n      }\n      this.canParseCommandOrComma = false;\n      // Detecting the next command\n      if (\"z\" === c || \"Z\" === c) {\n        commands.push({\n          type: SVGPathData.CLOSE_PATH,\n        });\n        this.canParseCommandOrComma = true;\n        this.curCommandType = -1;\n        continue;\n        // Horizontal move to command\n      } else if (\"h\" === c || \"H\" === c) {\n        this.curCommandType = SVGPathData.HORIZ_LINE_TO;\n        this.curCommandRelative = \"h\" === c;\n        // Vertical move to command\n      } else if (\"v\" === c || \"V\" === c) {\n        this.curCommandType = SVGPathData.VERT_LINE_TO;\n        this.curCommandRelative = \"v\" === c;\n        // Move to command\n      } else if (\"m\" === c || \"M\" === c) {\n        this.curCommandType = SVGPathData.MOVE_TO;\n        this.curCommandRelative = \"m\" === c;\n        // Line to command\n      } else if (\"l\" === c || \"L\" === c) {\n        this.curCommandType = SVGPathData.LINE_TO;\n        this.curCommandRelative = \"l\" === c;\n        // Curve to command\n      } else if (\"c\" === c || \"C\" === c) {\n        this.curCommandType = SVGPathData.CURVE_TO;\n        this.curCommandRelative = \"c\" === c;\n        // Smooth curve to command\n      } else if (\"s\" === c || \"S\" === c) {\n        this.curCommandType = SVGPathData.SMOOTH_CURVE_TO;\n        this.curCommandRelative = \"s\" === c;\n        // Quadratic bezier curve to command\n      } else if (\"q\" === c || \"Q\" === c) {\n        this.curCommandType = SVGPathData.QUAD_TO;\n        this.curCommandRelative = \"q\" === c;\n        // Smooth quadratic bezier curve to command\n      } else if (\"t\" === c || \"T\" === c) {\n        this.curCommandType = SVGPathData.SMOOTH_QUAD_TO;\n        this.curCommandRelative = \"t\" === c;\n        // Elliptic arc command\n      } else if (\"a\" === c || \"A\" === c) {\n        this.curCommandType = SVGPathData.ARC;\n        this.curCommandRelative = \"a\" === c;\n      } else {\n        throw new SyntaxError(`Unexpected character \"${c}\" at index ${i}.`);\n      }\n    }\n    return commands;\n  }\n  /**\n   * Return a wrapper around this parser which applies the transformation on parsed commands.\n   */\n  transform(transform: TransformFunction) {\n    const result = Object.create(this, {\n      parse: {\n        value(chunk: string, commands: SVGCommand[] = []) {\n          const parsedCommands = Object.getPrototypeOf(this).parse.call(\n            this,\n            chunk,\n          );\n          for (const c of parsedCommands) {\n            const cT = transform(c);\n            if (Array.isArray(cT)) {\n              commands.push(...cT);\n            } else {\n              commands.push(cT);\n            }\n          }\n          return commands;\n        },\n      },\n    });\n    return result as this;\n  }\n}\n", "import { encodeSVGPath } from \"./SVGPathDataEncoder\";\nimport { SVGPathDataParser } from \"./SVGPathDataParser\";\nimport { SVGPathDataTransformer } from \"./SVGPathDataTransformer\";\nimport { TransformableSVG } from \"./TransformableSVG\";\nimport { SVGCommand } from \"./types\";\n\nexport class SVGPathData extends TransformableSVG {\n  commands: SVGCommand[];\n  constructor(content: string | SVGCommand[]) {\n    super();\n    if (\"string\" === typeof content) {\n      this.commands = SVGPathData.parse(content);\n    } else {\n      this.commands = content;\n    }\n  }\n\n  encode() {\n    return SVGPathData.encode(this.commands);\n  }\n\n  getBounds() {\n    const boundsTransform = SVGPathDataTransformer.CALCULATE_BOUNDS();\n\n    this.transform(boundsTransform);\n    return boundsTransform;\n  }\n\n  transform(\n    transformFunction: (input: SVGCommand) => SVGCommand | SVGCommand[],\n  ) {\n    const newCommands = [];\n\n    for (const command of this.commands) {\n      const transformedCommand = transformFunction(command);\n\n      if (Array.isArray(transformedCommand)) {\n        newCommands.push(...transformedCommand);\n      } else {\n        newCommands.push(transformedCommand);\n      }\n    }\n    this.commands = newCommands;\n    return this;\n  }\n\n  static encode(commands: SVGCommand[]) {\n    return encodeSVGPath(commands);\n      }\n\n  static parse(path: string) {\n    const parser = new SVGPathDataParser();\n    const commands: SVGCommand[] = [];\n    parser.parse(path, commands);\n    parser.finish(commands);\n    return commands;\n  }\n\n  static readonly CLOSE_PATH: 1 = 1;\n  static readonly MOVE_TO: 2 = 2;\n  static readonly HORIZ_LINE_TO: 4 = 4;\n  static readonly VERT_LINE_TO: 8 = 8;\n  static readonly LINE_TO: 16 = 16;\n  static readonly CURVE_TO: 32 = 32;\n  static readonly SMOOTH_CURVE_TO: 64 = 64;\n  static readonly QUAD_TO: 128 = 128;\n  static readonly SMOOTH_QUAD_TO: 256 = 256;\n  static readonly ARC: 512 = 512;\n  static readonly LINE_COMMANDS = SVGPathData.LINE_TO | SVGPathData.HORIZ_LINE_TO | SVGPathData.VERT_LINE_TO;\n  static readonly DRAWING_COMMANDS = SVGPathData.HORIZ_LINE_TO | SVGPathData.VERT_LINE_TO | SVGPathData.LINE_TO |\n  SVGPathData.CURVE_TO | SVGPathData.SMOOTH_CURVE_TO | SVGPathData.QUAD_TO |\n  SVGPathData.SMOOTH_QUAD_TO | SVGPathData.ARC;\n}\n\nexport const COMMAND_ARG_COUNTS = {\n    [SVGPathData.MOVE_TO]: 2,\n    [SVGPathData.LINE_TO]: 2,\n    [SVGPathData.HORIZ_LINE_TO]: 1,\n    [SVGPathData.VERT_LINE_TO]: 1,\n    [SVGPathData.CLOSE_PATH]: 0,\n    [SVGPathData.QUAD_TO]: 4,\n    [SVGPathData.SMOOTH_QUAD_TO]: 2,\n    [SVGPathData.CURVE_TO]: 6,\n    [SVGPathData.SMOOTH_CURVE_TO]: 4,\n    [SVGPathData.ARC]: 7,\n};\n\nexport {encodeSVGPath} from \"./SVGPathDataEncoder\";\nexport {SVGPathDataParser} from \"./SVGPathDataParser\";\nexport {SVGPathDataTransformer} from \"./SVGPathDataTransformer\";\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n", "function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n  backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n  if (typeof img === 'string') {\n    img = document.getElementById(img);\n  }\n\n  if (!img || Object.prototype.toString.call(img).slice(8, -1) === 'HTMLImageElement' && !('naturalWidth' in img)) {\n    return;\n  }\n\n  var dimensionType = useOffset ? 'offset' : 'natural';\n  var w = img[dimensionType + 'Width'];\n  var h = img[dimensionType + 'Height']; // add ImageBitmap support,can blur texture source\n\n  if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {\n    w = img.width;\n    h = img.height;\n  }\n\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || !('getContext' in canvas)) {\n    return;\n  }\n\n  if (!skipStyles) {\n    canvas.style.width = w + 'px';\n    canvas.style.height = h + 'px';\n  }\n\n  canvas.width = w;\n  canvas.height = h;\n  var context = canvas.getContext('2d');\n  context.clearRect(0, 0, w, h);\n  context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  if (blurAlphaChannel) {\n    processCanvasRGBA(canvas, 0, 0, w, h, radius);\n  } else {\n    processCanvasRGB(canvas, 0, 0, w, h, radius);\n  }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n    throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n  }\n\n  var context = canvas.getContext('2d');\n\n  try {\n    return context.getImageData(topX, topY, width, height);\n  } catch (e) {\n    throw new Error('unable to access image data: ' + e);\n  }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null,\n      stackOut = null,\n      yw = 0,\n      yi = 0;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n\n  for (var y = 0; y < height; y++) {\n    stack = stackStart;\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        pa = pixels[yi + 3];\n\n    for (var _i = 0; _i < radiusPlus1; _i++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack.a = pa;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0,\n        aInSum = 0,\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        aOutSum = radiusPlus1 * pa,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb,\n        aSum = sumFactor * pa;\n\n    for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n      var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n      var r = pixels[p],\n          g = pixels[p + 1],\n          b = pixels[p + 2],\n          a = pixels[p + 3];\n      var rbs = radiusPlus1 - _i2;\n      rSum += (stack.r = r) * rbs;\n      gSum += (stack.g = g) * rbs;\n      bSum += (stack.b = b) * rbs;\n      aSum += (stack.a = a) * rbs;\n      rInSum += r;\n      gInSum += g;\n      bInSum += b;\n      aInSum += a;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      var paInitial = aSum * mulSum >>> shgSum;\n      pixels[yi + 3] = paInitial;\n\n      if (paInitial !== 0) {\n        var _a2 = 255 / paInitial;\n\n        pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;\n        pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;\n        pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;\n      } else {\n        pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n      }\n\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      aSum -= aOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      aOutSum -= stackIn.a;\n\n      var _p = x + radius + 1;\n\n      _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[_p];\n      gInSum += stackIn.g = pixels[_p + 1];\n      bInSum += stackIn.b = pixels[_p + 2];\n      aInSum += stackIn.a = pixels[_p + 3];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      aSum += aInSum;\n      stackIn = stackIn.next;\n      var _stackOut = stackOut,\n          _r = _stackOut.r,\n          _g = _stackOut.g,\n          _b = _stackOut.b,\n          _a = _stackOut.a;\n      rOutSum += _r;\n      gOutSum += _g;\n      bOutSum += _b;\n      aOutSum += _a;\n      rInSum -= _r;\n      gInSum -= _g;\n      bInSum -= _b;\n      aInSum -= _a;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x = 0; _x < width; _x++) {\n    yi = _x << 2;\n\n    var _pr = pixels[yi],\n        _pg = pixels[yi + 1],\n        _pb = pixels[yi + 2],\n        _pa = pixels[yi + 3],\n        _rOutSum = radiusPlus1 * _pr,\n        _gOutSum = radiusPlus1 * _pg,\n        _bOutSum = radiusPlus1 * _pb,\n        _aOutSum = radiusPlus1 * _pa,\n        _rSum = sumFactor * _pr,\n        _gSum = sumFactor * _pg,\n        _bSum = sumFactor * _pb,\n        _aSum = sumFactor * _pa;\n\n    stack = stackStart;\n\n    for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n      stack.r = _pr;\n      stack.g = _pg;\n      stack.b = _pb;\n      stack.a = _pa;\n      stack = stack.next;\n    }\n\n    var yp = width;\n    var _gInSum = 0,\n        _bInSum = 0,\n        _aInSum = 0,\n        _rInSum = 0;\n\n    for (var _i4 = 1; _i4 <= radius; _i4++) {\n      yi = yp + _x << 2;\n\n      var _rbs = radiusPlus1 - _i4;\n\n      _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n      _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n      _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n      _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n      _rInSum += _pr;\n      _gInSum += _pg;\n      _bInSum += _pb;\n      _aInSum += _pa;\n      stack = stack.next;\n\n      if (_i4 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y = 0; _y < height; _y++) {\n      var _p2 = yi << 2;\n\n      pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;\n\n      if (_pa > 0) {\n        _pa = 255 / _pa;\n        pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;\n        pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;\n        pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;\n      } else {\n        pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n      }\n\n      _rSum -= _rOutSum;\n      _gSum -= _gOutSum;\n      _bSum -= _bOutSum;\n      _aSum -= _aOutSum;\n      _rOutSum -= stackIn.r;\n      _gOutSum -= stackIn.g;\n      _bOutSum -= stackIn.b;\n      _aOutSum -= stackIn.a;\n      _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n      _rSum += _rInSum += stackIn.r = pixels[_p2];\n      _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n      _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n      _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n      stackIn = stackIn.next;\n      _rOutSum += _pr = stackOut.r;\n      _gOutSum += _pg = stackOut.g;\n      _bOutSum += _pb = stackOut.b;\n      _aOutSum += _pa = stackOut.a;\n      _rInSum -= _pr;\n      _gInSum -= _pg;\n      _bInSum -= _pb;\n      _aInSum -= _pa;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null;\n  var stackOut = null;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n  var p, rbs;\n  var yw = 0,\n      yi = 0;\n\n  for (var y = 0; y < height; y++) {\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb;\n    stack = stackStart;\n\n    for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0;\n\n    for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n      p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n      rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n      gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n      bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n      rInSum += pr;\n      gInSum += pg;\n      bInSum += pb;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      pixels[yi] = rSum * mulSum >>> shgSum;\n      pixels[yi + 1] = gSum * mulSum >>> shgSum;\n      pixels[yi + 2] = bSum * mulSum >>> shgSum;\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[p];\n      gInSum += stackIn.g = pixels[p + 1];\n      bInSum += stackIn.b = pixels[p + 2];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      stackIn = stackIn.next;\n      rOutSum += pr = stackOut.r;\n      gOutSum += pg = stackOut.g;\n      bOutSum += pb = stackOut.b;\n      rInSum -= pr;\n      gInSum -= pg;\n      bInSum -= pb;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x2 = 0; _x2 < width; _x2++) {\n    yi = _x2 << 2;\n\n    var _pr2 = pixels[yi],\n        _pg2 = pixels[yi + 1],\n        _pb2 = pixels[yi + 2],\n        _rOutSum2 = radiusPlus1 * _pr2,\n        _gOutSum2 = radiusPlus1 * _pg2,\n        _bOutSum2 = radiusPlus1 * _pb2,\n        _rSum2 = sumFactor * _pr2,\n        _gSum2 = sumFactor * _pg2,\n        _bSum2 = sumFactor * _pb2;\n\n    stack = stackStart;\n\n    for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n      stack.r = _pr2;\n      stack.g = _pg2;\n      stack.b = _pb2;\n      stack = stack.next;\n    }\n\n    var _rInSum2 = 0,\n        _gInSum2 = 0,\n        _bInSum2 = 0;\n\n    for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n      yi = yp + _x2 << 2;\n      _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n      _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n      _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n      _rInSum2 += _pr2;\n      _gInSum2 += _pg2;\n      _bInSum2 += _pb2;\n      stack = stack.next;\n\n      if (_i8 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x2;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y2 = 0; _y2 < height; _y2++) {\n      p = yi << 2;\n      pixels[p] = _rSum2 * mulSum >>> shgSum;\n      pixels[p + 1] = _gSum2 * mulSum >>> shgSum;\n      pixels[p + 2] = _bSum2 * mulSum >>> shgSum;\n      _rSum2 -= _rOutSum2;\n      _gSum2 -= _gOutSum2;\n      _bSum2 -= _bOutSum2;\n      _rOutSum2 -= stackIn.r;\n      _gOutSum2 -= stackIn.g;\n      _bOutSum2 -= stackIn.b;\n      p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n      _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n      _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n      _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n      stackIn = stackIn.next;\n      _rOutSum2 += _pr2 = stackOut.r;\n      _gOutSum2 += _pg2 = stackOut.g;\n      _bOutSum2 += _pb2 = stackOut.b;\n      _rInSum2 -= _pr2;\n      _gInSum2 -= _pg2;\n      _bInSum2 -= _pb2;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n  _classCallCheck(this, BlurStack);\n\n  this.r = 0;\n  this.g = 0;\n  this.b = 0;\n  this.a = 0;\n  this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n"],
+  "mappings": "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AK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AACzwC,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,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",
+  "names": ["fails", "fails", "test", "call", "getOwnPropertyDescriptor", "call", "uncurryThis", "toString", "stringSlice", "uncurryThis", "fails", "isNullOrUndefined", "requireObjectCoercible", "isCallable", "globalThis", "isCallable", "uncurryThis", "globalThis", "globalThis", "process", "Deno", "fails", "globalThis", "isCallable", "isCallable", "isNullOrUndefined", "call", "isCallable", "globalThis", "IS_PURE", "globalThis", "requireObjectCoercible", "uncurryThis", "uncurryThis", "toString", "globalThis", "Symbol", "call", "getMethod", "wellKnownSymbol", "toPrimitive", "globalThis", "document", "fails", "call", "toPropertyKey", "getOwnPropertyDescriptor", "O", "fails", "anObject", "toPropertyKey", "O", "uncurryThis", "isCallable", "globalThis", "isCallable", "globalThis", "createNonEnumerableProperty", "TypeError", "uncurryThis", "fails", "isCallable", "stringSlice", "toString", "isCallable", "O", "n", "toIntegerOrInfinity", "max", "min", "index", "toIntegerOrInfinity", "min", "toLength", "O", "index", "uncurryThis", "indexOf", "push", "O", "i", "O", "uncurryThis", "anObject", "concat", "ownKeys", "ownKeys", "getOwnPropertyDescriptor", "i", "fails", "isCallable", "globalThis", "getOwnPropertyDescriptor", "createNonEnumerableProperty", "defineBuiltIn", "FORCED", "globalThis", "uncurryThis", "requireObjectCoercible", "test", "O", "wellKnownSymbol", "wellKnownSymbol", "wellKnownSymbol", "test", "isCallable", "wellKnownSymbol", "O", "uncurryThis", "fails", "isCallable", "noop", "anObject", "isNullOrUndefined", "wellKnownSymbol", "O", "apply", "call", "uncurryThis", "uncurryThis", "uncurryThis", "globalThis", "apply", "isCallable", "fails", "IS_NODE", "process", "Function", "String", "globalThis", "getOwnPropertyDescriptor", "globalThis", "IS_NODE", "document", "process", "Promise", "node", "a", "globalThis", "globalThis", "isCallable", "wellKnownSymbol", "IS_PURE", "$", "IS_PURE", "IS_NODE", "globalThis", "call", "defineBuiltIn", "setToStringTag", "isCallable", "speciesConstructor", "TypeError", "document", "process", "Promise", "wellKnownSymbol", "ITERATOR", "getMethod", "isNullOrUndefined", "wellKnownSymbol", "ITERATOR", "call", "anObject", "call", "anObject", "getMethod", "call", "anObject", "index", "wellKnownSymbol", "ITERATOR", "$", "call", "index", "$", "IS_PURE", "isCallable", "defineBuiltIn", "$", "call", "$", "r", "anObject", "$", "IS_PURE", "anObject", "fails", "globalThis", "UNSUPPORTED_Y", "O", "anObject", "O", "index", "anObject", "activeXDocument", "O", "fails", "globalThis", "fails", "globalThis", "call", "uncurryThis", "toString", "stickyHelpers", "indexOf", "stringSlice", "UNSUPPORTED_Y", "i", "$", "call", "defineBuiltIn", "fails", "wellKnownSymbol", "createNonEnumerableProperty", "RegExpPrototype", "FORCED", "O", "uncurryThis", "toIntegerOrInfinity", "toString", "requireObjectCoercible", "stringSlice", "index", "call", "anObject", "isCallable", "uncurryThis", "stringSlice", "m", "n", "f", "wellKnownSymbol", "wellKnownSymbol", "wellKnownSymbol", "fails", "isCallable", "O", "fails", "isCallable", "defineBuiltIn", "wellKnownSymbol", "IS_PURE", "ITERATOR", "test", "setToStringTag", "$", "call", "IS_PURE", "isCallable", "setToStringTag", "createNonEnumerableProperty", "defineBuiltIn", "wellKnownSymbol", "PROPER_FUNCTION_NAME", "ITERATOR", "FORCED", "IS_PURE", "index", "DOMTokenListPrototype", "O", "self", "index", "i", "fails", "i", "e", "uncurryThis", "requireObjectCoercible", "toString", "PROPER_FUNCTION_NAME", "fails", "bits", "i", "r", "e", "isArray", "call", "RegExpPrototype", "n", "t", "e", "r", "o", "a", "c", "i", "u", "O", "n", "call", "fixRegExpWellKnownSymbolLogic", "anObject", "isNullOrUndefined", "toLength", "toString", "requireObjectCoercible", "advanceStringIndex", "getMethod", "regExpExec", "_", "O", "global", "i", "uncurryThis", "toLength", "toString", "requireObjectCoercible", "stringSlice", "min", "index", "globalThis", "wellKnownSymbol", "t", "r", "e", "i", "t", "i", "e", "r", "t", "$", "$", "uncurryThis", "getOwnPropertyDescriptor", "toLength", "toString", "notARegExp", "requireObjectCoercible", "correctIsRegExpLogic", "IS_PURE", "min", "CORRECT_IS_REGEXP_LOGIC", "MDN_POLYFILL_BUG", "call", "uncurryThis", "fixRegExpWellKnownSymbolLogic", "anObject", "isNullOrUndefined", "requireObjectCoercible", "advanceStringIndex", "toLength", "toString", "getMethod", "regExpExec", "fails", "min", "push", "stringSlice", "O", "p", "e", "i", "$", "$", "uncurryThis", "arrayMethodIsStrict", "FORCED", "$", "uncurryThis", "notARegExp", "requireObjectCoercible", "toString", "correctIsRegExpLogic", "stringIndexOf", "$", "uncurryThis", "extendStatics", "d", "b", "Object", "setPrototypeOf", "__proto__", "Array", "p", "prototype", "hasOwnProperty", "call", "__extends", "TypeError", "String", "__", "this", "constructor", "create", "encodeSVGPath", "commands", "str", "isArray", "i", "length", "command", "type", "SVGPathData", "CLOSE_PATH", "HORIZ_LINE_TO", "relative", "x", "VERT_LINE_TO", "y", "MOVE_TO", "LINE_TO", "CURVE_TO", "x1", "y1", "x2", "y2", "SMOOTH_CURVE_TO", "QUAD_TO", "SMOOTH_QUAD_TO", "ARC", "Error", "rX", "rY", "xRot", "lArcFlag", "sweepFlag", "rotate", "_a", "rad", "Math", "cos", "sin", "assertNumbers", "t", "r", "_i", "numbers", "PI", "annotateArcCommand", "c", "abs", "x1_", "y1_", "testValue", "pow", "sqrt", "c_ScaleTemp", "c_Scale", "max", "cx_", "cy_", "cRot", "cX", "cY", "phi1", "atan2", "phi2", "intersectionUnitCircleLine", "a", "termSqr", "term", "SVGPathDataTransformer", "DEG", "lerp", "arcAt", "phiDeg", "bezierRoot", "x0", "x3", "EPS", "x01", "x12", "q", "PRECISION", "discriminantX4", "root", "bezierAt", "s", "TO_ABS", "INFO", "prevX", "prevY", "NORMALIZE_ST", "prevCurveC2X", "NaN", "prevCurveC2Y", "prevQuadCX", "prevQuadCY", "isNaN", "QT_TO_C", "prevQuadX1", "prevQuadY1", "f", "prevXAbs", "prevYAbs", "pathStartXAbs", "pathStartYAbs", "result", "MATRIX", "e", "pathStartX", "origX1", "origX2", "comRel", "sqr", "det", "sinRot", "cosRot", "xCurve", "yCurve", "A", "B", "C", "A1", "B1", "C1", "newXRot", "newSinRot", "newCosRot", "CLONE", "key", "roundVal", "rf", "val", "round", "normalizeZ", "normalizeH", "normalizeV", "pathStartY", "skip", "x1Rel", "y1Rel", "LINE_COMMANDS", "xRel", "yRel", "x2Rel", "y2Rel", "dX", "dY", "atan", "xOffset", "yOffset", "arc", "y0", "phiMin", "min", "deltaPhi", "partCount", "ceil", "phiStart", "phiEnd", "deltaPhi_1", "tan", "_e", "_f", "_g", "transform", "xTemp", "yTemp", "_b", "_c", "_d", "clone", "toAbs", "qtToC", "normST", "fixX", "absX", "maxX", "minX", "fixY", "absY", "maxY", "minY", "DRAWING_COMMANDS", "T", "xDerivRoots_1", "derivRoot", "yDerivRoots_1", "xRotRad", "x90", "y90", "phiMin_1", "phiMax", "normalizeXiEta", "xi", "eta", "phi", "xDerivRoots_2", "map", "yDerivRoots_2", "Infinity", "TransformableSVG", "ROUND", "TO_REL", "NORMALIZE_HVZ", "A_TO_C", "eps", "SANITIZE", "TRANSLATE", "SCALE", "ROTATE", "SKEW_X", "SKEW_Y", "X_AXIS_SYMMETRY", "Y_AXIS_SYMMETRY", "ANNOTATE_ARCS", "isWhiteSpace", "isDigit", "charCodeAt", "_super", "_this", "SVGPathDataParser", "parse", "curArgs", "canParseCommandOrComma", "SyntaxError", "finishCommand", "push", "isAArcFlag", "curCommandType", "curNumber", "isEndingDigit", "curNumberHasExp", "curNumberHasExpDigits", "curNumberHasDecimal", "Number", "COMMAND_ARG_COUNTS", "curCommandRelative", "value", "chunk", "parsedCommands_1", "getPrototypeOf", "cT", "content", "encode", "boundsTransform", "CALCULATE_BOUNDS", "transformFunction", "newCommands", "transformedCommand", "path", "parser", "finish", "anObject", "fails", "toString", "_typeof", "obj", "_typeof", "e", "i", "y", "p", "r", "a", "BlurStack", "DOMParser", "fetch", "v", "u", "t", "document", "n", "i", "RGBColor", "y", "window", "_", "requestAnimationFrame", "shouldUpdate", "a", "c", "e", "f", "h", "transform", "node", "toRestore", "t2", "y2", "l", "s", "r", "index", "p", "from", "to", "m", "m2", "createCanvas", "createImage"]
+}
Index: imaps-frontend/node_modules/.vite/deps/jspdf.js
===================================================================
--- imaps-frontend/node_modules/.vite/deps/jspdf.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/jspdf.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,9474 @@
+import {
+  _typeof
+} from "./chunk-D7ZASVPN.js";
+import "./chunk-V4OQ3NZ2.js";
+
+// node_modules/fflate/esm/browser.js
+var ch2 = {};
+var wk = function(c2, id, msg, transfer, cb) {
+  var w2 = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([
+    c2 + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'
+  ], { type: "text/javascript" }))));
+  w2.onmessage = function(e) {
+    var d2 = e.data, ed = d2.$e$;
+    if (ed) {
+      var err2 = new Error(ed[0]);
+      err2["code"] = ed[1];
+      err2.stack = ed[2];
+      cb(err2, null);
+    } else
+      cb(null, d2);
+  };
+  w2.postMessage(msg, transfer);
+  return w2;
+};
+var u8 = Uint8Array;
+var u16 = Uint16Array;
+var i32 = Int32Array;
+var fleb = new u8([
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  1,
+  1,
+  1,
+  1,
+  2,
+  2,
+  2,
+  2,
+  3,
+  3,
+  3,
+  3,
+  4,
+  4,
+  4,
+  4,
+  5,
+  5,
+  5,
+  5,
+  0,
+  /* unused */
+  0,
+  0,
+  /* impossible */
+  0
+]);
+var fdeb = new u8([
+  0,
+  0,
+  0,
+  0,
+  1,
+  1,
+  2,
+  2,
+  3,
+  3,
+  4,
+  4,
+  5,
+  5,
+  6,
+  6,
+  7,
+  7,
+  8,
+  8,
+  9,
+  9,
+  10,
+  10,
+  11,
+  11,
+  12,
+  12,
+  13,
+  13,
+  /* unused */
+  0,
+  0
+]);
+var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+var freb = function(eb, start) {
+  var b3 = new u16(31);
+  for (var i2 = 0; i2 < 31; ++i2) {
+    b3[i2] = start += 1 << eb[i2 - 1];
+  }
+  var r = new i32(b3[30]);
+  for (var i2 = 1; i2 < 30; ++i2) {
+    for (var j2 = b3[i2]; j2 < b3[i2 + 1]; ++j2) {
+      r[j2] = j2 - b3[i2] << 5 | i2;
+    }
+  }
+  return { b: b3, r };
+};
+var _a = freb(fleb, 2);
+var fl = _a.b;
+var revfl = _a.r;
+fl[28] = 258, revfl[258] = 28;
+var _b = freb(fdeb, 0);
+var fd = _b.b;
+var revfd = _b.r;
+var rev = new u16(32768);
+for (i2 = 0; i2 < 32768; ++i2) {
+  x2 = (i2 & 43690) >> 1 | (i2 & 21845) << 1;
+  x2 = (x2 & 52428) >> 2 | (x2 & 13107) << 2;
+  x2 = (x2 & 61680) >> 4 | (x2 & 3855) << 4;
+  rev[i2] = ((x2 & 65280) >> 8 | (x2 & 255) << 8) >> 1;
+}
+var x2;
+var i2;
+var hMap = function(cd, mb, r) {
+  var s2 = cd.length;
+  var i2 = 0;
+  var l2 = new u16(mb);
+  for (; i2 < s2; ++i2) {
+    if (cd[i2])
+      ++l2[cd[i2] - 1];
+  }
+  var le2 = new u16(mb);
+  for (i2 = 1; i2 < mb; ++i2) {
+    le2[i2] = le2[i2 - 1] + l2[i2 - 1] << 1;
+  }
+  var co;
+  if (r) {
+    co = new u16(1 << mb);
+    var rvb = 15 - mb;
+    for (i2 = 0; i2 < s2; ++i2) {
+      if (cd[i2]) {
+        var sv = i2 << 4 | cd[i2];
+        var r_1 = mb - cd[i2];
+        var v2 = le2[cd[i2] - 1]++ << r_1;
+        for (var m2 = v2 | (1 << r_1) - 1; v2 <= m2; ++v2) {
+          co[rev[v2] >> rvb] = sv;
+        }
+      }
+    }
+  } else {
+    co = new u16(s2);
+    for (i2 = 0; i2 < s2; ++i2) {
+      if (cd[i2]) {
+        co[i2] = rev[le2[cd[i2] - 1]++] >> 15 - cd[i2];
+      }
+    }
+  }
+  return co;
+};
+var flt = new u8(288);
+for (i2 = 0; i2 < 144; ++i2)
+  flt[i2] = 8;
+var i2;
+for (i2 = 144; i2 < 256; ++i2)
+  flt[i2] = 9;
+var i2;
+for (i2 = 256; i2 < 280; ++i2)
+  flt[i2] = 7;
+var i2;
+for (i2 = 280; i2 < 288; ++i2)
+  flt[i2] = 8;
+var i2;
+var fdt = new u8(32);
+for (i2 = 0; i2 < 32; ++i2)
+  fdt[i2] = 5;
+var i2;
+var flm = hMap(flt, 9, 0);
+var flrm = hMap(flt, 9, 1);
+var fdm = hMap(fdt, 5, 0);
+var fdrm = hMap(fdt, 5, 1);
+var max = function(a2) {
+  var m2 = a2[0];
+  for (var i2 = 1; i2 < a2.length; ++i2) {
+    if (a2[i2] > m2)
+      m2 = a2[i2];
+  }
+  return m2;
+};
+var bits = function(d2, p2, m2) {
+  var o2 = p2 / 8 | 0;
+  return (d2[o2] | d2[o2 + 1] << 8) >> (p2 & 7) & m2;
+};
+var bits16 = function(d2, p2) {
+  var o2 = p2 / 8 | 0;
+  return (d2[o2] | d2[o2 + 1] << 8 | d2[o2 + 2] << 16) >> (p2 & 7);
+};
+var shft = function(p2) {
+  return (p2 + 7) / 8 | 0;
+};
+var slc = function(v2, s2, e) {
+  if (s2 == null || s2 < 0)
+    s2 = 0;
+  if (e == null || e > v2.length)
+    e = v2.length;
+  return new u8(v2.subarray(s2, e));
+};
+var ec = [
+  "unexpected EOF",
+  "invalid block type",
+  "invalid length/literal",
+  "invalid distance",
+  "stream finished",
+  "no stream handler",
+  ,
+  "no callback",
+  "invalid UTF-8 data",
+  "extra field too long",
+  "date not in range 1980-2099",
+  "filename too long",
+  "stream finishing",
+  "invalid zip data"
+  // determined by unknown compression method
+];
+var err = function(ind, msg, nt2) {
+  var e = new Error(msg || ec[ind]);
+  e.code = ind;
+  if (Error.captureStackTrace)
+    Error.captureStackTrace(e, err);
+  if (!nt2)
+    throw e;
+  return e;
+};
+var inflt = function(dat, st2, buf, dict) {
+  var sl = dat.length, dl = dict ? dict.length : 0;
+  if (!sl || st2.f && !st2.l)
+    return buf || new u8(0);
+  var noBuf = !buf;
+  var resize = noBuf || st2.i != 2;
+  var noSt = st2.i;
+  if (noBuf)
+    buf = new u8(sl * 3);
+  var cbuf = function(l3) {
+    var bl = buf.length;
+    if (l3 > bl) {
+      var nbuf = new u8(Math.max(bl * 2, l3));
+      nbuf.set(buf);
+      buf = nbuf;
+    }
+  };
+  var final = st2.f || 0, pos = st2.p || 0, bt2 = st2.b || 0, lm = st2.l, dm = st2.d, lbt = st2.m, dbt = st2.n;
+  var tbts = sl * 8;
+  do {
+    if (!lm) {
+      final = bits(dat, pos, 1);
+      var type = bits(dat, pos + 1, 3);
+      pos += 3;
+      if (!type) {
+        var s2 = shft(pos) + 4, l2 = dat[s2 - 4] | dat[s2 - 3] << 8, t2 = s2 + l2;
+        if (t2 > sl) {
+          if (noSt)
+            err(0);
+          break;
+        }
+        if (resize)
+          cbuf(bt2 + l2);
+        buf.set(dat.subarray(s2, t2), bt2);
+        st2.b = bt2 += l2, st2.p = pos = t2 * 8, st2.f = final;
+        continue;
+      } else if (type == 1)
+        lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
+      else if (type == 2) {
+        var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
+        var tl = hLit + bits(dat, pos + 5, 31) + 1;
+        pos += 14;
+        var ldt = new u8(tl);
+        var clt = new u8(19);
+        for (var i2 = 0; i2 < hcLen; ++i2) {
+          clt[clim[i2]] = bits(dat, pos + i2 * 3, 7);
+        }
+        pos += hcLen * 3;
+        var clb = max(clt), clbmsk = (1 << clb) - 1;
+        var clm = hMap(clt, clb, 1);
+        for (var i2 = 0; i2 < tl; ) {
+          var r = clm[bits(dat, pos, clbmsk)];
+          pos += r & 15;
+          var s2 = r >> 4;
+          if (s2 < 16) {
+            ldt[i2++] = s2;
+          } else {
+            var c2 = 0, n2 = 0;
+            if (s2 == 16)
+              n2 = 3 + bits(dat, pos, 3), pos += 2, c2 = ldt[i2 - 1];
+            else if (s2 == 17)
+              n2 = 3 + bits(dat, pos, 7), pos += 3;
+            else if (s2 == 18)
+              n2 = 11 + bits(dat, pos, 127), pos += 7;
+            while (n2--)
+              ldt[i2++] = c2;
+          }
+        }
+        var lt2 = ldt.subarray(0, hLit), dt2 = ldt.subarray(hLit);
+        lbt = max(lt2);
+        dbt = max(dt2);
+        lm = hMap(lt2, lbt, 1);
+        dm = hMap(dt2, dbt, 1);
+      } else
+        err(1);
+      if (pos > tbts) {
+        if (noSt)
+          err(0);
+        break;
+      }
+    }
+    if (resize)
+      cbuf(bt2 + 131072);
+    var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
+    var lpos = pos;
+    for (; ; lpos = pos) {
+      var c2 = lm[bits16(dat, pos) & lms], sym = c2 >> 4;
+      pos += c2 & 15;
+      if (pos > tbts) {
+        if (noSt)
+          err(0);
+        break;
+      }
+      if (!c2)
+        err(2);
+      if (sym < 256)
+        buf[bt2++] = sym;
+      else if (sym == 256) {
+        lpos = pos, lm = null;
+        break;
+      } else {
+        var add = sym - 254;
+        if (sym > 264) {
+          var i2 = sym - 257, b3 = fleb[i2];
+          add = bits(dat, pos, (1 << b3) - 1) + fl[i2];
+          pos += b3;
+        }
+        var d2 = dm[bits16(dat, pos) & dms], dsym = d2 >> 4;
+        if (!d2)
+          err(3);
+        pos += d2 & 15;
+        var dt2 = fd[dsym];
+        if (dsym > 3) {
+          var b3 = fdeb[dsym];
+          dt2 += bits16(dat, pos) & (1 << b3) - 1, pos += b3;
+        }
+        if (pos > tbts) {
+          if (noSt)
+            err(0);
+          break;
+        }
+        if (resize)
+          cbuf(bt2 + 131072);
+        var end = bt2 + add;
+        if (bt2 < dt2) {
+          var shift = dl - dt2, dend = Math.min(dt2, end);
+          if (shift + bt2 < 0)
+            err(3);
+          for (; bt2 < dend; ++bt2)
+            buf[bt2] = dict[shift + bt2];
+        }
+        for (; bt2 < end; ++bt2)
+          buf[bt2] = buf[bt2 - dt2];
+      }
+    }
+    st2.l = lm, st2.p = lpos, st2.b = bt2, st2.f = final;
+    if (lm)
+      final = 1, st2.m = lbt, st2.d = dm, st2.n = dbt;
+  } while (!final);
+  return bt2 != buf.length && noBuf ? slc(buf, 0, bt2) : buf.subarray(0, bt2);
+};
+var wbits = function(d2, p2, v2) {
+  v2 <<= p2 & 7;
+  var o2 = p2 / 8 | 0;
+  d2[o2] |= v2;
+  d2[o2 + 1] |= v2 >> 8;
+};
+var wbits16 = function(d2, p2, v2) {
+  v2 <<= p2 & 7;
+  var o2 = p2 / 8 | 0;
+  d2[o2] |= v2;
+  d2[o2 + 1] |= v2 >> 8;
+  d2[o2 + 2] |= v2 >> 16;
+};
+var hTree = function(d2, mb) {
+  var t2 = [];
+  for (var i2 = 0; i2 < d2.length; ++i2) {
+    if (d2[i2])
+      t2.push({ s: i2, f: d2[i2] });
+  }
+  var s2 = t2.length;
+  var t22 = t2.slice();
+  if (!s2)
+    return { t: et, l: 0 };
+  if (s2 == 1) {
+    var v2 = new u8(t2[0].s + 1);
+    v2[t2[0].s] = 1;
+    return { t: v2, l: 1 };
+  }
+  t2.sort(function(a2, b3) {
+    return a2.f - b3.f;
+  });
+  t2.push({ s: -1, f: 25001 });
+  var l2 = t2[0], r = t2[1], i0 = 0, i1 = 1, i22 = 2;
+  t2[0] = { s: -1, f: l2.f + r.f, l: l2, r };
+  while (i1 != s2 - 1) {
+    l2 = t2[t2[i0].f < t2[i22].f ? i0++ : i22++];
+    r = t2[i0 != i1 && t2[i0].f < t2[i22].f ? i0++ : i22++];
+    t2[i1++] = { s: -1, f: l2.f + r.f, l: l2, r };
+  }
+  var maxSym = t22[0].s;
+  for (var i2 = 1; i2 < s2; ++i2) {
+    if (t22[i2].s > maxSym)
+      maxSym = t22[i2].s;
+  }
+  var tr = new u16(maxSym + 1);
+  var mbt = ln(t2[i1 - 1], tr, 0);
+  if (mbt > mb) {
+    var i2 = 0, dt2 = 0;
+    var lft = mbt - mb, cst = 1 << lft;
+    t22.sort(function(a2, b3) {
+      return tr[b3.s] - tr[a2.s] || a2.f - b3.f;
+    });
+    for (; i2 < s2; ++i2) {
+      var i2_1 = t22[i2].s;
+      if (tr[i2_1] > mb) {
+        dt2 += cst - (1 << mbt - tr[i2_1]);
+        tr[i2_1] = mb;
+      } else
+        break;
+    }
+    dt2 >>= lft;
+    while (dt2 > 0) {
+      var i2_2 = t22[i2].s;
+      if (tr[i2_2] < mb)
+        dt2 -= 1 << mb - tr[i2_2]++ - 1;
+      else
+        ++i2;
+    }
+    for (; i2 >= 0 && dt2; --i2) {
+      var i2_3 = t22[i2].s;
+      if (tr[i2_3] == mb) {
+        --tr[i2_3];
+        ++dt2;
+      }
+    }
+    mbt = mb;
+  }
+  return { t: new u8(tr), l: mbt };
+};
+var ln = function(n2, l2, d2) {
+  return n2.s == -1 ? Math.max(ln(n2.l, l2, d2 + 1), ln(n2.r, l2, d2 + 1)) : l2[n2.s] = d2;
+};
+var lc = function(c2) {
+  var s2 = c2.length;
+  while (s2 && !c2[--s2])
+    ;
+  var cl = new u16(++s2);
+  var cli = 0, cln = c2[0], cls = 1;
+  var w2 = function(v2) {
+    cl[cli++] = v2;
+  };
+  for (var i2 = 1; i2 <= s2; ++i2) {
+    if (c2[i2] == cln && i2 != s2)
+      ++cls;
+    else {
+      if (!cln && cls > 2) {
+        for (; cls > 138; cls -= 138)
+          w2(32754);
+        if (cls > 2) {
+          w2(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);
+          cls = 0;
+        }
+      } else if (cls > 3) {
+        w2(cln), --cls;
+        for (; cls > 6; cls -= 6)
+          w2(8304);
+        if (cls > 2)
+          w2(cls - 3 << 5 | 8208), cls = 0;
+      }
+      while (cls--)
+        w2(cln);
+      cls = 1;
+      cln = c2[i2];
+    }
+  }
+  return { c: cl.subarray(0, cli), n: s2 };
+};
+var clen = function(cf, cl) {
+  var l2 = 0;
+  for (var i2 = 0; i2 < cl.length; ++i2)
+    l2 += cf[i2] * cl[i2];
+  return l2;
+};
+var wfblk = function(out, pos, dat) {
+  var s2 = dat.length;
+  var o2 = shft(pos + 2);
+  out[o2] = s2 & 255;
+  out[o2 + 1] = s2 >> 8;
+  out[o2 + 2] = out[o2] ^ 255;
+  out[o2 + 3] = out[o2 + 1] ^ 255;
+  for (var i2 = 0; i2 < s2; ++i2)
+    out[o2 + i2 + 4] = dat[i2];
+  return (o2 + 4 + s2) * 8;
+};
+var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p2) {
+  wbits(out, p2++, final);
+  ++lf[256];
+  var _a2 = hTree(lf, 15), dlt = _a2.t, mlb = _a2.l;
+  var _b2 = hTree(df, 15), ddt = _b2.t, mdb = _b2.l;
+  var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
+  var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
+  var lcfreq = new u16(19);
+  for (var i2 = 0; i2 < lclt.length; ++i2)
+    ++lcfreq[lclt[i2] & 31];
+  for (var i2 = 0; i2 < lcdt.length; ++i2)
+    ++lcfreq[lcdt[i2] & 31];
+  var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
+  var nlcc = 19;
+  for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
+    ;
+  var flen = bl + 5 << 3;
+  var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
+  var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
+  if (bs >= 0 && flen <= ftlen && flen <= dtlen)
+    return wfblk(out, p2, dat.subarray(bs, bs + bl));
+  var lm, ll, dm, dl;
+  wbits(out, p2, 1 + (dtlen < ftlen)), p2 += 2;
+  if (dtlen < ftlen) {
+    lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
+    var llm = hMap(lct, mlcb, 0);
+    wbits(out, p2, nlc - 257);
+    wbits(out, p2 + 5, ndc - 1);
+    wbits(out, p2 + 10, nlcc - 4);
+    p2 += 14;
+    for (var i2 = 0; i2 < nlcc; ++i2)
+      wbits(out, p2 + 3 * i2, lct[clim[i2]]);
+    p2 += 3 * nlcc;
+    var lcts = [lclt, lcdt];
+    for (var it2 = 0; it2 < 2; ++it2) {
+      var clct = lcts[it2];
+      for (var i2 = 0; i2 < clct.length; ++i2) {
+        var len = clct[i2] & 31;
+        wbits(out, p2, llm[len]), p2 += lct[len];
+        if (len > 15)
+          wbits(out, p2, clct[i2] >> 5 & 127), p2 += clct[i2] >> 12;
+      }
+    }
+  } else {
+    lm = flm, ll = flt, dm = fdm, dl = fdt;
+  }
+  for (var i2 = 0; i2 < li; ++i2) {
+    var sym = syms[i2];
+    if (sym > 255) {
+      var len = sym >> 18 & 31;
+      wbits16(out, p2, lm[len + 257]), p2 += ll[len + 257];
+      if (len > 7)
+        wbits(out, p2, sym >> 23 & 31), p2 += fleb[len];
+      var dst = sym & 31;
+      wbits16(out, p2, dm[dst]), p2 += dl[dst];
+      if (dst > 3)
+        wbits16(out, p2, sym >> 5 & 8191), p2 += fdeb[dst];
+    } else {
+      wbits16(out, p2, lm[sym]), p2 += ll[sym];
+    }
+  }
+  wbits16(out, p2, lm[256]);
+  return p2 + ll[256];
+};
+var deo = new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
+var et = new u8(0);
+var dflt = function(dat, lvl, plvl, pre, post, st2) {
+  var s2 = st2.z || dat.length;
+  var o2 = new u8(pre + s2 + 5 * (1 + Math.ceil(s2 / 7e3)) + post);
+  var w2 = o2.subarray(pre, o2.length - post);
+  var lst = st2.l;
+  var pos = (st2.r || 0) & 7;
+  if (lvl) {
+    if (pos)
+      w2[0] = st2.r >> 3;
+    var opt = deo[lvl - 1];
+    var n2 = opt >> 13, c2 = opt & 8191;
+    var msk_1 = (1 << plvl) - 1;
+    var prev = st2.p || new u16(32768), head = st2.h || new u16(msk_1 + 1);
+    var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
+    var hsh = function(i3) {
+      return (dat[i3] ^ dat[i3 + 1] << bs1_1 ^ dat[i3 + 2] << bs2_1) & msk_1;
+    };
+    var syms = new i32(25e3);
+    var lf = new u16(288), df = new u16(32);
+    var lc_1 = 0, eb = 0, i2 = st2.i || 0, li = 0, wi = st2.w || 0, bs = 0;
+    for (; i2 + 2 < s2; ++i2) {
+      var hv = hsh(i2);
+      var imod = i2 & 32767, pimod = head[hv];
+      prev[imod] = pimod;
+      head[hv] = imod;
+      if (wi <= i2) {
+        var rem = s2 - i2;
+        if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) {
+          pos = wblk(dat, w2, 0, syms, lf, df, eb, li, bs, i2 - bs, pos);
+          li = lc_1 = eb = 0, bs = i2;
+          for (var j2 = 0; j2 < 286; ++j2)
+            lf[j2] = 0;
+          for (var j2 = 0; j2 < 30; ++j2)
+            df[j2] = 0;
+        }
+        var l2 = 2, d2 = 0, ch_1 = c2, dif = imod - pimod & 32767;
+        if (rem > 2 && hv == hsh(i2 - dif)) {
+          var maxn = Math.min(n2, rem) - 1;
+          var maxd = Math.min(32767, i2);
+          var ml = Math.min(258, rem);
+          while (dif <= maxd && --ch_1 && imod != pimod) {
+            if (dat[i2 + l2] == dat[i2 + l2 - dif]) {
+              var nl = 0;
+              for (; nl < ml && dat[i2 + nl] == dat[i2 + nl - dif]; ++nl)
+                ;
+              if (nl > l2) {
+                l2 = nl, d2 = dif;
+                if (nl > maxn)
+                  break;
+                var mmd = Math.min(dif, nl - 2);
+                var md = 0;
+                for (var j2 = 0; j2 < mmd; ++j2) {
+                  var ti = i2 - dif + j2 & 32767;
+                  var pti = prev[ti];
+                  var cd = ti - pti & 32767;
+                  if (cd > md)
+                    md = cd, pimod = ti;
+                }
+              }
+            }
+            imod = pimod, pimod = prev[imod];
+            dif += imod - pimod & 32767;
+          }
+        }
+        if (d2) {
+          syms[li++] = 268435456 | revfl[l2] << 18 | revfd[d2];
+          var lin = revfl[l2] & 31, din = revfd[d2] & 31;
+          eb += fleb[lin] + fdeb[din];
+          ++lf[257 + lin];
+          ++df[din];
+          wi = i2 + l2;
+          ++lc_1;
+        } else {
+          syms[li++] = dat[i2];
+          ++lf[dat[i2]];
+        }
+      }
+    }
+    for (i2 = Math.max(i2, wi); i2 < s2; ++i2) {
+      syms[li++] = dat[i2];
+      ++lf[dat[i2]];
+    }
+    pos = wblk(dat, w2, lst, syms, lf, df, eb, li, bs, i2 - bs, pos);
+    if (!lst) {
+      st2.r = pos & 7 | w2[pos / 8 | 0] << 3;
+      pos -= 7;
+      st2.h = head, st2.p = prev, st2.i = i2, st2.w = wi;
+    }
+  } else {
+    for (var i2 = st2.w || 0; i2 < s2 + lst; i2 += 65535) {
+      var e = i2 + 65535;
+      if (e >= s2) {
+        w2[pos / 8 | 0] = lst;
+        e = s2;
+      }
+      pos = wfblk(w2, pos + 1, dat.subarray(i2, e));
+    }
+    st2.i = s2;
+  }
+  return slc(o2, 0, pre + shft(pos) + post);
+};
+var crct = function() {
+  var t2 = new Int32Array(256);
+  for (var i2 = 0; i2 < 256; ++i2) {
+    var c2 = i2, k2 = 9;
+    while (--k2)
+      c2 = (c2 & 1 && -306674912) ^ c2 >>> 1;
+    t2[i2] = c2;
+  }
+  return t2;
+}();
+var crc = function() {
+  var c2 = -1;
+  return {
+    p: function(d2) {
+      var cr = c2;
+      for (var i2 = 0; i2 < d2.length; ++i2)
+        cr = crct[cr & 255 ^ d2[i2]] ^ cr >>> 8;
+      c2 = cr;
+    },
+    d: function() {
+      return ~c2;
+    }
+  };
+};
+var adler = function() {
+  var a2 = 1, b3 = 0;
+  return {
+    p: function(d2) {
+      var n2 = a2, m2 = b3;
+      var l2 = d2.length | 0;
+      for (var i2 = 0; i2 != l2; ) {
+        var e = Math.min(i2 + 2655, l2);
+        for (; i2 < e; ++i2)
+          m2 += n2 += d2[i2];
+        n2 = (n2 & 65535) + 15 * (n2 >> 16), m2 = (m2 & 65535) + 15 * (m2 >> 16);
+      }
+      a2 = n2, b3 = m2;
+    },
+    d: function() {
+      a2 %= 65521, b3 %= 65521;
+      return (a2 & 255) << 24 | (a2 & 65280) << 8 | (b3 & 255) << 8 | b3 >> 8;
+    }
+  };
+};
+var dopt = function(dat, opt, pre, post, st2) {
+  if (!st2) {
+    st2 = { l: 1 };
+    if (opt.dictionary) {
+      var dict = opt.dictionary.subarray(-32768);
+      var newDat = new u8(dict.length + dat.length);
+      newDat.set(dict);
+      newDat.set(dat, dict.length);
+      dat = newDat;
+      st2.w = dict.length;
+    }
+  }
+  return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st2.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st2);
+};
+var mrg = function(a2, b3) {
+  var o2 = {};
+  for (var k2 in a2)
+    o2[k2] = a2[k2];
+  for (var k2 in b3)
+    o2[k2] = b3[k2];
+  return o2;
+};
+var wcln = function(fn, fnStr, td2) {
+  var dt2 = fn();
+  var st2 = fn.toString();
+  var ks = st2.slice(st2.indexOf("[") + 1, st2.lastIndexOf("]")).replace(/\s+/g, "").split(",");
+  for (var i2 = 0; i2 < dt2.length; ++i2) {
+    var v2 = dt2[i2], k2 = ks[i2];
+    if (typeof v2 == "function") {
+      fnStr += ";" + k2 + "=";
+      var st_1 = v2.toString();
+      if (v2.prototype) {
+        if (st_1.indexOf("[native code]") != -1) {
+          var spInd = st_1.indexOf(" ", 8) + 1;
+          fnStr += st_1.slice(spInd, st_1.indexOf("(", spInd));
+        } else {
+          fnStr += st_1;
+          for (var t2 in v2.prototype)
+            fnStr += ";" + k2 + ".prototype." + t2 + "=" + v2.prototype[t2].toString();
+        }
+      } else
+        fnStr += st_1;
+    } else
+      td2[k2] = v2;
+  }
+  return fnStr;
+};
+var ch = [];
+var cbfs = function(v2) {
+  var tl = [];
+  for (var k2 in v2) {
+    if (v2[k2].buffer) {
+      tl.push((v2[k2] = new v2[k2].constructor(v2[k2])).buffer);
+    }
+  }
+  return tl;
+};
+var wrkr = function(fns, init, id, cb) {
+  if (!ch[id]) {
+    var fnStr = "", td_1 = {}, m2 = fns.length - 1;
+    for (var i2 = 0; i2 < m2; ++i2)
+      fnStr = wcln(fns[i2], fnStr, td_1);
+    ch[id] = { c: wcln(fns[m2], fnStr, td_1), e: td_1 };
+  }
+  var td2 = mrg({}, ch[id].e);
+  return wk(ch[id].c + ";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=" + init.toString() + "}", id, td2, cbfs(td2), cb);
+};
+var bInflt = function() {
+  return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt];
+};
+var bDflt = function() {
+  return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf];
+};
+var guze = function() {
+  return [gzs, gzl];
+};
+var zule = function() {
+  return [zls];
+};
+var pbf = function(msg) {
+  return postMessage(msg, [msg.buffer]);
+};
+var gopt = function(o2) {
+  return o2 && {
+    out: o2.size && new u8(o2.size),
+    dictionary: o2.dictionary
+  };
+};
+var astrm = function(strm) {
+  strm.ondata = function(dat, final) {
+    return postMessage([dat, final], [dat.buffer]);
+  };
+  return function(ev) {
+    if (ev.data.length) {
+      strm.push(ev.data[0], ev.data[1]);
+      postMessage([ev.data[0].length]);
+    } else
+      strm.flush();
+  };
+};
+var astrmify = function(fns, strm, opts, init, id, flush, ext) {
+  var t2;
+  var w2 = wrkr(fns, init, id, function(err2, dat) {
+    if (err2)
+      w2.terminate(), strm.ondata.call(strm, err2);
+    else if (!Array.isArray(dat))
+      ext(dat);
+    else if (dat.length == 1) {
+      strm.queuedSize -= dat[0];
+      if (strm.ondrain)
+        strm.ondrain(dat[0]);
+    } else {
+      if (dat[1])
+        w2.terminate();
+      strm.ondata.call(strm, err2, dat[0], dat[1]);
+    }
+  });
+  w2.postMessage(opts);
+  strm.queuedSize = 0;
+  strm.push = function(d2, f2) {
+    if (!strm.ondata)
+      err(5);
+    if (t2)
+      strm.ondata(err(4, 0, 1), null, !!f2);
+    strm.queuedSize += d2.length;
+    w2.postMessage([d2, t2 = f2], [d2.buffer]);
+  };
+  strm.terminate = function() {
+    w2.terminate();
+  };
+  if (flush) {
+    strm.flush = function() {
+      w2.postMessage([]);
+    };
+  }
+};
+var b2 = function(d2, b3) {
+  return d2[b3] | d2[b3 + 1] << 8;
+};
+var b4 = function(d2, b3) {
+  return (d2[b3] | d2[b3 + 1] << 8 | d2[b3 + 2] << 16 | d2[b3 + 3] << 24) >>> 0;
+};
+var b8 = function(d2, b3) {
+  return b4(d2, b3) + b4(d2, b3 + 4) * 4294967296;
+};
+var wbytes = function(d2, b3, v2) {
+  for (; v2; ++b3)
+    d2[b3] = v2, v2 >>>= 8;
+};
+var gzh = function(c2, o2) {
+  var fn = o2.filename;
+  c2[0] = 31, c2[1] = 139, c2[2] = 8, c2[8] = o2.level < 2 ? 4 : o2.level == 9 ? 2 : 0, c2[9] = 3;
+  if (o2.mtime != 0)
+    wbytes(c2, 4, Math.floor(new Date(o2.mtime || Date.now()) / 1e3));
+  if (fn) {
+    c2[3] = 8;
+    for (var i2 = 0; i2 <= fn.length; ++i2)
+      c2[i2 + 10] = fn.charCodeAt(i2);
+  }
+};
+var gzs = function(d2) {
+  if (d2[0] != 31 || d2[1] != 139 || d2[2] != 8)
+    err(6, "invalid gzip data");
+  var flg = d2[3];
+  var st2 = 10;
+  if (flg & 4)
+    st2 += (d2[10] | d2[11] << 8) + 2;
+  for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d2[st2++])
+    ;
+  return st2 + (flg & 2);
+};
+var gzl = function(d2) {
+  var l2 = d2.length;
+  return (d2[l2 - 4] | d2[l2 - 3] << 8 | d2[l2 - 2] << 16 | d2[l2 - 1] << 24) >>> 0;
+};
+var gzhl = function(o2) {
+  return 10 + (o2.filename ? o2.filename.length + 1 : 0);
+};
+var zlh = function(c2, o2) {
+  var lv = o2.level, fl2 = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
+  c2[0] = 120, c2[1] = fl2 << 6 | (o2.dictionary && 32);
+  c2[1] |= 31 - (c2[0] << 8 | c2[1]) % 31;
+  if (o2.dictionary) {
+    var h2 = adler();
+    h2.p(o2.dictionary);
+    wbytes(c2, 2, h2.d());
+  }
+};
+var zls = function(d2, dict) {
+  if ((d2[0] & 15) != 8 || d2[0] >> 4 > 7 || (d2[0] << 8 | d2[1]) % 31)
+    err(6, "invalid zlib data");
+  if ((d2[1] >> 5 & 1) == +!dict)
+    err(6, "invalid zlib data: " + (d2[1] & 32 ? "need" : "unexpected") + " dictionary");
+  return (d2[1] >> 3 & 4) + 2;
+};
+function StrmOpt(opts, cb) {
+  if (typeof opts == "function")
+    cb = opts, opts = {};
+  this.ondata = cb;
+  return opts;
+}
+var Deflate = function() {
+  function Deflate2(opts, cb) {
+    if (typeof opts == "function")
+      cb = opts, opts = {};
+    this.ondata = cb;
+    this.o = opts || {};
+    this.s = { l: 0, i: 32768, w: 32768, z: 32768 };
+    this.b = new u8(98304);
+    if (this.o.dictionary) {
+      var dict = this.o.dictionary.subarray(-32768);
+      this.b.set(dict, 32768 - dict.length);
+      this.s.i = 32768 - dict.length;
+    }
+  }
+  Deflate2.prototype.p = function(c2, f2) {
+    this.ondata(dopt(c2, this.o, 0, 0, this.s), f2);
+  };
+  Deflate2.prototype.push = function(chunk, final) {
+    if (!this.ondata)
+      err(5);
+    if (this.s.l)
+      err(4);
+    var endLen = chunk.length + this.s.z;
+    if (endLen > this.b.length) {
+      if (endLen > 2 * this.b.length - 32768) {
+        var newBuf = new u8(endLen & -32768);
+        newBuf.set(this.b.subarray(0, this.s.z));
+        this.b = newBuf;
+      }
+      var split = this.b.length - this.s.z;
+      this.b.set(chunk.subarray(0, split), this.s.z);
+      this.s.z = this.b.length;
+      this.p(this.b, false);
+      this.b.set(this.b.subarray(-32768));
+      this.b.set(chunk.subarray(split), 32768);
+      this.s.z = chunk.length - split + 32768;
+      this.s.i = 32766, this.s.w = 32768;
+    } else {
+      this.b.set(chunk, this.s.z);
+      this.s.z += chunk.length;
+    }
+    this.s.l = final & 1;
+    if (this.s.z > this.s.w + 8191 || final) {
+      this.p(this.b, final || false);
+      this.s.w = this.s.i, this.s.i -= 2;
+    }
+  };
+  Deflate2.prototype.flush = function() {
+    if (!this.ondata)
+      err(5);
+    if (this.s.l)
+      err(4);
+    this.p(this.b, false);
+    this.s.w = this.s.i, this.s.i -= 2;
+  };
+  return Deflate2;
+}();
+var AsyncDeflate = /* @__PURE__ */ function() {
+  function AsyncDeflate2(opts, cb) {
+    astrmify([
+      bDflt,
+      function() {
+        return [astrm, Deflate];
+      }
+    ], this, StrmOpt.call(this, opts, cb), function(ev) {
+      var strm = new Deflate(ev.data);
+      onmessage = astrm(strm);
+    }, 6, 1);
+  }
+  return AsyncDeflate2;
+}();
+function deflateSync(data, opts) {
+  return dopt(data, opts || {}, 0, 0);
+}
+var Inflate = function() {
+  function Inflate2(opts, cb) {
+    if (typeof opts == "function")
+      cb = opts, opts = {};
+    this.ondata = cb;
+    var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
+    this.s = { i: 0, b: dict ? dict.length : 0 };
+    this.o = new u8(32768);
+    this.p = new u8(0);
+    if (dict)
+      this.o.set(dict);
+  }
+  Inflate2.prototype.e = function(c2) {
+    if (!this.ondata)
+      err(5);
+    if (this.d)
+      err(4);
+    if (!this.p.length)
+      this.p = c2;
+    else if (c2.length) {
+      var n2 = new u8(this.p.length + c2.length);
+      n2.set(this.p), n2.set(c2, this.p.length), this.p = n2;
+    }
+  };
+  Inflate2.prototype.c = function(final) {
+    this.s.i = +(this.d = final || false);
+    var bts = this.s.b;
+    var dt2 = inflt(this.p, this.s, this.o);
+    this.ondata(slc(dt2, bts, this.s.b), this.d);
+    this.o = slc(dt2, this.s.b - 32768), this.s.b = this.o.length;
+    this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7;
+  };
+  Inflate2.prototype.push = function(chunk, final) {
+    this.e(chunk), this.c(final);
+  };
+  return Inflate2;
+}();
+var AsyncInflate = /* @__PURE__ */ function() {
+  function AsyncInflate2(opts, cb) {
+    astrmify([
+      bInflt,
+      function() {
+        return [astrm, Inflate];
+      }
+    ], this, StrmOpt.call(this, opts, cb), function(ev) {
+      var strm = new Inflate(ev.data);
+      onmessage = astrm(strm);
+    }, 7, 0);
+  }
+  return AsyncInflate2;
+}();
+function inflateSync(data, opts) {
+  return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+var Gzip = function() {
+  function Gzip2(opts, cb) {
+    this.c = crc();
+    this.l = 0;
+    this.v = 1;
+    Deflate.call(this, opts, cb);
+  }
+  Gzip2.prototype.push = function(chunk, final) {
+    this.c.p(chunk);
+    this.l += chunk.length;
+    Deflate.prototype.push.call(this, chunk, final);
+  };
+  Gzip2.prototype.p = function(c2, f2) {
+    var raw = dopt(c2, this.o, this.v && gzhl(this.o), f2 && 8, this.s);
+    if (this.v)
+      gzh(raw, this.o), this.v = 0;
+    if (f2)
+      wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
+    this.ondata(raw, f2);
+  };
+  Gzip2.prototype.flush = function() {
+    Deflate.prototype.flush.call(this);
+  };
+  return Gzip2;
+}();
+var Gunzip = function() {
+  function Gunzip2(opts, cb) {
+    this.v = 1;
+    this.r = 0;
+    Inflate.call(this, opts, cb);
+  }
+  Gunzip2.prototype.push = function(chunk, final) {
+    Inflate.prototype.e.call(this, chunk);
+    this.r += chunk.length;
+    if (this.v) {
+      var p2 = this.p.subarray(this.v - 1);
+      var s2 = p2.length > 3 ? gzs(p2) : 4;
+      if (s2 > p2.length) {
+        if (!final)
+          return;
+      } else if (this.v > 1 && this.onmember) {
+        this.onmember(this.r - p2.length);
+      }
+      this.p = p2.subarray(s2), this.v = 0;
+    }
+    Inflate.prototype.c.call(this, final);
+    if (this.s.f && !this.s.l && !final) {
+      this.v = shft(this.s.p) + 9;
+      this.s = { i: 0 };
+      this.o = new u8(0);
+      this.push(new u8(0), final);
+    }
+  };
+  return Gunzip2;
+}();
+var AsyncGunzip = /* @__PURE__ */ function() {
+  function AsyncGunzip2(opts, cb) {
+    var _this = this;
+    astrmify([
+      bInflt,
+      guze,
+      function() {
+        return [astrm, Inflate, Gunzip];
+      }
+    ], this, StrmOpt.call(this, opts, cb), function(ev) {
+      var strm = new Gunzip(ev.data);
+      strm.onmember = function(offset) {
+        return postMessage(offset);
+      };
+      onmessage = astrm(strm);
+    }, 9, 0, function(offset) {
+      return _this.onmember && _this.onmember(offset);
+    });
+  }
+  return AsyncGunzip2;
+}();
+var Zlib = function() {
+  function Zlib2(opts, cb) {
+    this.c = adler();
+    this.v = 1;
+    Deflate.call(this, opts, cb);
+  }
+  Zlib2.prototype.push = function(chunk, final) {
+    this.c.p(chunk);
+    Deflate.prototype.push.call(this, chunk, final);
+  };
+  Zlib2.prototype.p = function(c2, f2) {
+    var raw = dopt(c2, this.o, this.v && (this.o.dictionary ? 6 : 2), f2 && 4, this.s);
+    if (this.v)
+      zlh(raw, this.o), this.v = 0;
+    if (f2)
+      wbytes(raw, raw.length - 4, this.c.d());
+    this.ondata(raw, f2);
+  };
+  Zlib2.prototype.flush = function() {
+    Deflate.prototype.flush.call(this);
+  };
+  return Zlib2;
+}();
+function zlibSync(data, opts) {
+  if (!opts)
+    opts = {};
+  var a2 = adler();
+  a2.p(data);
+  var d2 = dopt(data, opts, opts.dictionary ? 6 : 2, 4);
+  return zlh(d2, opts), wbytes(d2, d2.length - 4, a2.d()), d2;
+}
+var Unzlib = function() {
+  function Unzlib2(opts, cb) {
+    Inflate.call(this, opts, cb);
+    this.v = opts && opts.dictionary ? 2 : 1;
+  }
+  Unzlib2.prototype.push = function(chunk, final) {
+    Inflate.prototype.e.call(this, chunk);
+    if (this.v) {
+      if (this.p.length < 6 && !final)
+        return;
+      this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;
+    }
+    if (final) {
+      if (this.p.length < 4)
+        err(6, "invalid zlib data");
+      this.p = this.p.subarray(0, -4);
+    }
+    Inflate.prototype.c.call(this, final);
+  };
+  return Unzlib2;
+}();
+var AsyncUnzlib = /* @__PURE__ */ function() {
+  function AsyncUnzlib2(opts, cb) {
+    astrmify([
+      bInflt,
+      zule,
+      function() {
+        return [astrm, Inflate, Unzlib];
+      }
+    ], this, StrmOpt.call(this, opts, cb), function(ev) {
+      var strm = new Unzlib(ev.data);
+      onmessage = astrm(strm);
+    }, 11, 0);
+  }
+  return AsyncUnzlib2;
+}();
+function unzlibSync(data, opts) {
+  return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+var Decompress = function() {
+  function Decompress2(opts, cb) {
+    this.o = StrmOpt.call(this, opts, cb) || {};
+    this.G = Gunzip;
+    this.I = Inflate;
+    this.Z = Unzlib;
+  }
+  Decompress2.prototype.i = function() {
+    var _this = this;
+    this.s.ondata = function(dat, final) {
+      _this.ondata(dat, final);
+    };
+  };
+  Decompress2.prototype.push = function(chunk, final) {
+    if (!this.ondata)
+      err(5);
+    if (!this.s) {
+      if (this.p && this.p.length) {
+        var n2 = new u8(this.p.length + chunk.length);
+        n2.set(this.p), n2.set(chunk, this.p.length);
+      } else
+        this.p = chunk;
+      if (this.p.length > 2) {
+        this.s = this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8 ? new this.G(this.o) : (this.p[0] & 15) != 8 || this.p[0] >> 4 > 7 || (this.p[0] << 8 | this.p[1]) % 31 ? new this.I(this.o) : new this.Z(this.o);
+        this.i();
+        this.s.push(this.p, final);
+        this.p = null;
+      }
+    } else
+      this.s.push(chunk, final);
+  };
+  return Decompress2;
+}();
+var AsyncDecompress = function() {
+  function AsyncDecompress2(opts, cb) {
+    Decompress.call(this, opts, cb);
+    this.queuedSize = 0;
+    this.G = AsyncGunzip;
+    this.I = AsyncInflate;
+    this.Z = AsyncUnzlib;
+  }
+  AsyncDecompress2.prototype.i = function() {
+    var _this = this;
+    this.s.ondata = function(err2, dat, final) {
+      _this.ondata(err2, dat, final);
+    };
+    this.s.ondrain = function(size) {
+      _this.queuedSize -= size;
+      if (_this.ondrain)
+        _this.ondrain(size);
+    };
+  };
+  AsyncDecompress2.prototype.push = function(chunk, final) {
+    this.queuedSize += chunk.length;
+    Decompress.prototype.push.call(this, chunk, final);
+  };
+  return AsyncDecompress2;
+}();
+var te = typeof TextEncoder != "undefined" && new TextEncoder();
+var td = typeof TextDecoder != "undefined" && new TextDecoder();
+var tds = 0;
+try {
+  td.decode(et, { stream: true });
+  tds = 1;
+} catch (e) {
+}
+var dutf8 = function(d2) {
+  for (var r = "", i2 = 0; ; ) {
+    var c2 = d2[i2++];
+    var eb = (c2 > 127) + (c2 > 223) + (c2 > 239);
+    if (i2 + eb > d2.length)
+      return { s: r, r: slc(d2, i2 - 1) };
+    if (!eb)
+      r += String.fromCharCode(c2);
+    else if (eb == 3) {
+      c2 = ((c2 & 15) << 18 | (d2[i2++] & 63) << 12 | (d2[i2++] & 63) << 6 | d2[i2++] & 63) - 65536, r += String.fromCharCode(55296 | c2 >> 10, 56320 | c2 & 1023);
+    } else if (eb & 1)
+      r += String.fromCharCode((c2 & 31) << 6 | d2[i2++] & 63);
+    else
+      r += String.fromCharCode((c2 & 15) << 12 | (d2[i2++] & 63) << 6 | d2[i2++] & 63);
+  }
+};
+var DecodeUTF8 = function() {
+  function DecodeUTF82(cb) {
+    this.ondata = cb;
+    if (tds)
+      this.t = new TextDecoder();
+    else
+      this.p = et;
+  }
+  DecodeUTF82.prototype.push = function(chunk, final) {
+    if (!this.ondata)
+      err(5);
+    final = !!final;
+    if (this.t) {
+      this.ondata(this.t.decode(chunk, { stream: true }), final);
+      if (final) {
+        if (this.t.decode().length)
+          err(8);
+        this.t = null;
+      }
+      return;
+    }
+    if (!this.p)
+      err(4);
+    var dat = new u8(this.p.length + chunk.length);
+    dat.set(this.p);
+    dat.set(chunk, this.p.length);
+    var _a2 = dutf8(dat), s2 = _a2.s, r = _a2.r;
+    if (final) {
+      if (r.length)
+        err(8);
+      this.p = null;
+    } else
+      this.p = r;
+    this.ondata(s2, final);
+  };
+  return DecodeUTF82;
+}();
+var EncodeUTF8 = function() {
+  function EncodeUTF82(cb) {
+    this.ondata = cb;
+  }
+  EncodeUTF82.prototype.push = function(chunk, final) {
+    if (!this.ondata)
+      err(5);
+    if (this.d)
+      err(4);
+    this.ondata(strToU8(chunk), this.d = final || false);
+  };
+  return EncodeUTF82;
+}();
+function strToU8(str, latin1) {
+  if (latin1) {
+    var ar_1 = new u8(str.length);
+    for (var i2 = 0; i2 < str.length; ++i2)
+      ar_1[i2] = str.charCodeAt(i2);
+    return ar_1;
+  }
+  if (te)
+    return te.encode(str);
+  var l2 = str.length;
+  var ar = new u8(str.length + (str.length >> 1));
+  var ai = 0;
+  var w2 = function(v2) {
+    ar[ai++] = v2;
+  };
+  for (var i2 = 0; i2 < l2; ++i2) {
+    if (ai + 5 > ar.length) {
+      var n2 = new u8(ai + 8 + (l2 - i2 << 1));
+      n2.set(ar);
+      ar = n2;
+    }
+    var c2 = str.charCodeAt(i2);
+    if (c2 < 128 || latin1)
+      w2(c2);
+    else if (c2 < 2048)
+      w2(192 | c2 >> 6), w2(128 | c2 & 63);
+    else if (c2 > 55295 && c2 < 57344)
+      c2 = 65536 + (c2 & 1023 << 10) | str.charCodeAt(++i2) & 1023, w2(240 | c2 >> 18), w2(128 | c2 >> 12 & 63), w2(128 | c2 >> 6 & 63), w2(128 | c2 & 63);
+    else
+      w2(224 | c2 >> 12), w2(128 | c2 >> 6 & 63), w2(128 | c2 & 63);
+  }
+  return slc(ar, 0, ai);
+}
+function strFromU8(dat, latin1) {
+  if (latin1) {
+    var r = "";
+    for (var i2 = 0; i2 < dat.length; i2 += 16384)
+      r += String.fromCharCode.apply(null, dat.subarray(i2, i2 + 16384));
+    return r;
+  } else if (td) {
+    return td.decode(dat);
+  } else {
+    var _a2 = dutf8(dat), s2 = _a2.s, r = _a2.r;
+    if (r.length)
+      err(8);
+    return s2;
+  }
+}
+var dbf = function(l2) {
+  return l2 == 1 ? 3 : l2 < 6 ? 2 : l2 == 9 ? 1 : 0;
+};
+var z64e = function(d2, b3) {
+  for (; b2(d2, b3) != 1; b3 += 4 + b2(d2, b3 + 2))
+    ;
+  return [b8(d2, b3 + 12), b8(d2, b3 + 4), b8(d2, b3 + 20)];
+};
+var exfl = function(ex) {
+  var le2 = 0;
+  if (ex) {
+    for (var k2 in ex) {
+      var l2 = ex[k2].length;
+      if (l2 > 65535)
+        err(9);
+      le2 += l2 + 4;
+    }
+  }
+  return le2;
+};
+var wzh = function(d2, b3, f2, fn, u2, c2, ce2, co) {
+  var fl2 = fn.length, ex = f2.extra, col = co && co.length;
+  var exl = exfl(ex);
+  wbytes(d2, b3, ce2 != null ? 33639248 : 67324752), b3 += 4;
+  if (ce2 != null)
+    d2[b3++] = 20, d2[b3++] = f2.os;
+  d2[b3] = 20, b3 += 2;
+  d2[b3++] = f2.flag << 1 | (c2 < 0 && 8), d2[b3++] = u2 && 8;
+  d2[b3++] = f2.compression & 255, d2[b3++] = f2.compression >> 8;
+  var dt2 = new Date(f2.mtime == null ? Date.now() : f2.mtime), y2 = dt2.getFullYear() - 1980;
+  if (y2 < 0 || y2 > 119)
+    err(10);
+  wbytes(d2, b3, y2 << 25 | dt2.getMonth() + 1 << 21 | dt2.getDate() << 16 | dt2.getHours() << 11 | dt2.getMinutes() << 5 | dt2.getSeconds() >> 1), b3 += 4;
+  if (c2 != -1) {
+    wbytes(d2, b3, f2.crc);
+    wbytes(d2, b3 + 4, c2 < 0 ? -c2 - 2 : c2);
+    wbytes(d2, b3 + 8, f2.size);
+  }
+  wbytes(d2, b3 + 12, fl2);
+  wbytes(d2, b3 + 14, exl), b3 += 16;
+  if (ce2 != null) {
+    wbytes(d2, b3, col);
+    wbytes(d2, b3 + 6, f2.attrs);
+    wbytes(d2, b3 + 10, ce2), b3 += 14;
+  }
+  d2.set(fn, b3);
+  b3 += fl2;
+  if (exl) {
+    for (var k2 in ex) {
+      var exf = ex[k2], l2 = exf.length;
+      wbytes(d2, b3, +k2);
+      wbytes(d2, b3 + 2, l2);
+      d2.set(exf, b3 + 4), b3 += 4 + l2;
+    }
+  }
+  if (col)
+    d2.set(co, b3), b3 += col;
+  return b3;
+};
+var wzf = function(o2, b3, c2, d2, e) {
+  wbytes(o2, b3, 101010256);
+  wbytes(o2, b3 + 8, c2);
+  wbytes(o2, b3 + 10, c2);
+  wbytes(o2, b3 + 12, d2);
+  wbytes(o2, b3 + 16, e);
+};
+var ZipPassThrough = function() {
+  function ZipPassThrough2(filename) {
+    this.filename = filename;
+    this.c = crc();
+    this.size = 0;
+    this.compression = 0;
+  }
+  ZipPassThrough2.prototype.process = function(chunk, final) {
+    this.ondata(null, chunk, final);
+  };
+  ZipPassThrough2.prototype.push = function(chunk, final) {
+    if (!this.ondata)
+      err(5);
+    this.c.p(chunk);
+    this.size += chunk.length;
+    if (final)
+      this.crc = this.c.d();
+    this.process(chunk, final || false);
+  };
+  return ZipPassThrough2;
+}();
+var ZipDeflate = function() {
+  function ZipDeflate2(filename, opts) {
+    var _this = this;
+    if (!opts)
+      opts = {};
+    ZipPassThrough.call(this, filename);
+    this.d = new Deflate(opts, function(dat, final) {
+      _this.ondata(null, dat, final);
+    });
+    this.compression = 8;
+    this.flag = dbf(opts.level);
+  }
+  ZipDeflate2.prototype.process = function(chunk, final) {
+    try {
+      this.d.push(chunk, final);
+    } catch (e) {
+      this.ondata(e, null, final);
+    }
+  };
+  ZipDeflate2.prototype.push = function(chunk, final) {
+    ZipPassThrough.prototype.push.call(this, chunk, final);
+  };
+  return ZipDeflate2;
+}();
+var AsyncZipDeflate = function() {
+  function AsyncZipDeflate2(filename, opts) {
+    var _this = this;
+    if (!opts)
+      opts = {};
+    ZipPassThrough.call(this, filename);
+    this.d = new AsyncDeflate(opts, function(err2, dat, final) {
+      _this.ondata(err2, dat, final);
+    });
+    this.compression = 8;
+    this.flag = dbf(opts.level);
+    this.terminate = this.d.terminate;
+  }
+  AsyncZipDeflate2.prototype.process = function(chunk, final) {
+    this.d.push(chunk, final);
+  };
+  AsyncZipDeflate2.prototype.push = function(chunk, final) {
+    ZipPassThrough.prototype.push.call(this, chunk, final);
+  };
+  return AsyncZipDeflate2;
+}();
+var Zip = function() {
+  function Zip2(cb) {
+    this.ondata = cb;
+    this.u = [];
+    this.d = 1;
+  }
+  Zip2.prototype.add = function(file) {
+    var _this = this;
+    if (!this.ondata)
+      err(5);
+    if (this.d & 2)
+      this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);
+    else {
+      var f2 = strToU8(file.filename), fl_1 = f2.length;
+      var com = file.comment, o2 = com && strToU8(com);
+      var u2 = fl_1 != file.filename.length || o2 && com.length != o2.length;
+      var hl_1 = fl_1 + exfl(file.extra) + 30;
+      if (fl_1 > 65535)
+        this.ondata(err(11, 0, 1), null, false);
+      var header = new u8(hl_1);
+      wzh(header, 0, file, f2, u2, -1);
+      var chks_1 = [header];
+      var pAll_1 = function() {
+        for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {
+          var chk = chks_2[_i];
+          _this.ondata(null, chk, false);
+        }
+        chks_1 = [];
+      };
+      var tr_1 = this.d;
+      this.d = 0;
+      var ind_1 = this.u.length;
+      var uf_1 = mrg(file, {
+        f: f2,
+        u: u2,
+        o: o2,
+        t: function() {
+          if (file.terminate)
+            file.terminate();
+        },
+        r: function() {
+          pAll_1();
+          if (tr_1) {
+            var nxt = _this.u[ind_1 + 1];
+            if (nxt)
+              nxt.r();
+            else
+              _this.d = 1;
+          }
+          tr_1 = 1;
+        }
+      });
+      var cl_1 = 0;
+      file.ondata = function(err2, dat, final) {
+        if (err2) {
+          _this.ondata(err2, dat, final);
+          _this.terminate();
+        } else {
+          cl_1 += dat.length;
+          chks_1.push(dat);
+          if (final) {
+            var dd = new u8(16);
+            wbytes(dd, 0, 134695760);
+            wbytes(dd, 4, file.crc);
+            wbytes(dd, 8, cl_1);
+            wbytes(dd, 12, file.size);
+            chks_1.push(dd);
+            uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;
+            if (tr_1)
+              uf_1.r();
+            tr_1 = 1;
+          } else if (tr_1)
+            pAll_1();
+        }
+      };
+      this.u.push(uf_1);
+    }
+  };
+  Zip2.prototype.end = function() {
+    var _this = this;
+    if (this.d & 2) {
+      this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);
+      return;
+    }
+    if (this.d)
+      this.e();
+    else
+      this.u.push({
+        r: function() {
+          if (!(_this.d & 1))
+            return;
+          _this.u.splice(-1, 1);
+          _this.e();
+        },
+        t: function() {
+        }
+      });
+    this.d = 3;
+  };
+  Zip2.prototype.e = function() {
+    var bt2 = 0, l2 = 0, tl = 0;
+    for (var _i = 0, _a2 = this.u; _i < _a2.length; _i++) {
+      var f2 = _a2[_i];
+      tl += 46 + f2.f.length + exfl(f2.extra) + (f2.o ? f2.o.length : 0);
+    }
+    var out = new u8(tl + 22);
+    for (var _b2 = 0, _c = this.u; _b2 < _c.length; _b2++) {
+      var f2 = _c[_b2];
+      wzh(out, bt2, f2, f2.f, f2.u, -f2.c - 2, l2, f2.o);
+      bt2 += 46 + f2.f.length + exfl(f2.extra) + (f2.o ? f2.o.length : 0), l2 += f2.b;
+    }
+    wzf(out, bt2, this.u.length, tl, l2);
+    this.ondata(null, out, true);
+    this.d = 2;
+  };
+  Zip2.prototype.terminate = function() {
+    for (var _i = 0, _a2 = this.u; _i < _a2.length; _i++) {
+      var f2 = _a2[_i];
+      f2.t();
+    }
+    this.d = 2;
+  };
+  return Zip2;
+}();
+var UnzipPassThrough = function() {
+  function UnzipPassThrough2() {
+  }
+  UnzipPassThrough2.prototype.push = function(data, final) {
+    this.ondata(null, data, final);
+  };
+  UnzipPassThrough2.compression = 0;
+  return UnzipPassThrough2;
+}();
+var UnzipInflate = function() {
+  function UnzipInflate2() {
+    var _this = this;
+    this.i = new Inflate(function(dat, final) {
+      _this.ondata(null, dat, final);
+    });
+  }
+  UnzipInflate2.prototype.push = function(data, final) {
+    try {
+      this.i.push(data, final);
+    } catch (e) {
+      this.ondata(e, null, final);
+    }
+  };
+  UnzipInflate2.compression = 8;
+  return UnzipInflate2;
+}();
+var AsyncUnzipInflate = function() {
+  function AsyncUnzipInflate2(_2, sz) {
+    var _this = this;
+    if (sz < 32e4) {
+      this.i = new Inflate(function(dat, final) {
+        _this.ondata(null, dat, final);
+      });
+    } else {
+      this.i = new AsyncInflate(function(err2, dat, final) {
+        _this.ondata(err2, dat, final);
+      });
+      this.terminate = this.i.terminate;
+    }
+  }
+  AsyncUnzipInflate2.prototype.push = function(data, final) {
+    if (this.i.terminate)
+      data = slc(data, 0);
+    this.i.push(data, final);
+  };
+  AsyncUnzipInflate2.compression = 8;
+  return AsyncUnzipInflate2;
+}();
+var Unzip = function() {
+  function Unzip2(cb) {
+    this.onfile = cb;
+    this.k = [];
+    this.o = {
+      0: UnzipPassThrough
+    };
+    this.p = et;
+  }
+  Unzip2.prototype.push = function(chunk, final) {
+    var _this = this;
+    if (!this.onfile)
+      err(5);
+    if (!this.p)
+      err(4);
+    if (this.c > 0) {
+      var len = Math.min(this.c, chunk.length);
+      var toAdd = chunk.subarray(0, len);
+      this.c -= len;
+      if (this.d)
+        this.d.push(toAdd, !this.c);
+      else
+        this.k[0].push(toAdd);
+      chunk = chunk.subarray(len);
+      if (chunk.length)
+        return this.push(chunk, final);
+    } else {
+      var f2 = 0, i2 = 0, is = void 0, buf = void 0;
+      if (!this.p.length)
+        buf = chunk;
+      else if (!chunk.length)
+        buf = this.p;
+      else {
+        buf = new u8(this.p.length + chunk.length);
+        buf.set(this.p), buf.set(chunk, this.p.length);
+      }
+      var l2 = buf.length, oc = this.c, add = oc && this.d;
+      var _loop_2 = function() {
+        var _a2;
+        var sig = b4(buf, i2);
+        if (sig == 67324752) {
+          f2 = 1, is = i2;
+          this_1.d = null;
+          this_1.c = 0;
+          var bf = b2(buf, i2 + 6), cmp_1 = b2(buf, i2 + 8), u2 = bf & 2048, dd = bf & 8, fnl = b2(buf, i2 + 26), es = b2(buf, i2 + 28);
+          if (l2 > i2 + 30 + fnl + es) {
+            var chks_3 = [];
+            this_1.k.unshift(chks_3);
+            f2 = 2;
+            var sc_1 = b4(buf, i2 + 18), su_1 = b4(buf, i2 + 22);
+            var fn_1 = strFromU8(buf.subarray(i2 + 30, i2 += 30 + fnl), !u2);
+            if (sc_1 == 4294967295) {
+              _a2 = dd ? [-2] : z64e(buf, i2), sc_1 = _a2[0], su_1 = _a2[1];
+            } else if (dd)
+              sc_1 = -1;
+            i2 += es;
+            this_1.c = sc_1;
+            var d_1;
+            var file_1 = {
+              name: fn_1,
+              compression: cmp_1,
+              start: function() {
+                if (!file_1.ondata)
+                  err(5);
+                if (!sc_1)
+                  file_1.ondata(null, et, true);
+                else {
+                  var ctr = _this.o[cmp_1];
+                  if (!ctr)
+                    file_1.ondata(err(14, "unknown compression type " + cmp_1, 1), null, false);
+                  d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
+                  d_1.ondata = function(err2, dat3, final2) {
+                    file_1.ondata(err2, dat3, final2);
+                  };
+                  for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {
+                    var dat2 = chks_4[_i];
+                    d_1.push(dat2, false);
+                  }
+                  if (_this.k[0] == chks_3 && _this.c)
+                    _this.d = d_1;
+                  else
+                    d_1.push(et, true);
+                }
+              },
+              terminate: function() {
+                if (d_1 && d_1.terminate)
+                  d_1.terminate();
+              }
+            };
+            if (sc_1 >= 0)
+              file_1.size = sc_1, file_1.originalSize = su_1;
+            this_1.onfile(file_1);
+          }
+          return "break";
+        } else if (oc) {
+          if (sig == 134695760) {
+            is = i2 += 12 + (oc == -2 && 8), f2 = 3, this_1.c = 0;
+            return "break";
+          } else if (sig == 33639248) {
+            is = i2 -= 4, f2 = 3, this_1.c = 0;
+            return "break";
+          }
+        }
+      };
+      var this_1 = this;
+      for (; i2 < l2 - 4; ++i2) {
+        var state_1 = _loop_2();
+        if (state_1 === "break")
+          break;
+      }
+      this.p = et;
+      if (oc < 0) {
+        var dat = f2 ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 134695760 && 4)) : buf.subarray(0, i2);
+        if (add)
+          add.push(dat, !!f2);
+        else
+          this.k[+(f2 == 2)].push(dat);
+      }
+      if (f2 & 2)
+        return this.push(buf.subarray(i2), final);
+      this.p = buf.subarray(i2);
+    }
+    if (final) {
+      if (this.c)
+        err(13);
+      this.p = null;
+    }
+  };
+  Unzip2.prototype.register = function(decoder) {
+    this.o[decoder.compression] = decoder;
+  };
+  return Unzip2;
+}();
+
+// node_modules/jspdf/dist/jspdf.es.min.js
+var n = /* @__PURE__ */ function() {
+  return "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this;
+}();
+function i() {
+  n.console && "function" == typeof n.console.log && n.console.log.apply(n.console, arguments);
+}
+var a = { log: i, warn: function(t2) {
+  n.console && ("function" == typeof n.console.warn ? n.console.warn.apply(n.console, arguments) : i.call(null, arguments));
+}, error: function(t2) {
+  n.console && ("function" == typeof n.console.error ? n.console.error.apply(n.console, arguments) : i(t2));
+} };
+function o(t2, e, r) {
+  var n2 = new XMLHttpRequest();
+  n2.open("GET", t2), n2.responseType = "blob", n2.onload = function() {
+    l(n2.response, e, r);
+  }, n2.onerror = function() {
+    a.error("could not download file");
+  }, n2.send();
+}
+function s(t2) {
+  var e = new XMLHttpRequest();
+  e.open("HEAD", t2, false);
+  try {
+    e.send();
+  } catch (t3) {
+  }
+  return e.status >= 200 && e.status <= 299;
+}
+function c(t2) {
+  try {
+    t2.dispatchEvent(new MouseEvent("click"));
+  } catch (r) {
+    var e = document.createEvent("MouseEvents");
+    e.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null), t2.dispatchEvent(e);
+  }
+}
+var u;
+var h;
+var l = n.saveAs || ("object" !== ("undefined" == typeof window ? "undefined" : _typeof(window)) || window !== n ? function() {
+} : "undefined" != typeof HTMLAnchorElement && "download" in HTMLAnchorElement.prototype ? function(t2, e, r) {
+  var i2 = n.URL || n.webkitURL, a2 = document.createElement("a");
+  e = e || t2.name || "download", a2.download = e, a2.rel = "noopener", "string" == typeof t2 ? (a2.href = t2, a2.origin !== location.origin ? s(a2.href) ? o(t2, e, r) : c(a2, a2.target = "_blank") : c(a2)) : (a2.href = i2.createObjectURL(t2), setTimeout(function() {
+    i2.revokeObjectURL(a2.href);
+  }, 4e4), setTimeout(function() {
+    c(a2);
+  }, 0));
+} : "msSaveOrOpenBlob" in navigator ? function(e, r, n2) {
+  if (r = r || e.name || "download", "string" == typeof e) if (s(e)) o(e, r, n2);
+  else {
+    var i2 = document.createElement("a");
+    i2.href = e, i2.target = "_blank", setTimeout(function() {
+      c(i2);
+    });
+  }
+  else navigator.msSaveOrOpenBlob(function(e2, r2) {
+    return void 0 === r2 ? r2 = { autoBom: false } : "object" !== _typeof(r2) && (a.warn("Deprecated: Expected third argument to be a object"), r2 = { autoBom: !r2 }), r2.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e2.type) ? new Blob([String.fromCharCode(65279), e2], { type: e2.type }) : e2;
+  }(e, n2), r);
+} : function(e, r, i2, a2) {
+  if ((a2 = a2 || open("", "_blank")) && (a2.document.title = a2.document.body.innerText = "downloading..."), "string" == typeof e) return o(e, r, i2);
+  var s2 = "application/octet-stream" === e.type, c2 = /constructor/i.test(n.HTMLElement) || n.safari, u2 = /CriOS\/[\d]+/.test(navigator.userAgent);
+  if ((u2 || s2 && c2) && "object" === ("undefined" == typeof FileReader ? "undefined" : _typeof(FileReader))) {
+    var h2 = new FileReader();
+    h2.onloadend = function() {
+      var t2 = h2.result;
+      t2 = u2 ? t2 : t2.replace(/^data:[^;]*;/, "data:attachment/file;"), a2 ? a2.location.href = t2 : location = t2, a2 = null;
+    }, h2.readAsDataURL(e);
+  } else {
+    var l2 = n.URL || n.webkitURL, f2 = l2.createObjectURL(e);
+    a2 ? a2.location = f2 : location.href = f2, a2 = null, setTimeout(function() {
+      l2.revokeObjectURL(f2);
+    }, 4e4);
+  }
+});
+function f(t2) {
+  var e;
+  t2 = t2 || "", this.ok = false, "#" == t2.charAt(0) && (t2 = t2.substr(1, 6));
+  t2 = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "00ffff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000000", blanchedalmond: "ffebcd", blue: "0000ff", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "00ffff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dodgerblue: "1e90ff", feldspar: "d19275", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "ff00ff", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgrey: "d3d3d3", lightgreen: "90ee90", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslateblue: "8470ff", lightslategray: "778899", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "00ff00", limegreen: "32cd32", linen: "faf0e6", magenta: "ff00ff", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370d8", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "d87093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", red: "ff0000", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", violetred: "d02090", wheat: "f5deb3", white: "ffffff", whitesmoke: "f5f5f5", yellow: "ffff00", yellowgreen: "9acd32" }[t2 = (t2 = t2.replace(/ /g, "")).toLowerCase()] || t2;
+  for (var r = [{ re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, example: ["rgb(123, 234, 45)", "rgb(255,234,245)"], process: function(t3) {
+    return [parseInt(t3[1]), parseInt(t3[2]), parseInt(t3[3])];
+  } }, { re: /^(\w{2})(\w{2})(\w{2})$/, example: ["#00ff00", "336699"], process: function(t3) {
+    return [parseInt(t3[1], 16), parseInt(t3[2], 16), parseInt(t3[3], 16)];
+  } }, { re: /^(\w{1})(\w{1})(\w{1})$/, example: ["#fb0", "f0f"], process: function(t3) {
+    return [parseInt(t3[1] + t3[1], 16), parseInt(t3[2] + t3[2], 16), parseInt(t3[3] + t3[3], 16)];
+  } }], n2 = 0; n2 < r.length; n2++) {
+    var i2 = r[n2].re, a2 = r[n2].process, o2 = i2.exec(t2);
+    o2 && (e = a2(o2), this.r = e[0], this.g = e[1], this.b = e[2], this.ok = true);
+  }
+  this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r, this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g, this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b, this.toRGB = function() {
+    return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")";
+  }, this.toHex = function() {
+    var t3 = this.r.toString(16), e2 = this.g.toString(16), r2 = this.b.toString(16);
+    return 1 == t3.length && (t3 = "0" + t3), 1 == e2.length && (e2 = "0" + e2), 1 == r2.length && (r2 = "0" + r2), "#" + t3 + e2 + r2;
+  };
+}
+function d(t2, e) {
+  var r = t2[0], n2 = t2[1], i2 = t2[2], a2 = t2[3];
+  r = g(r, n2, i2, a2, e[0], 7, -680876936), a2 = g(a2, r, n2, i2, e[1], 12, -389564586), i2 = g(i2, a2, r, n2, e[2], 17, 606105819), n2 = g(n2, i2, a2, r, e[3], 22, -1044525330), r = g(r, n2, i2, a2, e[4], 7, -176418897), a2 = g(a2, r, n2, i2, e[5], 12, 1200080426), i2 = g(i2, a2, r, n2, e[6], 17, -1473231341), n2 = g(n2, i2, a2, r, e[7], 22, -45705983), r = g(r, n2, i2, a2, e[8], 7, 1770035416), a2 = g(a2, r, n2, i2, e[9], 12, -1958414417), i2 = g(i2, a2, r, n2, e[10], 17, -42063), n2 = g(n2, i2, a2, r, e[11], 22, -1990404162), r = g(r, n2, i2, a2, e[12], 7, 1804603682), a2 = g(a2, r, n2, i2, e[13], 12, -40341101), i2 = g(i2, a2, r, n2, e[14], 17, -1502002290), r = m(r, n2 = g(n2, i2, a2, r, e[15], 22, 1236535329), i2, a2, e[1], 5, -165796510), a2 = m(a2, r, n2, i2, e[6], 9, -1069501632), i2 = m(i2, a2, r, n2, e[11], 14, 643717713), n2 = m(n2, i2, a2, r, e[0], 20, -373897302), r = m(r, n2, i2, a2, e[5], 5, -701558691), a2 = m(a2, r, n2, i2, e[10], 9, 38016083), i2 = m(i2, a2, r, n2, e[15], 14, -660478335), n2 = m(n2, i2, a2, r, e[4], 20, -405537848), r = m(r, n2, i2, a2, e[9], 5, 568446438), a2 = m(a2, r, n2, i2, e[14], 9, -1019803690), i2 = m(i2, a2, r, n2, e[3], 14, -187363961), n2 = m(n2, i2, a2, r, e[8], 20, 1163531501), r = m(r, n2, i2, a2, e[13], 5, -1444681467), a2 = m(a2, r, n2, i2, e[2], 9, -51403784), i2 = m(i2, a2, r, n2, e[7], 14, 1735328473), r = v(r, n2 = m(n2, i2, a2, r, e[12], 20, -1926607734), i2, a2, e[5], 4, -378558), a2 = v(a2, r, n2, i2, e[8], 11, -2022574463), i2 = v(i2, a2, r, n2, e[11], 16, 1839030562), n2 = v(n2, i2, a2, r, e[14], 23, -35309556), r = v(r, n2, i2, a2, e[1], 4, -1530992060), a2 = v(a2, r, n2, i2, e[4], 11, 1272893353), i2 = v(i2, a2, r, n2, e[7], 16, -155497632), n2 = v(n2, i2, a2, r, e[10], 23, -1094730640), r = v(r, n2, i2, a2, e[13], 4, 681279174), a2 = v(a2, r, n2, i2, e[0], 11, -358537222), i2 = v(i2, a2, r, n2, e[3], 16, -722521979), n2 = v(n2, i2, a2, r, e[6], 23, 76029189), r = v(r, n2, i2, a2, e[9], 4, -640364487), a2 = v(a2, r, n2, i2, e[12], 11, -421815835), i2 = v(i2, a2, r, n2, e[15], 16, 530742520), r = b(r, n2 = v(n2, i2, a2, r, e[2], 23, -995338651), i2, a2, e[0], 6, -198630844), a2 = b(a2, r, n2, i2, e[7], 10, 1126891415), i2 = b(i2, a2, r, n2, e[14], 15, -1416354905), n2 = b(n2, i2, a2, r, e[5], 21, -57434055), r = b(r, n2, i2, a2, e[12], 6, 1700485571), a2 = b(a2, r, n2, i2, e[3], 10, -1894986606), i2 = b(i2, a2, r, n2, e[10], 15, -1051523), n2 = b(n2, i2, a2, r, e[1], 21, -2054922799), r = b(r, n2, i2, a2, e[8], 6, 1873313359), a2 = b(a2, r, n2, i2, e[15], 10, -30611744), i2 = b(i2, a2, r, n2, e[6], 15, -1560198380), n2 = b(n2, i2, a2, r, e[13], 21, 1309151649), r = b(r, n2, i2, a2, e[4], 6, -145523070), a2 = b(a2, r, n2, i2, e[11], 10, -1120210379), i2 = b(i2, a2, r, n2, e[2], 15, 718787259), n2 = b(n2, i2, a2, r, e[9], 21, -343485551), t2[0] = _(r, t2[0]), t2[1] = _(n2, t2[1]), t2[2] = _(i2, t2[2]), t2[3] = _(a2, t2[3]);
+}
+function p(t2, e, r, n2, i2, a2) {
+  return e = _(_(e, t2), _(n2, a2)), _(e << i2 | e >>> 32 - i2, r);
+}
+function g(t2, e, r, n2, i2, a2, o2) {
+  return p(e & r | ~e & n2, t2, e, i2, a2, o2);
+}
+function m(t2, e, r, n2, i2, a2, o2) {
+  return p(e & n2 | r & ~n2, t2, e, i2, a2, o2);
+}
+function v(t2, e, r, n2, i2, a2, o2) {
+  return p(e ^ r ^ n2, t2, e, i2, a2, o2);
+}
+function b(t2, e, r, n2, i2, a2, o2) {
+  return p(r ^ (e | ~n2), t2, e, i2, a2, o2);
+}
+function y(t2) {
+  var e, r = t2.length, n2 = [1732584193, -271733879, -1732584194, 271733878];
+  for (e = 64; e <= t2.length; e += 64) d(n2, w(t2.substring(e - 64, e)));
+  t2 = t2.substring(e - 64);
+  var i2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+  for (e = 0; e < t2.length; e++) i2[e >> 2] |= t2.charCodeAt(e) << (e % 4 << 3);
+  if (i2[e >> 2] |= 128 << (e % 4 << 3), e > 55) for (d(n2, i2), e = 0; e < 16; e++) i2[e] = 0;
+  return i2[14] = 8 * r, d(n2, i2), n2;
+}
+function w(t2) {
+  var e, r = [];
+  for (e = 0; e < 64; e += 4) r[e >> 2] = t2.charCodeAt(e) + (t2.charCodeAt(e + 1) << 8) + (t2.charCodeAt(e + 2) << 16) + (t2.charCodeAt(e + 3) << 24);
+  return r;
+}
+u = n.atob.bind(n), h = n.btoa.bind(n);
+var N = "0123456789abcdef".split("");
+function L(t2) {
+  for (var e = "", r = 0; r < 4; r++) e += N[t2 >> 8 * r + 4 & 15] + N[t2 >> 8 * r & 15];
+  return e;
+}
+function A(t2) {
+  return String.fromCharCode((255 & t2) >> 0, (65280 & t2) >> 8, (16711680 & t2) >> 16, (4278190080 & t2) >> 24);
+}
+function x(t2) {
+  return y(t2).map(A).join("");
+}
+var S = "5d41402abc4b2a76b9719d911017c592" != function(t2) {
+  for (var e = 0; e < t2.length; e++) t2[e] = L(t2[e]);
+  return t2.join("");
+}(y("hello"));
+function _(t2, e) {
+  if (S) {
+    var r = (65535 & t2) + (65535 & e);
+    return (t2 >> 16) + (e >> 16) + (r >> 16) << 16 | 65535 & r;
+  }
+  return t2 + e & 4294967295;
+}
+function P(t2, e) {
+  var r, n2, i2, a2;
+  if (t2 !== r) {
+    for (var o2 = (i2 = t2, a2 = 1 + (256 / t2.length >> 0), new Array(a2 + 1).join(i2)), s2 = [], c2 = 0; c2 < 256; c2++) s2[c2] = c2;
+    var u2 = 0;
+    for (c2 = 0; c2 < 256; c2++) {
+      var h2 = s2[c2];
+      u2 = (u2 + h2 + o2.charCodeAt(c2)) % 256, s2[c2] = s2[u2], s2[u2] = h2;
+    }
+    r = t2, n2 = s2;
+  } else s2 = n2;
+  var l2 = e.length, f2 = 0, d2 = 0, p2 = "";
+  for (c2 = 0; c2 < l2; c2++) d2 = (d2 + (h2 = s2[f2 = (f2 + 1) % 256])) % 256, s2[f2] = s2[d2], s2[d2] = h2, o2 = s2[(s2[f2] + s2[d2]) % 256], p2 += String.fromCharCode(e.charCodeAt(c2) ^ o2);
+  return p2;
+}
+var k = { print: 4, modify: 8, copy: 16, "annot-forms": 32 };
+function I(t2, e, r, n2) {
+  this.v = 1, this.r = 2;
+  var i2 = 192;
+  t2.forEach(function(t3) {
+    if (void 0 !== k.perm) throw new Error("Invalid permission: " + t3);
+    i2 += k[t3];
+  }), this.padding = "(¿N^NuAd\0NVÿú\b..\0¶Ðh>/\f©þdSiz";
+  var a2 = (e + this.padding).substr(0, 32), o2 = (r + this.padding).substr(0, 32);
+  this.O = this.processOwnerPassword(a2, o2), this.P = -(1 + (255 ^ i2)), this.encryptionKey = x(a2 + this.O + this.lsbFirstWord(this.P) + this.hexToBytes(n2)).substr(0, 5), this.U = P(this.encryptionKey, this.padding);
+}
+function F(t2) {
+  if (/[^\u0000-\u00ff]/.test(t2)) throw new Error("Invalid PDF Name Object: " + t2 + ", Only accept ASCII characters.");
+  for (var e = "", r = t2.length, n2 = 0; n2 < r; n2++) {
+    var i2 = t2.charCodeAt(n2);
+    if (i2 < 33 || 35 === i2 || 37 === i2 || 40 === i2 || 41 === i2 || 47 === i2 || 60 === i2 || 62 === i2 || 91 === i2 || 93 === i2 || 123 === i2 || 125 === i2 || i2 > 126) e += "#" + ("0" + i2.toString(16)).slice(-2);
+    else e += t2[n2];
+  }
+  return e;
+}
+function C(e) {
+  if ("object" !== _typeof(e)) throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");
+  var r = {};
+  this.subscribe = function(t2, e2, n2) {
+    if (n2 = n2 || false, "string" != typeof t2 || "function" != typeof e2 || "boolean" != typeof n2) throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");
+    r.hasOwnProperty(t2) || (r[t2] = {});
+    var i2 = Math.random().toString(35);
+    return r[t2][i2] = [e2, !!n2], i2;
+  }, this.unsubscribe = function(t2) {
+    for (var e2 in r) if (r[e2][t2]) return delete r[e2][t2], 0 === Object.keys(r[e2]).length && delete r[e2], true;
+    return false;
+  }, this.publish = function(t2) {
+    if (r.hasOwnProperty(t2)) {
+      var i2 = Array.prototype.slice.call(arguments, 1), o2 = [];
+      for (var s2 in r[t2]) {
+        var c2 = r[t2][s2];
+        try {
+          c2[0].apply(e, i2);
+        } catch (t3) {
+          n.console && a.error("jsPDF PubSub Error", t3.message, t3);
+        }
+        c2[1] && o2.push(s2);
+      }
+      o2.length && o2.forEach(this.unsubscribe);
+    }
+  }, this.getTopics = function() {
+    return r;
+  };
+}
+function j(t2) {
+  if (!(this instanceof j)) return new j(t2);
+  var e = "opacity,stroke-opacity".split(",");
+  for (var r in t2) t2.hasOwnProperty(r) && e.indexOf(r) >= 0 && (this[r] = t2[r]);
+  this.id = "", this.objectNumber = -1;
+}
+function O(t2, e) {
+  this.gState = t2, this.matrix = e, this.id = "", this.objectNumber = -1;
+}
+function B(t2, e, r, n2, i2) {
+  if (!(this instanceof B)) return new B(t2, e, r, n2, i2);
+  this.type = "axial" === t2 ? 2 : 3, this.coords = e, this.colors = r, O.call(this, n2, i2);
+}
+function M(t2, e, r, n2, i2) {
+  if (!(this instanceof M)) return new M(t2, e, r, n2, i2);
+  this.boundingBox = t2, this.xStep = e, this.yStep = r, this.stream = "", this.cloneIndex = 0, O.call(this, n2, i2);
+}
+function E(e) {
+  var r, i2 = "string" == typeof arguments[0] ? arguments[0] : "p", o2 = arguments[1], s2 = arguments[2], c2 = arguments[3], u2 = [], d2 = 1, p2 = 16, g2 = "S", m2 = null;
+  "object" === _typeof(e = e || {}) && (i2 = e.orientation, o2 = e.unit || o2, s2 = e.format || s2, c2 = e.compress || e.compressPdf || c2, null !== (m2 = e.encryption || null) && (m2.userPassword = m2.userPassword || "", m2.ownerPassword = m2.ownerPassword || "", m2.userPermissions = m2.userPermissions || []), d2 = "number" == typeof e.userUnit ? Math.abs(e.userUnit) : 1, void 0 !== e.precision && (r = e.precision), void 0 !== e.floatPrecision && (p2 = e.floatPrecision), g2 = e.defaultPathOperation || "S"), u2 = e.filters || (true === c2 ? ["FlateEncode"] : u2), o2 = o2 || "mm", i2 = ("" + (i2 || "P")).toLowerCase();
+  var v2 = e.putOnlyUsedFonts || false, b3 = {}, y2 = { internal: {}, __private__: {} };
+  y2.__private__.PubSub = C;
+  var w2 = "1.3", N2 = y2.__private__.getPdfVersion = function() {
+    return w2;
+  };
+  y2.__private__.setPdfVersion = function(t2) {
+    w2 = t2;
+  };
+  var L2 = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] };
+  y2.__private__.getPageFormats = function() {
+    return L2;
+  };
+  var A2 = y2.__private__.getPageFormat = function(t2) {
+    return L2[t2];
+  };
+  s2 = s2 || "a4";
+  var x2 = { COMPAT: "compat", ADVANCED: "advanced" }, S2 = x2.COMPAT;
+  function _2() {
+    this.saveGraphicsState(), lt2(new Vt2(_t2, 0, 0, -_t2, 0, Rr() * _t2).toString() + " cm"), this.setFontSize(this.getFontSize() / _t2), g2 = "n", S2 = x2.ADVANCED;
+  }
+  function P2() {
+    this.restoreGraphicsState(), g2 = "S", S2 = x2.COMPAT;
+  }
+  var k2 = y2.__private__.combineFontStyleAndFontWeight = function(t2, e2) {
+    if ("bold" == t2 && "normal" == e2 || "bold" == t2 && 400 == e2 || "normal" == t2 && "italic" == e2 || "bold" == t2 && "italic" == e2) throw new Error("Invalid Combination of fontweight and fontstyle");
+    return e2 && (t2 = 400 == e2 || "normal" === e2 ? "italic" === t2 ? "italic" : "normal" : 700 != e2 && "bold" !== e2 || "normal" !== t2 ? (700 == e2 ? "bold" : e2) + "" + t2 : "bold"), t2;
+  };
+  y2.advancedAPI = function(t2) {
+    var e2 = S2 === x2.COMPAT;
+    return e2 && _2.call(this), "function" != typeof t2 || (t2(this), e2 && P2.call(this)), this;
+  }, y2.compatAPI = function(t2) {
+    var e2 = S2 === x2.ADVANCED;
+    return e2 && P2.call(this), "function" != typeof t2 || (t2(this), e2 && _2.call(this)), this;
+  }, y2.isAdvancedAPI = function() {
+    return S2 === x2.ADVANCED;
+  };
+  var O2, q2 = function(t2) {
+    if (S2 !== x2.ADVANCED) throw new Error(t2 + " is only available in 'advanced' API mode. You need to call advancedAPI() first.");
+  }, D2 = y2.roundToPrecision = y2.__private__.roundToPrecision = function(t2, e2) {
+    var n2 = r || e2;
+    if (isNaN(t2) || isNaN(n2)) throw new Error("Invalid argument passed to jsPDF.roundToPrecision");
+    return t2.toFixed(n2).replace(/0+$/, "");
+  };
+  O2 = y2.hpf = y2.__private__.hpf = "number" == typeof p2 ? function(t2) {
+    if (isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.hpf");
+    return D2(t2, p2);
+  } : "smart" === p2 ? function(t2) {
+    if (isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.hpf");
+    return D2(t2, t2 > -1 && t2 < 1 ? 16 : 5);
+  } : function(t2) {
+    if (isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.hpf");
+    return D2(t2, 16);
+  };
+  var R2 = y2.f2 = y2.__private__.f2 = function(t2) {
+    if (isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.f2");
+    return D2(t2, 2);
+  }, T2 = y2.__private__.f3 = function(t2) {
+    if (isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.f3");
+    return D2(t2, 3);
+  }, U2 = y2.scale = y2.__private__.scale = function(t2) {
+    if (isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.scale");
+    return S2 === x2.COMPAT ? t2 * _t2 : S2 === x2.ADVANCED ? t2 : void 0;
+  }, z2 = function(t2) {
+    return S2 === x2.COMPAT ? Rr() - t2 : S2 === x2.ADVANCED ? t2 : void 0;
+  }, H2 = function(t2) {
+    return U2(z2(t2));
+  };
+  y2.__private__.setPrecision = y2.setPrecision = function(t2) {
+    "number" == typeof parseInt(t2, 10) && (r = parseInt(t2, 10));
+  };
+  var W2, V2 = "00000000000000000000000000000000", G2 = y2.__private__.getFileId = function() {
+    return V2;
+  }, Y2 = y2.__private__.setFileId = function(t2) {
+    return V2 = void 0 !== t2 && /^[a-fA-F0-9]{32}$/.test(t2) ? t2.toUpperCase() : V2.split("").map(function() {
+      return "ABCDEF0123456789".charAt(Math.floor(16 * Math.random()));
+    }).join(""), null !== m2 && (Ye = new I(m2.userPermissions, m2.userPassword, m2.ownerPassword, V2)), V2;
+  };
+  y2.setFileId = function(t2) {
+    return Y2(t2), this;
+  }, y2.getFileId = function() {
+    return G2();
+  };
+  var J2 = y2.__private__.convertDateToPDFDate = function(t2) {
+    var e2 = t2.getTimezoneOffset(), r2 = e2 < 0 ? "+" : "-", n2 = Math.floor(Math.abs(e2 / 60)), i3 = Math.abs(e2 % 60), a2 = [r2, Q2(n2), "'", Q2(i3), "'"].join("");
+    return ["D:", t2.getFullYear(), Q2(t2.getMonth() + 1), Q2(t2.getDate()), Q2(t2.getHours()), Q2(t2.getMinutes()), Q2(t2.getSeconds()), a2].join("");
+  }, X2 = y2.__private__.convertPDFDateToDate = function(t2) {
+    var e2 = parseInt(t2.substr(2, 4), 10), r2 = parseInt(t2.substr(6, 2), 10) - 1, n2 = parseInt(t2.substr(8, 2), 10), i3 = parseInt(t2.substr(10, 2), 10), a2 = parseInt(t2.substr(12, 2), 10), o3 = parseInt(t2.substr(14, 2), 10);
+    return new Date(e2, r2, n2, i3, a2, o3, 0);
+  }, K2 = y2.__private__.setCreationDate = function(t2) {
+    var e2;
+    if (void 0 === t2 && (t2 = /* @__PURE__ */ new Date()), t2 instanceof Date) e2 = J2(t2);
+    else {
+      if (!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(t2)) throw new Error("Invalid argument passed to jsPDF.setCreationDate");
+      e2 = t2;
+    }
+    return W2 = e2;
+  }, Z2 = y2.__private__.getCreationDate = function(t2) {
+    var e2 = W2;
+    return "jsDate" === t2 && (e2 = X2(W2)), e2;
+  };
+  y2.setCreationDate = function(t2) {
+    return K2(t2), this;
+  }, y2.getCreationDate = function(t2) {
+    return Z2(t2);
+  };
+  var $2, Q2 = y2.__private__.padd2 = function(t2) {
+    return ("0" + parseInt(t2)).slice(-2);
+  }, tt2 = y2.__private__.padd2Hex = function(t2) {
+    return ("00" + (t2 = t2.toString())).substr(t2.length);
+  }, et3 = 0, rt2 = [], nt2 = [], it2 = 0, at2 = [], ot2 = [], st2 = false, ct2 = nt2, ut2 = function() {
+    et3 = 0, it2 = 0, nt2 = [], rt2 = [], at2 = [], Qt2 = Kt2(), te3 = Kt2();
+  };
+  y2.__private__.setCustomOutputDestination = function(t2) {
+    st2 = true, ct2 = t2;
+  };
+  var ht2 = function(t2) {
+    st2 || (ct2 = t2);
+  };
+  y2.__private__.resetCustomOutputDestination = function() {
+    st2 = false, ct2 = nt2;
+  };
+  var lt2 = y2.__private__.out = function(t2) {
+    return t2 = t2.toString(), it2 += t2.length + 1, ct2.push(t2), ct2;
+  }, ft2 = y2.__private__.write = function(t2) {
+    return lt2(1 === arguments.length ? t2.toString() : Array.prototype.join.call(arguments, " "));
+  }, dt2 = y2.__private__.getArrayBuffer = function(t2) {
+    for (var e2 = t2.length, r2 = new ArrayBuffer(e2), n2 = new Uint8Array(r2); e2--; ) n2[e2] = t2.charCodeAt(e2);
+    return r2;
+  }, pt2 = [["Helvetica", "helvetica", "normal", "WinAnsiEncoding"], ["Helvetica-Bold", "helvetica", "bold", "WinAnsiEncoding"], ["Helvetica-Oblique", "helvetica", "italic", "WinAnsiEncoding"], ["Helvetica-BoldOblique", "helvetica", "bolditalic", "WinAnsiEncoding"], ["Courier", "courier", "normal", "WinAnsiEncoding"], ["Courier-Bold", "courier", "bold", "WinAnsiEncoding"], ["Courier-Oblique", "courier", "italic", "WinAnsiEncoding"], ["Courier-BoldOblique", "courier", "bolditalic", "WinAnsiEncoding"], ["Times-Roman", "times", "normal", "WinAnsiEncoding"], ["Times-Bold", "times", "bold", "WinAnsiEncoding"], ["Times-Italic", "times", "italic", "WinAnsiEncoding"], ["Times-BoldItalic", "times", "bolditalic", "WinAnsiEncoding"], ["ZapfDingbats", "zapfdingbats", "normal", null], ["Symbol", "symbol", "normal", null]];
+  y2.__private__.getStandardFonts = function() {
+    return pt2;
+  };
+  var gt2 = e.fontSize || 16;
+  y2.__private__.setFontSize = y2.setFontSize = function(t2) {
+    return gt2 = S2 === x2.ADVANCED ? t2 / _t2 : t2, this;
+  };
+  var mt2, vt2 = y2.__private__.getFontSize = y2.getFontSize = function() {
+    return S2 === x2.COMPAT ? gt2 : gt2 * _t2;
+  }, bt2 = e.R2L || false;
+  y2.__private__.setR2L = y2.setR2L = function(t2) {
+    return bt2 = t2, this;
+  }, y2.__private__.getR2L = y2.getR2L = function() {
+    return bt2;
+  };
+  var yt2, wt2 = y2.__private__.setZoomMode = function(t2) {
+    var e2 = [void 0, null, "fullwidth", "fullheight", "fullpage", "original"];
+    if (/^(?:\d+\.\d*|\d*\.\d+|\d+)%$/.test(t2)) mt2 = t2;
+    else if (isNaN(t2)) {
+      if (-1 === e2.indexOf(t2)) throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "' + t2 + '" is not recognized.');
+      mt2 = t2;
+    } else mt2 = parseInt(t2, 10);
+  };
+  y2.__private__.getZoomMode = function() {
+    return mt2;
+  };
+  var Nt2, Lt2 = y2.__private__.setPageMode = function(t2) {
+    if (-1 == [void 0, null, "UseNone", "UseOutlines", "UseThumbs", "FullScreen"].indexOf(t2)) throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "' + t2 + '" is not recognized.');
+    yt2 = t2;
+  };
+  y2.__private__.getPageMode = function() {
+    return yt2;
+  };
+  var At2 = y2.__private__.setLayoutMode = function(t2) {
+    if (-1 == [void 0, null, "continuous", "single", "twoleft", "tworight", "two"].indexOf(t2)) throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "' + t2 + '" is not recognized.');
+    Nt2 = t2;
+  };
+  y2.__private__.getLayoutMode = function() {
+    return Nt2;
+  }, y2.__private__.setDisplayMode = y2.setDisplayMode = function(t2, e2, r2) {
+    return wt2(t2), At2(e2), Lt2(r2), this;
+  };
+  var xt2 = { title: "", subject: "", author: "", keywords: "", creator: "" };
+  y2.__private__.getDocumentProperty = function(t2) {
+    if (-1 === Object.keys(xt2).indexOf(t2)) throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");
+    return xt2[t2];
+  }, y2.__private__.getDocumentProperties = function() {
+    return xt2;
+  }, y2.__private__.setDocumentProperties = y2.setProperties = y2.setDocumentProperties = function(t2) {
+    for (var e2 in xt2) xt2.hasOwnProperty(e2) && t2[e2] && (xt2[e2] = t2[e2]);
+    return this;
+  }, y2.__private__.setDocumentProperty = function(t2, e2) {
+    if (-1 === Object.keys(xt2).indexOf(t2)) throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");
+    return xt2[t2] = e2;
+  };
+  var St2, _t2, Pt2, kt2, It2, Ft2 = {}, Ct2 = {}, jt2 = [], Ot2 = {}, Bt2 = {}, Mt2 = {}, Et2 = {}, qt2 = null, Dt2 = 0, Rt2 = [], Tt2 = new C(y2), Ut2 = e.hotfixes || [], zt2 = {}, Ht2 = {}, Wt2 = [], Vt2 = function t2(e2, r2, n2, i3, a2, o3) {
+    if (!(this instanceof t2)) return new t2(e2, r2, n2, i3, a2, o3);
+    isNaN(e2) && (e2 = 1), isNaN(r2) && (r2 = 0), isNaN(n2) && (n2 = 0), isNaN(i3) && (i3 = 1), isNaN(a2) && (a2 = 0), isNaN(o3) && (o3 = 0), this._matrix = [e2, r2, n2, i3, a2, o3];
+  };
+  Object.defineProperty(Vt2.prototype, "sx", { get: function() {
+    return this._matrix[0];
+  }, set: function(t2) {
+    this._matrix[0] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "shy", { get: function() {
+    return this._matrix[1];
+  }, set: function(t2) {
+    this._matrix[1] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "shx", { get: function() {
+    return this._matrix[2];
+  }, set: function(t2) {
+    this._matrix[2] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "sy", { get: function() {
+    return this._matrix[3];
+  }, set: function(t2) {
+    this._matrix[3] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "tx", { get: function() {
+    return this._matrix[4];
+  }, set: function(t2) {
+    this._matrix[4] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "ty", { get: function() {
+    return this._matrix[5];
+  }, set: function(t2) {
+    this._matrix[5] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "a", { get: function() {
+    return this._matrix[0];
+  }, set: function(t2) {
+    this._matrix[0] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "b", { get: function() {
+    return this._matrix[1];
+  }, set: function(t2) {
+    this._matrix[1] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "c", { get: function() {
+    return this._matrix[2];
+  }, set: function(t2) {
+    this._matrix[2] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "d", { get: function() {
+    return this._matrix[3];
+  }, set: function(t2) {
+    this._matrix[3] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "e", { get: function() {
+    return this._matrix[4];
+  }, set: function(t2) {
+    this._matrix[4] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "f", { get: function() {
+    return this._matrix[5];
+  }, set: function(t2) {
+    this._matrix[5] = t2;
+  } }), Object.defineProperty(Vt2.prototype, "rotation", { get: function() {
+    return Math.atan2(this.shx, this.sx);
+  } }), Object.defineProperty(Vt2.prototype, "scaleX", { get: function() {
+    return this.decompose().scale.sx;
+  } }), Object.defineProperty(Vt2.prototype, "scaleY", { get: function() {
+    return this.decompose().scale.sy;
+  } }), Object.defineProperty(Vt2.prototype, "isIdentity", { get: function() {
+    return 1 === this.sx && (0 === this.shy && (0 === this.shx && (1 === this.sy && (0 === this.tx && 0 === this.ty))));
+  } }), Vt2.prototype.join = function(t2) {
+    return [this.sx, this.shy, this.shx, this.sy, this.tx, this.ty].map(O2).join(t2);
+  }, Vt2.prototype.multiply = function(t2) {
+    var e2 = t2.sx * this.sx + t2.shy * this.shx, r2 = t2.sx * this.shy + t2.shy * this.sy, n2 = t2.shx * this.sx + t2.sy * this.shx, i3 = t2.shx * this.shy + t2.sy * this.sy, a2 = t2.tx * this.sx + t2.ty * this.shx + this.tx, o3 = t2.tx * this.shy + t2.ty * this.sy + this.ty;
+    return new Vt2(e2, r2, n2, i3, a2, o3);
+  }, Vt2.prototype.decompose = function() {
+    var t2 = this.sx, e2 = this.shy, r2 = this.shx, n2 = this.sy, i3 = this.tx, a2 = this.ty, o3 = Math.sqrt(t2 * t2 + e2 * e2), s3 = (t2 /= o3) * r2 + (e2 /= o3) * n2;
+    r2 -= t2 * s3, n2 -= e2 * s3;
+    var c3 = Math.sqrt(r2 * r2 + n2 * n2);
+    return s3 /= c3, t2 * (n2 /= c3) < e2 * (r2 /= c3) && (t2 = -t2, e2 = -e2, s3 = -s3, o3 = -o3), { scale: new Vt2(o3, 0, 0, c3, 0, 0), translate: new Vt2(1, 0, 0, 1, i3, a2), rotate: new Vt2(t2, e2, -e2, t2, 0, 0), skew: new Vt2(1, 0, s3, 1, 0, 0) };
+  }, Vt2.prototype.toString = function(t2) {
+    return this.join(" ");
+  }, Vt2.prototype.inversed = function() {
+    var t2 = this.sx, e2 = this.shy, r2 = this.shx, n2 = this.sy, i3 = this.tx, a2 = this.ty, o3 = 1 / (t2 * n2 - e2 * r2), s3 = n2 * o3, c3 = -e2 * o3, u3 = -r2 * o3, h2 = t2 * o3;
+    return new Vt2(s3, c3, u3, h2, -s3 * i3 - u3 * a2, -c3 * i3 - h2 * a2);
+  }, Vt2.prototype.applyToPoint = function(t2) {
+    var e2 = t2.x * this.sx + t2.y * this.shx + this.tx, r2 = t2.x * this.shy + t2.y * this.sy + this.ty;
+    return new Cr(e2, r2);
+  }, Vt2.prototype.applyToRectangle = function(t2) {
+    var e2 = this.applyToPoint(t2), r2 = this.applyToPoint(new Cr(t2.x + t2.w, t2.y + t2.h));
+    return new jr(e2.x, e2.y, r2.x - e2.x, r2.y - e2.y);
+  }, Vt2.prototype.clone = function() {
+    var t2 = this.sx, e2 = this.shy, r2 = this.shx, n2 = this.sy, i3 = this.tx, a2 = this.ty;
+    return new Vt2(t2, e2, r2, n2, i3, a2);
+  }, y2.Matrix = Vt2;
+  var Gt2 = y2.matrixMult = function(t2, e2) {
+    return e2.multiply(t2);
+  }, Yt2 = new Vt2(1, 0, 0, 1, 0, 0);
+  y2.unitMatrix = y2.identityMatrix = Yt2;
+  var Jt2 = function(t2, e2) {
+    if (!Bt2[t2]) {
+      var r2 = (e2 instanceof B ? "Sh" : "P") + (Object.keys(Ot2).length + 1).toString(10);
+      e2.id = r2, Bt2[t2] = r2, Ot2[r2] = e2, Tt2.publish("addPattern", e2);
+    }
+  };
+  y2.ShadingPattern = B, y2.TilingPattern = M, y2.addShadingPattern = function(t2, e2) {
+    return q2("addShadingPattern()"), Jt2(t2, e2), this;
+  }, y2.beginTilingPattern = function(t2) {
+    q2("beginTilingPattern()"), Br(t2.boundingBox[0], t2.boundingBox[1], t2.boundingBox[2] - t2.boundingBox[0], t2.boundingBox[3] - t2.boundingBox[1], t2.matrix);
+  }, y2.endTilingPattern = function(t2, e2) {
+    q2("endTilingPattern()"), e2.stream = ot2[$2].join("\n"), Jt2(t2, e2), Tt2.publish("endTilingPattern", e2), Wt2.pop().restore();
+  };
+  var Xt2 = y2.__private__.newObject = function() {
+    var t2 = Kt2();
+    return Zt2(t2, true), t2;
+  }, Kt2 = y2.__private__.newObjectDeferred = function() {
+    return et3++, rt2[et3] = function() {
+      return it2;
+    }, et3;
+  }, Zt2 = function(t2, e2) {
+    return e2 = "boolean" == typeof e2 && e2, rt2[t2] = it2, e2 && lt2(t2 + " 0 obj"), t2;
+  }, $t2 = y2.__private__.newAdditionalObject = function() {
+    var t2 = { objId: Kt2(), content: "" };
+    return at2.push(t2), t2;
+  }, Qt2 = Kt2(), te3 = Kt2(), ee2 = y2.__private__.decodeColorString = function(t2) {
+    var e2 = t2.split(" ");
+    if (2 !== e2.length || "g" !== e2[1] && "G" !== e2[1]) {
+      if (5 === e2.length && ("k" === e2[4] || "K" === e2[4])) {
+        e2 = [(1 - e2[0]) * (1 - e2[3]), (1 - e2[1]) * (1 - e2[3]), (1 - e2[2]) * (1 - e2[3]), "r"];
+      }
+    } else {
+      var r2 = parseFloat(e2[0]);
+      e2 = [r2, r2, r2, "r"];
+    }
+    for (var n2 = "#", i3 = 0; i3 < 3; i3++) n2 += ("0" + Math.floor(255 * parseFloat(e2[i3])).toString(16)).slice(-2);
+    return n2;
+  }, re2 = y2.__private__.encodeColorString = function(e2) {
+    var r2;
+    "string" == typeof e2 && (e2 = { ch1: e2 });
+    var n2 = e2.ch1, i3 = e2.ch2, a2 = e2.ch3, o3 = e2.ch4, s3 = "draw" === e2.pdfColorType ? ["G", "RG", "K"] : ["g", "rg", "k"];
+    if ("string" == typeof n2 && "#" !== n2.charAt(0)) {
+      var c3 = new f(n2);
+      if (c3.ok) n2 = c3.toHex();
+      else if (!/^\d*\.?\d*$/.test(n2)) throw new Error('Invalid color "' + n2 + '" passed to jsPDF.encodeColorString.');
+    }
+    if ("string" == typeof n2 && /^#[0-9A-Fa-f]{3}$/.test(n2) && (n2 = "#" + n2[1] + n2[1] + n2[2] + n2[2] + n2[3] + n2[3]), "string" == typeof n2 && /^#[0-9A-Fa-f]{6}$/.test(n2)) {
+      var u3 = parseInt(n2.substr(1), 16);
+      n2 = u3 >> 16 & 255, i3 = u3 >> 8 & 255, a2 = 255 & u3;
+    }
+    if (void 0 === i3 || void 0 === o3 && n2 === i3 && i3 === a2) if ("string" == typeof n2) r2 = n2 + " " + s3[0];
+    else switch (e2.precision) {
+      case 2:
+        r2 = R2(n2 / 255) + " " + s3[0];
+        break;
+      case 3:
+      default:
+        r2 = T2(n2 / 255) + " " + s3[0];
+    }
+    else if (void 0 === o3 || "object" === _typeof(o3)) {
+      if (o3 && !isNaN(o3.a) && 0 === o3.a) return r2 = ["1.", "1.", "1.", s3[1]].join(" ");
+      if ("string" == typeof n2) r2 = [n2, i3, a2, s3[1]].join(" ");
+      else switch (e2.precision) {
+        case 2:
+          r2 = [R2(n2 / 255), R2(i3 / 255), R2(a2 / 255), s3[1]].join(" ");
+          break;
+        default:
+        case 3:
+          r2 = [T2(n2 / 255), T2(i3 / 255), T2(a2 / 255), s3[1]].join(" ");
+      }
+    } else if ("string" == typeof n2) r2 = [n2, i3, a2, o3, s3[2]].join(" ");
+    else switch (e2.precision) {
+      case 2:
+        r2 = [R2(n2), R2(i3), R2(a2), R2(o3), s3[2]].join(" ");
+        break;
+      case 3:
+      default:
+        r2 = [T2(n2), T2(i3), T2(a2), T2(o3), s3[2]].join(" ");
+    }
+    return r2;
+  }, ne2 = y2.__private__.getFilters = function() {
+    return u2;
+  }, ie2 = y2.__private__.putStream = function(t2) {
+    var e2 = (t2 = t2 || {}).data || "", r2 = t2.filters || ne2(), n2 = t2.alreadyAppliedFilters || [], i3 = t2.addLength1 || false, a2 = e2.length, o3 = t2.objectId, s3 = function(t3) {
+      return t3;
+    };
+    if (null !== m2 && void 0 === o3) throw new Error("ObjectId must be passed to putStream for file encryption");
+    null !== m2 && (s3 = Ye.encryptor(o3, 0));
+    var c3 = {};
+    true === r2 && (r2 = ["FlateEncode"]);
+    var u3 = t2.additionalKeyValues || [], h2 = (c3 = void 0 !== E.API.processDataByFilters ? E.API.processDataByFilters(e2, r2) : { data: e2, reverseChain: [] }).reverseChain + (Array.isArray(n2) ? n2.join(" ") : n2.toString());
+    if (0 !== c3.data.length && (u3.push({ key: "Length", value: c3.data.length }), true === i3 && u3.push({ key: "Length1", value: a2 })), 0 != h2.length) if (h2.split("/").length - 1 == 1) u3.push({ key: "Filter", value: h2 });
+    else {
+      u3.push({ key: "Filter", value: "[" + h2 + "]" });
+      for (var l2 = 0; l2 < u3.length; l2 += 1) if ("DecodeParms" === u3[l2].key) {
+        for (var f2 = [], d3 = 0; d3 < c3.reverseChain.split("/").length - 1; d3 += 1) f2.push("null");
+        f2.push(u3[l2].value), u3[l2].value = "[" + f2.join(" ") + "]";
+      }
+    }
+    lt2("<<");
+    for (var p3 = 0; p3 < u3.length; p3++) lt2("/" + u3[p3].key + " " + u3[p3].value);
+    lt2(">>"), 0 !== c3.data.length && (lt2("stream"), lt2(s3(c3.data)), lt2("endstream"));
+  }, ae2 = y2.__private__.putPage = function(t2) {
+    var e2 = t2.number, r2 = t2.data, n2 = t2.objId, i3 = t2.contentsObjId;
+    Zt2(n2, true), lt2("<</Type /Page"), lt2("/Parent " + t2.rootDictionaryObjId + " 0 R"), lt2("/Resources " + t2.resourceDictionaryObjId + " 0 R"), lt2("/MediaBox [" + parseFloat(O2(t2.mediaBox.bottomLeftX)) + " " + parseFloat(O2(t2.mediaBox.bottomLeftY)) + " " + O2(t2.mediaBox.topRightX) + " " + O2(t2.mediaBox.topRightY) + "]"), null !== t2.cropBox && lt2("/CropBox [" + O2(t2.cropBox.bottomLeftX) + " " + O2(t2.cropBox.bottomLeftY) + " " + O2(t2.cropBox.topRightX) + " " + O2(t2.cropBox.topRightY) + "]"), null !== t2.bleedBox && lt2("/BleedBox [" + O2(t2.bleedBox.bottomLeftX) + " " + O2(t2.bleedBox.bottomLeftY) + " " + O2(t2.bleedBox.topRightX) + " " + O2(t2.bleedBox.topRightY) + "]"), null !== t2.trimBox && lt2("/TrimBox [" + O2(t2.trimBox.bottomLeftX) + " " + O2(t2.trimBox.bottomLeftY) + " " + O2(t2.trimBox.topRightX) + " " + O2(t2.trimBox.topRightY) + "]"), null !== t2.artBox && lt2("/ArtBox [" + O2(t2.artBox.bottomLeftX) + " " + O2(t2.artBox.bottomLeftY) + " " + O2(t2.artBox.topRightX) + " " + O2(t2.artBox.topRightY) + "]"), "number" == typeof t2.userUnit && 1 !== t2.userUnit && lt2("/UserUnit " + t2.userUnit), Tt2.publish("putPage", { objId: n2, pageContext: Rt2[e2], pageNumber: e2, page: r2 }), lt2("/Contents " + i3 + " 0 R"), lt2(">>"), lt2("endobj");
+    var a2 = r2.join("\n");
+    return S2 === x2.ADVANCED && (a2 += "\nQ"), Zt2(i3, true), ie2({ data: a2, filters: ne2(), objectId: i3 }), lt2("endobj"), n2;
+  }, oe2 = y2.__private__.putPages = function() {
+    var t2, e2, r2 = [];
+    for (t2 = 1; t2 <= Dt2; t2++) Rt2[t2].objId = Kt2(), Rt2[t2].contentsObjId = Kt2();
+    for (t2 = 1; t2 <= Dt2; t2++) r2.push(ae2({ number: t2, data: ot2[t2], objId: Rt2[t2].objId, contentsObjId: Rt2[t2].contentsObjId, mediaBox: Rt2[t2].mediaBox, cropBox: Rt2[t2].cropBox, bleedBox: Rt2[t2].bleedBox, trimBox: Rt2[t2].trimBox, artBox: Rt2[t2].artBox, userUnit: Rt2[t2].userUnit, rootDictionaryObjId: Qt2, resourceDictionaryObjId: te3 }));
+    Zt2(Qt2, true), lt2("<</Type /Pages");
+    var n2 = "/Kids [";
+    for (e2 = 0; e2 < Dt2; e2++) n2 += r2[e2] + " 0 R ";
+    lt2(n2 + "]"), lt2("/Count " + Dt2), lt2(">>"), lt2("endobj"), Tt2.publish("postPutPages");
+  }, se2 = function(t2) {
+    Tt2.publish("putFont", { font: t2, out: lt2, newObject: Xt2, putStream: ie2 }), true !== t2.isAlreadyPutted && (t2.objectNumber = Xt2(), lt2("<<"), lt2("/Type /Font"), lt2("/BaseFont /" + F(t2.postScriptName)), lt2("/Subtype /Type1"), "string" == typeof t2.encoding && lt2("/Encoding /" + t2.encoding), lt2("/FirstChar 32"), lt2("/LastChar 255"), lt2(">>"), lt2("endobj"));
+  }, ce2 = function() {
+    for (var t2 in Ft2) Ft2.hasOwnProperty(t2) && (false === v2 || true === v2 && b3.hasOwnProperty(t2)) && se2(Ft2[t2]);
+  }, ue2 = function(t2) {
+    t2.objectNumber = Xt2();
+    var e2 = [];
+    e2.push({ key: "Type", value: "/XObject" }), e2.push({ key: "Subtype", value: "/Form" }), e2.push({ key: "BBox", value: "[" + [O2(t2.x), O2(t2.y), O2(t2.x + t2.width), O2(t2.y + t2.height)].join(" ") + "]" }), e2.push({ key: "Matrix", value: "[" + t2.matrix.toString() + "]" });
+    var r2 = t2.pages[1].join("\n");
+    ie2({ data: r2, additionalKeyValues: e2, objectId: t2.objectNumber }), lt2("endobj");
+  }, he2 = function() {
+    for (var t2 in zt2) zt2.hasOwnProperty(t2) && ue2(zt2[t2]);
+  }, le2 = function(t2, e2) {
+    var r2, n2 = [], i3 = 1 / (e2 - 1);
+    for (r2 = 0; r2 < 1; r2 += i3) n2.push(r2);
+    if (n2.push(1), 0 != t2[0].offset) {
+      var a2 = { offset: 0, color: t2[0].color };
+      t2.unshift(a2);
+    }
+    if (1 != t2[t2.length - 1].offset) {
+      var o3 = { offset: 1, color: t2[t2.length - 1].color };
+      t2.push(o3);
+    }
+    for (var s3 = "", c3 = 0, u3 = 0; u3 < n2.length; u3++) {
+      for (r2 = n2[u3]; r2 > t2[c3 + 1].offset; ) c3++;
+      var h2 = t2[c3].offset, l2 = (r2 - h2) / (t2[c3 + 1].offset - h2), f2 = t2[c3].color, d3 = t2[c3 + 1].color;
+      s3 += tt2(Math.round((1 - l2) * f2[0] + l2 * d3[0]).toString(16)) + tt2(Math.round((1 - l2) * f2[1] + l2 * d3[1]).toString(16)) + tt2(Math.round((1 - l2) * f2[2] + l2 * d3[2]).toString(16));
+    }
+    return s3.trim();
+  }, fe2 = function(t2, e2) {
+    e2 || (e2 = 21);
+    var r2 = Xt2(), n2 = le2(t2.colors, e2), i3 = [];
+    i3.push({ key: "FunctionType", value: "0" }), i3.push({ key: "Domain", value: "[0.0 1.0]" }), i3.push({ key: "Size", value: "[" + e2 + "]" }), i3.push({ key: "BitsPerSample", value: "8" }), i3.push({ key: "Range", value: "[0.0 1.0 0.0 1.0 0.0 1.0]" }), i3.push({ key: "Decode", value: "[0.0 1.0 0.0 1.0 0.0 1.0]" }), ie2({ data: n2, additionalKeyValues: i3, alreadyAppliedFilters: ["/ASCIIHexDecode"], objectId: r2 }), lt2("endobj"), t2.objectNumber = Xt2(), lt2("<< /ShadingType " + t2.type), lt2("/ColorSpace /DeviceRGB");
+    var a2 = "/Coords [" + O2(parseFloat(t2.coords[0])) + " " + O2(parseFloat(t2.coords[1])) + " ";
+    2 === t2.type ? a2 += O2(parseFloat(t2.coords[2])) + " " + O2(parseFloat(t2.coords[3])) : a2 += O2(parseFloat(t2.coords[2])) + " " + O2(parseFloat(t2.coords[3])) + " " + O2(parseFloat(t2.coords[4])) + " " + O2(parseFloat(t2.coords[5])), lt2(a2 += "]"), t2.matrix && lt2("/Matrix [" + t2.matrix.toString() + "]"), lt2("/Function " + r2 + " 0 R"), lt2("/Extend [true true]"), lt2(">>"), lt2("endobj");
+  }, de2 = function(t2, e2) {
+    var r2 = Kt2(), n2 = Xt2();
+    e2.push({ resourcesOid: r2, objectOid: n2 }), t2.objectNumber = n2;
+    var i3 = [];
+    i3.push({ key: "Type", value: "/Pattern" }), i3.push({ key: "PatternType", value: "1" }), i3.push({ key: "PaintType", value: "1" }), i3.push({ key: "TilingType", value: "1" }), i3.push({ key: "BBox", value: "[" + t2.boundingBox.map(O2).join(" ") + "]" }), i3.push({ key: "XStep", value: O2(t2.xStep) }), i3.push({ key: "YStep", value: O2(t2.yStep) }), i3.push({ key: "Resources", value: r2 + " 0 R" }), t2.matrix && i3.push({ key: "Matrix", value: "[" + t2.matrix.toString() + "]" }), ie2({ data: t2.stream, additionalKeyValues: i3, objectId: t2.objectNumber }), lt2("endobj");
+  }, pe2 = function(t2) {
+    var e2;
+    for (e2 in Ot2) Ot2.hasOwnProperty(e2) && (Ot2[e2] instanceof B ? fe2(Ot2[e2]) : Ot2[e2] instanceof M && de2(Ot2[e2], t2));
+  }, ge2 = function(t2) {
+    for (var e2 in t2.objectNumber = Xt2(), lt2("<<"), t2) switch (e2) {
+      case "opacity":
+        lt2("/ca " + R2(t2[e2]));
+        break;
+      case "stroke-opacity":
+        lt2("/CA " + R2(t2[e2]));
+    }
+    lt2(">>"), lt2("endobj");
+  }, me2 = function() {
+    var t2;
+    for (t2 in Mt2) Mt2.hasOwnProperty(t2) && ge2(Mt2[t2]);
+  }, ve2 = function() {
+    for (var t2 in lt2("/XObject <<"), zt2) zt2.hasOwnProperty(t2) && zt2[t2].objectNumber >= 0 && lt2("/" + t2 + " " + zt2[t2].objectNumber + " 0 R");
+    Tt2.publish("putXobjectDict"), lt2(">>");
+  }, be2 = function() {
+    Ye.oid = Xt2(), lt2("<<"), lt2("/Filter /Standard"), lt2("/V " + Ye.v), lt2("/R " + Ye.r), lt2("/U <" + Ye.toHexString(Ye.U) + ">"), lt2("/O <" + Ye.toHexString(Ye.O) + ">"), lt2("/P " + Ye.P), lt2(">>"), lt2("endobj");
+  }, ye2 = function() {
+    for (var t2 in lt2("/Font <<"), Ft2) Ft2.hasOwnProperty(t2) && (false === v2 || true === v2 && b3.hasOwnProperty(t2)) && lt2("/" + t2 + " " + Ft2[t2].objectNumber + " 0 R");
+    lt2(">>");
+  }, we2 = function() {
+    if (Object.keys(Ot2).length > 0) {
+      for (var t2 in lt2("/Shading <<"), Ot2) Ot2.hasOwnProperty(t2) && Ot2[t2] instanceof B && Ot2[t2].objectNumber >= 0 && lt2("/" + t2 + " " + Ot2[t2].objectNumber + " 0 R");
+      Tt2.publish("putShadingPatternDict"), lt2(">>");
+    }
+  }, Ne2 = function(t2) {
+    if (Object.keys(Ot2).length > 0) {
+      for (var e2 in lt2("/Pattern <<"), Ot2) Ot2.hasOwnProperty(e2) && Ot2[e2] instanceof y2.TilingPattern && Ot2[e2].objectNumber >= 0 && Ot2[e2].objectNumber < t2 && lt2("/" + e2 + " " + Ot2[e2].objectNumber + " 0 R");
+      Tt2.publish("putTilingPatternDict"), lt2(">>");
+    }
+  }, Le2 = function() {
+    if (Object.keys(Mt2).length > 0) {
+      var t2;
+      for (t2 in lt2("/ExtGState <<"), Mt2) Mt2.hasOwnProperty(t2) && Mt2[t2].objectNumber >= 0 && lt2("/" + t2 + " " + Mt2[t2].objectNumber + " 0 R");
+      Tt2.publish("putGStateDict"), lt2(">>");
+    }
+  }, Ae = function(t2) {
+    Zt2(t2.resourcesOid, true), lt2("<<"), lt2("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), ye2(), we2(), Ne2(t2.objectOid), Le2(), ve2(), lt2(">>"), lt2("endobj");
+  }, xe = function() {
+    var t2 = [];
+    ce2(), me2(), he2(), pe2(t2), Tt2.publish("putResources"), t2.forEach(Ae), Ae({ resourcesOid: te3, objectOid: Number.MAX_SAFE_INTEGER }), Tt2.publish("postPutResources");
+  }, Se = function() {
+    Tt2.publish("putAdditionalObjects");
+    for (var t2 = 0; t2 < at2.length; t2++) {
+      var e2 = at2[t2];
+      Zt2(e2.objId, true), lt2(e2.content), lt2("endobj");
+    }
+    Tt2.publish("postPutAdditionalObjects");
+  }, _e = function(t2) {
+    Ct2[t2.fontName] = Ct2[t2.fontName] || {}, Ct2[t2.fontName][t2.fontStyle] = t2.id;
+  }, Pe = function(t2, e2, r2, n2, i3) {
+    var a2 = { id: "F" + (Object.keys(Ft2).length + 1).toString(10), postScriptName: t2, fontName: e2, fontStyle: r2, encoding: n2, isStandardFont: i3 || false, metadata: {} };
+    return Tt2.publish("addFont", { font: a2, instance: this }), Ft2[a2.id] = a2, _e(a2), a2.id;
+  }, ke = function(t2) {
+    for (var e2 = 0, r2 = pt2.length; e2 < r2; e2++) {
+      var n2 = Pe.call(this, t2[e2][0], t2[e2][1], t2[e2][2], pt2[e2][3], true);
+      false === v2 && (b3[n2] = true);
+      var i3 = t2[e2][0].split("-");
+      _e({ id: n2, fontName: i3[0], fontStyle: i3[1] || "" });
+    }
+    Tt2.publish("addFonts", { fonts: Ft2, dictionary: Ct2 });
+  }, Ie = function(t2) {
+    return t2.foo = function() {
+      try {
+        return t2.apply(this, arguments);
+      } catch (t3) {
+        var e2 = t3.stack || "";
+        ~e2.indexOf(" at ") && (e2 = e2.split(" at ")[1]);
+        var r2 = "Error in function " + e2.split("\n")[0].split("<")[0] + ": " + t3.message;
+        if (!n.console) throw new Error(r2);
+        n.console.error(r2, t3), n.alert && alert(r2);
+      }
+    }, t2.foo.bar = t2, t2.foo;
+  }, Fe = function(t2, e2) {
+    var r2, n2, i3, a2, o3, s3, c3, u3, h2;
+    if (i3 = (e2 = e2 || {}).sourceEncoding || "Unicode", o3 = e2.outputEncoding, (e2.autoencode || o3) && Ft2[St2].metadata && Ft2[St2].metadata[i3] && Ft2[St2].metadata[i3].encoding && (a2 = Ft2[St2].metadata[i3].encoding, !o3 && Ft2[St2].encoding && (o3 = Ft2[St2].encoding), !o3 && a2.codePages && (o3 = a2.codePages[0]), "string" == typeof o3 && (o3 = a2[o3]), o3)) {
+      for (c3 = false, s3 = [], r2 = 0, n2 = t2.length; r2 < n2; r2++) (u3 = o3[t2.charCodeAt(r2)]) ? s3.push(String.fromCharCode(u3)) : s3.push(t2[r2]), s3[r2].charCodeAt(0) >> 8 && (c3 = true);
+      t2 = s3.join("");
+    }
+    for (r2 = t2.length; void 0 === c3 && 0 !== r2; ) t2.charCodeAt(r2 - 1) >> 8 && (c3 = true), r2--;
+    if (!c3) return t2;
+    for (s3 = e2.noBOM ? [] : [254, 255], r2 = 0, n2 = t2.length; r2 < n2; r2++) {
+      if ((h2 = (u3 = t2.charCodeAt(r2)) >> 8) >> 8) throw new Error("Character at position " + r2 + " of string '" + t2 + "' exceeds 16bits. Cannot be encoded into UCS-2 BE");
+      s3.push(h2), s3.push(u3 - (h2 << 8));
+    }
+    return String.fromCharCode.apply(void 0, s3);
+  }, Ce = y2.__private__.pdfEscape = y2.pdfEscape = function(t2, e2) {
+    return Fe(t2, e2).replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)");
+  }, je = y2.__private__.beginPage = function(t2) {
+    ot2[++Dt2] = [], Rt2[Dt2] = { objId: 0, contentsObjId: 0, userUnit: Number(d2), artBox: null, bleedBox: null, cropBox: null, trimBox: null, mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: Number(t2[0]), topRightY: Number(t2[1]) } }, Me(Dt2), ht2(ot2[$2]);
+  }, Oe = function(t2, e2) {
+    var r2, n2, o3;
+    switch (i2 = e2 || i2, "string" == typeof t2 && (r2 = A2(t2.toLowerCase()), Array.isArray(r2) && (n2 = r2[0], o3 = r2[1])), Array.isArray(t2) && (n2 = t2[0] * _t2, o3 = t2[1] * _t2), isNaN(n2) && (n2 = s2[0], o3 = s2[1]), (n2 > 14400 || o3 > 14400) && (a.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"), n2 = Math.min(14400, n2), o3 = Math.min(14400, o3)), s2 = [n2, o3], i2.substr(0, 1)) {
+      case "l":
+        o3 > n2 && (s2 = [o3, n2]);
+        break;
+      case "p":
+        n2 > o3 && (s2 = [o3, n2]);
+    }
+    je(s2), pr(fr), lt2(Lr), 0 !== kr && lt2(kr + " J"), 0 !== Ir && lt2(Ir + " j"), Tt2.publish("addPage", { pageNumber: Dt2 });
+  }, Be = function(t2) {
+    t2 > 0 && t2 <= Dt2 && (ot2.splice(t2, 1), Rt2.splice(t2, 1), Dt2--, $2 > Dt2 && ($2 = Dt2), this.setPage($2));
+  }, Me = function(t2) {
+    t2 > 0 && t2 <= Dt2 && ($2 = t2);
+  }, Ee = y2.__private__.getNumberOfPages = y2.getNumberOfPages = function() {
+    return ot2.length - 1;
+  }, qe = function(t2, e2, r2) {
+    var n2, i3 = void 0;
+    return r2 = r2 || {}, t2 = void 0 !== t2 ? t2 : Ft2[St2].fontName, e2 = void 0 !== e2 ? e2 : Ft2[St2].fontStyle, n2 = t2.toLowerCase(), void 0 !== Ct2[n2] && void 0 !== Ct2[n2][e2] ? i3 = Ct2[n2][e2] : void 0 !== Ct2[t2] && void 0 !== Ct2[t2][e2] ? i3 = Ct2[t2][e2] : false === r2.disableWarning && a.warn("Unable to look up font label for font '" + t2 + "', '" + e2 + "'. Refer to getFontList() for available fonts."), i3 || r2.noFallback || null == (i3 = Ct2.times[e2]) && (i3 = Ct2.times.normal), i3;
+  }, De = y2.__private__.putInfo = function() {
+    var t2 = Xt2(), e2 = function(t3) {
+      return t3;
+    };
+    for (var r2 in null !== m2 && (e2 = Ye.encryptor(t2, 0)), lt2("<<"), lt2("/Producer (" + Ce(e2("jsPDF " + E.version)) + ")"), xt2) xt2.hasOwnProperty(r2) && xt2[r2] && lt2("/" + r2.substr(0, 1).toUpperCase() + r2.substr(1) + " (" + Ce(e2(xt2[r2])) + ")");
+    lt2("/CreationDate (" + Ce(e2(W2)) + ")"), lt2(">>"), lt2("endobj");
+  }, Re = y2.__private__.putCatalog = function(t2) {
+    var e2 = (t2 = t2 || {}).rootDictionaryObjId || Qt2;
+    switch (Xt2(), lt2("<<"), lt2("/Type /Catalog"), lt2("/Pages " + e2 + " 0 R"), mt2 || (mt2 = "fullwidth"), mt2) {
+      case "fullwidth":
+        lt2("/OpenAction [3 0 R /FitH null]");
+        break;
+      case "fullheight":
+        lt2("/OpenAction [3 0 R /FitV null]");
+        break;
+      case "fullpage":
+        lt2("/OpenAction [3 0 R /Fit]");
+        break;
+      case "original":
+        lt2("/OpenAction [3 0 R /XYZ null null 1]");
+        break;
+      default:
+        var r2 = "" + mt2;
+        "%" === r2.substr(r2.length - 1) && (mt2 = parseInt(mt2) / 100), "number" == typeof mt2 && lt2("/OpenAction [3 0 R /XYZ null null " + R2(mt2) + "]");
+    }
+    switch (Nt2 || (Nt2 = "continuous"), Nt2) {
+      case "continuous":
+        lt2("/PageLayout /OneColumn");
+        break;
+      case "single":
+        lt2("/PageLayout /SinglePage");
+        break;
+      case "two":
+      case "twoleft":
+        lt2("/PageLayout /TwoColumnLeft");
+        break;
+      case "tworight":
+        lt2("/PageLayout /TwoColumnRight");
+    }
+    yt2 && lt2("/PageMode /" + yt2), Tt2.publish("putCatalog"), lt2(">>"), lt2("endobj");
+  }, Te = y2.__private__.putTrailer = function() {
+    lt2("trailer"), lt2("<<"), lt2("/Size " + (et3 + 1)), lt2("/Root " + et3 + " 0 R"), lt2("/Info " + (et3 - 1) + " 0 R"), null !== m2 && lt2("/Encrypt " + Ye.oid + " 0 R"), lt2("/ID [ <" + V2 + "> <" + V2 + "> ]"), lt2(">>");
+  }, Ue = y2.__private__.putHeader = function() {
+    lt2("%PDF-" + w2), lt2("%ºß¬à");
+  }, ze = y2.__private__.putXRef = function() {
+    var t2 = "0000000000";
+    lt2("xref"), lt2("0 " + (et3 + 1)), lt2("0000000000 65535 f ");
+    for (var e2 = 1; e2 <= et3; e2++) {
+      "function" == typeof rt2[e2] ? lt2((t2 + rt2[e2]()).slice(-10) + " 00000 n ") : void 0 !== rt2[e2] ? lt2((t2 + rt2[e2]).slice(-10) + " 00000 n ") : lt2("0000000000 00000 n ");
+    }
+  }, He = y2.__private__.buildDocument = function() {
+    ut2(), ht2(nt2), Tt2.publish("buildDocument"), Ue(), oe2(), Se(), xe(), null !== m2 && be2(), De(), Re();
+    var t2 = it2;
+    return ze(), Te(), lt2("startxref"), lt2("" + t2), lt2("%%EOF"), ht2(ot2[$2]), nt2.join("\n");
+  }, We = y2.__private__.getBlob = function(t2) {
+    return new Blob([dt2(t2)], { type: "application/pdf" });
+  }, Ve = y2.output = y2.__private__.output = Ie(function(t2, e2) {
+    switch ("string" == typeof (e2 = e2 || {}) ? e2 = { filename: e2 } : e2.filename = e2.filename || "generated.pdf", t2) {
+      case void 0:
+        return He();
+      case "save":
+        y2.save(e2.filename);
+        break;
+      case "arraybuffer":
+        return dt2(He());
+      case "blob":
+        return We(He());
+      case "bloburi":
+      case "bloburl":
+        if (void 0 !== n.URL && "function" == typeof n.URL.createObjectURL) return n.URL && n.URL.createObjectURL(We(He())) || void 0;
+        a.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");
+        break;
+      case "datauristring":
+      case "dataurlstring":
+        var r2 = "", i3 = He();
+        try {
+          r2 = h(i3);
+        } catch (t3) {
+          r2 = h(unescape(encodeURIComponent(i3)));
+        }
+        return "data:application/pdf;filename=" + e2.filename + ";base64," + r2;
+      case "pdfobjectnewwindow":
+        if ("[object Window]" === Object.prototype.toString.call(n)) {
+          var o3 = "https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js", s3 = ' integrity="sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==" crossorigin="anonymous"';
+          e2.pdfObjectUrl && (o3 = e2.pdfObjectUrl, s3 = "");
+          var c3 = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><script src="' + o3 + '"' + s3 + '><\/script><script >PDFObject.embed("' + this.output("dataurlstring") + '", ' + JSON.stringify(e2) + ");<\/script></body></html>", u3 = n.open();
+          return null !== u3 && u3.document.write(c3), u3;
+        }
+        throw new Error("The option pdfobjectnewwindow just works in a browser-environment.");
+      case "pdfjsnewwindow":
+        if ("[object Window]" === Object.prototype.toString.call(n)) {
+          var l2 = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><iframe id="pdfViewer" src="' + (e2.pdfJsUrl || "examples/PDF.js/web/viewer.html") + "?file=&downloadName=" + e2.filename + '" width="500px" height="400px" /></body></html>', f2 = n.open();
+          if (null !== f2) {
+            f2.document.write(l2);
+            var d3 = this;
+            f2.document.documentElement.querySelector("#pdfViewer").onload = function() {
+              f2.document.title = e2.filename, f2.document.documentElement.querySelector("#pdfViewer").contentWindow.PDFViewerApplication.open(d3.output("bloburl"));
+            };
+          }
+          return f2;
+        }
+        throw new Error("The option pdfjsnewwindow just works in a browser-environment.");
+      case "dataurlnewwindow":
+        if ("[object Window]" !== Object.prototype.toString.call(n)) throw new Error("The option dataurlnewwindow just works in a browser-environment.");
+        var p3 = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><iframe src="' + this.output("datauristring", e2) + '"></iframe></body></html>', g3 = n.open();
+        if (null !== g3 && (g3.document.write(p3), g3.document.title = e2.filename), g3 || "undefined" == typeof safari) return g3;
+        break;
+      case "datauri":
+      case "dataurl":
+        return n.document.location.href = this.output("datauristring", e2);
+      default:
+        return null;
+    }
+  }), Ge = function(t2) {
+    return true === Array.isArray(Ut2) && Ut2.indexOf(t2) > -1;
+  };
+  switch (o2) {
+    case "pt":
+      _t2 = 1;
+      break;
+    case "mm":
+      _t2 = 72 / 25.4;
+      break;
+    case "cm":
+      _t2 = 72 / 2.54;
+      break;
+    case "in":
+      _t2 = 72;
+      break;
+    case "px":
+      _t2 = 1 == Ge("px_scaling") ? 0.75 : 96 / 72;
+      break;
+    case "pc":
+    case "em":
+      _t2 = 12;
+      break;
+    case "ex":
+      _t2 = 6;
+      break;
+    default:
+      if ("number" != typeof o2) throw new Error("Invalid unit: " + o2);
+      _t2 = o2;
+  }
+  var Ye = null;
+  K2(), Y2();
+  var Je = function(t2) {
+    return null !== m2 ? Ye.encryptor(t2, 0) : function(t3) {
+      return t3;
+    };
+  }, Xe = y2.__private__.getPageInfo = y2.getPageInfo = function(t2) {
+    if (isNaN(t2) || t2 % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfo");
+    return { objId: Rt2[t2].objId, pageNumber: t2, pageContext: Rt2[t2] };
+  }, Ke = y2.__private__.getPageInfoByObjId = function(t2) {
+    if (isNaN(t2) || t2 % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId");
+    for (var e2 in Rt2) if (Rt2[e2].objId === t2) break;
+    return Xe(e2);
+  }, Ze = y2.__private__.getCurrentPageInfo = y2.getCurrentPageInfo = function() {
+    return { objId: Rt2[$2].objId, pageNumber: $2, pageContext: Rt2[$2] };
+  };
+  y2.addPage = function() {
+    return Oe.apply(this, arguments), this;
+  }, y2.setPage = function() {
+    return Me.apply(this, arguments), ht2.call(this, ot2[$2]), this;
+  }, y2.insertPage = function(t2) {
+    return this.addPage(), this.movePage($2, t2), this;
+  }, y2.movePage = function(t2, e2) {
+    var r2, n2;
+    if (t2 > e2) {
+      r2 = ot2[t2], n2 = Rt2[t2];
+      for (var i3 = t2; i3 > e2; i3--) ot2[i3] = ot2[i3 - 1], Rt2[i3] = Rt2[i3 - 1];
+      ot2[e2] = r2, Rt2[e2] = n2, this.setPage(e2);
+    } else if (t2 < e2) {
+      r2 = ot2[t2], n2 = Rt2[t2];
+      for (var a2 = t2; a2 < e2; a2++) ot2[a2] = ot2[a2 + 1], Rt2[a2] = Rt2[a2 + 1];
+      ot2[e2] = r2, Rt2[e2] = n2, this.setPage(e2);
+    }
+    return this;
+  }, y2.deletePage = function() {
+    return Be.apply(this, arguments), this;
+  }, y2.__private__.text = y2.text = function(e2, r2, n2, i3, a2) {
+    var o3, s3, c3, u3, h2, l2, f2, d3, p3, g3 = (i3 = i3 || {}).scope || this;
+    if ("number" == typeof e2 && "number" == typeof r2 && ("string" == typeof n2 || Array.isArray(n2))) {
+      var m3 = n2;
+      n2 = r2, r2 = e2, e2 = m3;
+    }
+    if (arguments[3] instanceof Vt2 == false ? (c3 = arguments[4], u3 = arguments[5], "object" === _typeof(f2 = arguments[3]) && null !== f2 || ("string" == typeof c3 && (u3 = c3, c3 = null), "string" == typeof f2 && (u3 = f2, f2 = null), "number" == typeof f2 && (c3 = f2, f2 = null), i3 = { flags: f2, angle: c3, align: u3 })) : (q2("The transform parameter of text() with a Matrix value"), p3 = a2), isNaN(r2) || isNaN(n2) || null == e2) throw new Error("Invalid arguments passed to jsPDF.text");
+    if (0 === e2.length) return g3;
+    var v3 = "", y3 = false, w3 = "number" == typeof i3.lineHeightFactor ? i3.lineHeightFactor : lr, N3 = g3.internal.scaleFactor;
+    function L3(t2) {
+      return t2 = t2.split("	").join(Array(i3.TabLen || 9).join(" ")), Ce(t2, f2);
+    }
+    function A3(t2) {
+      for (var e3, r3 = t2.concat(), n3 = [], i4 = r3.length; i4--; ) "string" == typeof (e3 = r3.shift()) ? n3.push(e3) : Array.isArray(t2) && (1 === e3.length || void 0 === e3[1] && void 0 === e3[2]) ? n3.push(e3[0]) : n3.push([e3[0], e3[1], e3[2]]);
+      return n3;
+    }
+    function _3(t2, e3) {
+      var r3;
+      if ("string" == typeof t2) r3 = e3(t2)[0];
+      else if (Array.isArray(t2)) {
+        for (var n3, i4, a3 = t2.concat(), o4 = [], s4 = a3.length; s4--; ) "string" == typeof (n3 = a3.shift()) ? o4.push(e3(n3)[0]) : Array.isArray(n3) && "string" == typeof n3[0] && (i4 = e3(n3[0], n3[1], n3[2]), o4.push([i4[0], i4[1], i4[2]]));
+        r3 = o4;
+      }
+      return r3;
+    }
+    var P3 = false, k3 = true;
+    if ("string" == typeof e2) P3 = true;
+    else if (Array.isArray(e2)) {
+      var I2 = e2.concat();
+      s3 = [];
+      for (var F2, C2 = I2.length; C2--; ) ("string" != typeof (F2 = I2.shift()) || Array.isArray(F2) && "string" != typeof F2[0]) && (k3 = false);
+      P3 = k3;
+    }
+    if (false === P3) throw new Error('Type of text must be string or Array. "' + e2 + '" is not recognized.');
+    "string" == typeof e2 && (e2 = e2.match(/[\r?\n]/) ? e2.split(/\r\n|\r|\n/g) : [e2]);
+    var j2 = gt2 / g3.internal.scaleFactor, B2 = j2 * (w3 - 1);
+    switch (i3.baseline) {
+      case "bottom":
+        n2 -= B2;
+        break;
+      case "top":
+        n2 += j2 - B2;
+        break;
+      case "hanging":
+        n2 += j2 - 2 * B2;
+        break;
+      case "middle":
+        n2 += j2 / 2 - B2;
+    }
+    if ((l2 = i3.maxWidth || 0) > 0 && ("string" == typeof e2 ? e2 = g3.splitTextToSize(e2, l2) : "[object Array]" === Object.prototype.toString.call(e2) && (e2 = e2.reduce(function(t2, e3) {
+      return t2.concat(g3.splitTextToSize(e3, l2));
+    }, []))), o3 = { text: e2, x: r2, y: n2, options: i3, mutex: { pdfEscape: Ce, activeFontKey: St2, fonts: Ft2, activeFontSize: gt2 } }, Tt2.publish("preProcessText", o3), e2 = o3.text, c3 = (i3 = o3.options).angle, p3 instanceof Vt2 == false && c3 && "number" == typeof c3) {
+      c3 *= Math.PI / 180, 0 === i3.rotationDirection && (c3 = -c3), S2 === x2.ADVANCED && (c3 = -c3);
+      var M2 = Math.cos(c3), E2 = Math.sin(c3);
+      p3 = new Vt2(M2, E2, -E2, M2, 0, 0);
+    } else c3 && c3 instanceof Vt2 && (p3 = c3);
+    S2 !== x2.ADVANCED || p3 || (p3 = Yt2), void 0 !== (h2 = i3.charSpace || _r) && (v3 += O2(U2(h2)) + " Tc\n", this.setCharSpace(this.getCharSpace() || 0)), void 0 !== (d3 = i3.horizontalScale) && (v3 += O2(100 * d3) + " Tz\n");
+    i3.lang;
+    var D3 = -1, R3 = void 0 !== i3.renderingMode ? i3.renderingMode : i3.stroke, T3 = g3.internal.getCurrentPageInfo().pageContext;
+    switch (R3) {
+      case 0:
+      case false:
+      case "fill":
+        D3 = 0;
+        break;
+      case 1:
+      case true:
+      case "stroke":
+        D3 = 1;
+        break;
+      case 2:
+      case "fillThenStroke":
+        D3 = 2;
+        break;
+      case 3:
+      case "invisible":
+        D3 = 3;
+        break;
+      case 4:
+      case "fillAndAddForClipping":
+        D3 = 4;
+        break;
+      case 5:
+      case "strokeAndAddPathForClipping":
+        D3 = 5;
+        break;
+      case 6:
+      case "fillThenStrokeAndAddToPathForClipping":
+        D3 = 6;
+        break;
+      case 7:
+      case "addToPathForClipping":
+        D3 = 7;
+    }
+    var z3 = void 0 !== T3.usedRenderingMode ? T3.usedRenderingMode : -1;
+    -1 !== D3 ? v3 += D3 + " Tr\n" : -1 !== z3 && (v3 += "0 Tr\n"), -1 !== D3 && (T3.usedRenderingMode = D3), u3 = i3.align || "left";
+    var H3, W3 = gt2 * w3, V3 = g3.internal.pageSize.getWidth(), G3 = Ft2[St2];
+    h2 = i3.charSpace || _r, l2 = i3.maxWidth || 0, f2 = Object.assign({ autoencode: true, noBOM: true }, i3.flags);
+    var Y3 = [], J3 = function(t2) {
+      return g3.getStringUnitWidth(t2, { font: G3, charSpace: h2, fontSize: gt2, doKerning: false }) * gt2 / N3;
+    };
+    if ("[object Array]" === Object.prototype.toString.call(e2)) {
+      var X3;
+      s3 = A3(e2), "left" !== u3 && (H3 = s3.map(J3));
+      var K3, Z3 = 0;
+      if ("right" === u3) {
+        r2 -= H3[0], e2 = [], C2 = s3.length;
+        for (var $3 = 0; $3 < C2; $3++) 0 === $3 ? (K3 = br(r2), X3 = yr(n2)) : (K3 = U2(Z3 - H3[$3]), X3 = -W3), e2.push([s3[$3], K3, X3]), Z3 = H3[$3];
+      } else if ("center" === u3) {
+        r2 -= H3[0] / 2, e2 = [], C2 = s3.length;
+        for (var Q3 = 0; Q3 < C2; Q3++) 0 === Q3 ? (K3 = br(r2), X3 = yr(n2)) : (K3 = U2((Z3 - H3[Q3]) / 2), X3 = -W3), e2.push([s3[Q3], K3, X3]), Z3 = H3[Q3];
+      } else if ("left" === u3) {
+        e2 = [], C2 = s3.length;
+        for (var tt3 = 0; tt3 < C2; tt3++) e2.push(s3[tt3]);
+      } else if ("justify" === u3 && "Identity-H" === G3.encoding) {
+        e2 = [], C2 = s3.length, l2 = 0 !== l2 ? l2 : V3;
+        for (var et4 = 0, rt3 = 0; rt3 < C2; rt3++) if (X3 = 0 === rt3 ? yr(n2) : -W3, K3 = 0 === rt3 ? br(r2) : et4, rt3 < C2 - 1) {
+          var nt3 = U2((l2 - H3[rt3]) / (s3[rt3].split(" ").length - 1)), it3 = s3[rt3].split(" ");
+          e2.push([it3[0] + " ", K3, X3]), et4 = 0;
+          for (var at3 = 1; at3 < it3.length; at3++) {
+            var ot3 = (J3(it3[at3 - 1] + " " + it3[at3]) - J3(it3[at3])) * N3 + nt3;
+            at3 == it3.length - 1 ? e2.push([it3[at3], ot3, 0]) : e2.push([it3[at3] + " ", ot3, 0]), et4 -= ot3;
+          }
+        } else e2.push([s3[rt3], K3, X3]);
+        e2.push(["", et4, 0]);
+      } else {
+        if ("justify" !== u3) throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');
+        e2 = [], C2 = s3.length, l2 = 0 !== l2 ? l2 : V3;
+        for (rt3 = 0; rt3 < C2; rt3++) X3 = 0 === rt3 ? yr(n2) : -W3, K3 = 0 === rt3 ? br(r2) : 0, rt3 < C2 - 1 ? Y3.push(O2(U2((l2 - H3[rt3]) / (s3[rt3].split(" ").length - 1)))) : Y3.push(0), e2.push([s3[rt3], K3, X3]);
+      }
+    }
+    var st3 = "boolean" == typeof i3.R2L ? i3.R2L : bt2;
+    true === st3 && (e2 = _3(e2, function(t2, e3, r3) {
+      return [t2.split("").reverse().join(""), e3, r3];
+    })), o3 = { text: e2, x: r2, y: n2, options: i3, mutex: { pdfEscape: Ce, activeFontKey: St2, fonts: Ft2, activeFontSize: gt2 } }, Tt2.publish("postProcessText", o3), e2 = o3.text, y3 = o3.mutex.isHex || false;
+    var ct3 = Ft2[St2].encoding;
+    "WinAnsiEncoding" !== ct3 && "StandardEncoding" !== ct3 || (e2 = _3(e2, function(t2, e3, r3) {
+      return [L3(t2), e3, r3];
+    })), s3 = A3(e2), e2 = [];
+    for (var ut3, ht3, ft3, dt3 = 0, pt3 = 1, mt3 = Array.isArray(s3[0]) ? pt3 : dt3, vt3 = "", yt3 = function(t2, e3, r3) {
+      var n3 = "";
+      return r3 instanceof Vt2 ? (r3 = "number" == typeof i3.angle ? Gt2(r3, new Vt2(1, 0, 0, 1, t2, e3)) : Gt2(new Vt2(1, 0, 0, 1, t2, e3), r3), S2 === x2.ADVANCED && (r3 = Gt2(new Vt2(1, 0, 0, -1, 0, 0), r3)), n3 = r3.join(" ") + " Tm\n") : n3 = O2(t2) + " " + O2(e3) + " Td\n", n3;
+    }, wt3 = 0; wt3 < s3.length; wt3++) {
+      switch (vt3 = "", mt3) {
+        case pt3:
+          ft3 = (y3 ? "<" : "(") + s3[wt3][0] + (y3 ? ">" : ")"), ut3 = parseFloat(s3[wt3][1]), ht3 = parseFloat(s3[wt3][2]);
+          break;
+        case dt3:
+          ft3 = (y3 ? "<" : "(") + s3[wt3] + (y3 ? ">" : ")"), ut3 = br(r2), ht3 = yr(n2);
+      }
+      void 0 !== Y3 && void 0 !== Y3[wt3] && (vt3 = Y3[wt3] + " Tw\n"), 0 === wt3 ? e2.push(vt3 + yt3(ut3, ht3, p3) + ft3) : mt3 === dt3 ? e2.push(vt3 + ft3) : mt3 === pt3 && e2.push(vt3 + yt3(ut3, ht3, p3) + ft3);
+    }
+    e2 = mt3 === dt3 ? e2.join(" Tj\nT* ") : e2.join(" Tj\n"), e2 += " Tj\n";
+    var Nt3 = "BT\n/";
+    return Nt3 += St2 + " " + gt2 + " Tf\n", Nt3 += O2(gt2 * w3) + " TL\n", Nt3 += xr + "\n", Nt3 += v3, Nt3 += e2, lt2(Nt3 += "ET"), b3[St2] = true, g3;
+  };
+  var $e = y2.__private__.clip = y2.clip = function(t2) {
+    return lt2("evenodd" === t2 ? "W*" : "W"), this;
+  };
+  y2.clipEvenOdd = function() {
+    return $e("evenodd");
+  }, y2.__private__.discardPath = y2.discardPath = function() {
+    return lt2("n"), this;
+  };
+  var Qe = y2.__private__.isValidStyle = function(t2) {
+    var e2 = false;
+    return -1 !== [void 0, null, "S", "D", "F", "DF", "FD", "f", "f*", "B", "B*", "n"].indexOf(t2) && (e2 = true), e2;
+  };
+  y2.__private__.setDefaultPathOperation = y2.setDefaultPathOperation = function(t2) {
+    return Qe(t2) && (g2 = t2), this;
+  };
+  var tr = y2.__private__.getStyle = y2.getStyle = function(t2) {
+    var e2 = g2;
+    switch (t2) {
+      case "D":
+      case "S":
+        e2 = "S";
+        break;
+      case "F":
+        e2 = "f";
+        break;
+      case "FD":
+      case "DF":
+        e2 = "B";
+        break;
+      case "f":
+      case "f*":
+      case "B":
+      case "B*":
+        e2 = t2;
+    }
+    return e2;
+  }, er = y2.close = function() {
+    return lt2("h"), this;
+  };
+  y2.stroke = function() {
+    return lt2("S"), this;
+  }, y2.fill = function(t2) {
+    return rr("f", t2), this;
+  }, y2.fillEvenOdd = function(t2) {
+    return rr("f*", t2), this;
+  }, y2.fillStroke = function(t2) {
+    return rr("B", t2), this;
+  }, y2.fillStrokeEvenOdd = function(t2) {
+    return rr("B*", t2), this;
+  };
+  var rr = function(e2, r2) {
+    "object" === _typeof(r2) ? ar(r2, e2) : lt2(e2);
+  }, nr = function(t2) {
+    null === t2 || S2 === x2.ADVANCED && void 0 === t2 || (t2 = tr(t2), lt2(t2));
+  };
+  function ir(t2, e2, r2, n2, i3) {
+    var a2 = new M(e2 || this.boundingBox, r2 || this.xStep, n2 || this.yStep, this.gState, i3 || this.matrix);
+    a2.stream = this.stream;
+    var o3 = t2 + "$$" + this.cloneIndex++ + "$$";
+    return Jt2(o3, a2), a2;
+  }
+  var ar = function(t2, e2) {
+    var r2 = Bt2[t2.key], n2 = Ot2[r2];
+    if (n2 instanceof B) lt2("q"), lt2(or(e2)), n2.gState && y2.setGState(n2.gState), lt2(t2.matrix.toString() + " cm"), lt2("/" + r2 + " sh"), lt2("Q");
+    else if (n2 instanceof M) {
+      var i3 = new Vt2(1, 0, 0, -1, 0, Rr());
+      t2.matrix && (i3 = i3.multiply(t2.matrix || Yt2), r2 = ir.call(n2, t2.key, t2.boundingBox, t2.xStep, t2.yStep, i3).id), lt2("q"), lt2("/Pattern cs"), lt2("/" + r2 + " scn"), n2.gState && y2.setGState(n2.gState), lt2(e2), lt2("Q");
+    }
+  }, or = function(t2) {
+    switch (t2) {
+      case "f":
+      case "F":
+        return "W n";
+      case "f*":
+        return "W* n";
+      case "B":
+        return "W S";
+      case "B*":
+        return "W* S";
+      case "S":
+        return "W S";
+      case "n":
+        return "W n";
+    }
+  }, sr = y2.moveTo = function(t2, e2) {
+    return lt2(O2(U2(t2)) + " " + O2(H2(e2)) + " m"), this;
+  }, cr = y2.lineTo = function(t2, e2) {
+    return lt2(O2(U2(t2)) + " " + O2(H2(e2)) + " l"), this;
+  }, ur = y2.curveTo = function(t2, e2, r2, n2, i3, a2) {
+    return lt2([O2(U2(t2)), O2(H2(e2)), O2(U2(r2)), O2(H2(n2)), O2(U2(i3)), O2(H2(a2)), "c"].join(" ")), this;
+  };
+  y2.__private__.line = y2.line = function(t2, e2, r2, n2, i3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n2) || !Qe(i3)) throw new Error("Invalid arguments passed to jsPDF.line");
+    return S2 === x2.COMPAT ? this.lines([[r2 - t2, n2 - e2]], t2, e2, [1, 1], i3 || "S") : this.lines([[r2 - t2, n2 - e2]], t2, e2, [1, 1]).stroke();
+  }, y2.__private__.lines = y2.lines = function(t2, e2, r2, n2, i3, a2) {
+    var o3, s3, c3, u3, h2, l2, f2, d3, p3, g3, m3, v3;
+    if ("number" == typeof t2 && (v3 = r2, r2 = e2, e2 = t2, t2 = v3), n2 = n2 || [1, 1], a2 = a2 || false, isNaN(e2) || isNaN(r2) || !Array.isArray(t2) || !Array.isArray(n2) || !Qe(i3) || "boolean" != typeof a2) throw new Error("Invalid arguments passed to jsPDF.lines");
+    for (sr(e2, r2), o3 = n2[0], s3 = n2[1], u3 = t2.length, g3 = e2, m3 = r2, c3 = 0; c3 < u3; c3++) 2 === (h2 = t2[c3]).length ? (g3 = h2[0] * o3 + g3, m3 = h2[1] * s3 + m3, cr(g3, m3)) : (l2 = h2[0] * o3 + g3, f2 = h2[1] * s3 + m3, d3 = h2[2] * o3 + g3, p3 = h2[3] * s3 + m3, g3 = h2[4] * o3 + g3, m3 = h2[5] * s3 + m3, ur(l2, f2, d3, p3, g3, m3));
+    return a2 && er(), nr(i3), this;
+  }, y2.path = function(t2) {
+    for (var e2 = 0; e2 < t2.length; e2++) {
+      var r2 = t2[e2], n2 = r2.c;
+      switch (r2.op) {
+        case "m":
+          sr(n2[0], n2[1]);
+          break;
+        case "l":
+          cr(n2[0], n2[1]);
+          break;
+        case "c":
+          ur.apply(this, n2);
+          break;
+        case "h":
+          er();
+      }
+    }
+    return this;
+  }, y2.__private__.rect = y2.rect = function(t2, e2, r2, n2, i3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n2) || !Qe(i3)) throw new Error("Invalid arguments passed to jsPDF.rect");
+    return S2 === x2.COMPAT && (n2 = -n2), lt2([O2(U2(t2)), O2(H2(e2)), O2(U2(r2)), O2(U2(n2)), "re"].join(" ")), nr(i3), this;
+  }, y2.__private__.triangle = y2.triangle = function(t2, e2, r2, n2, i3, a2, o3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n2) || isNaN(i3) || isNaN(a2) || !Qe(o3)) throw new Error("Invalid arguments passed to jsPDF.triangle");
+    return this.lines([[r2 - t2, n2 - e2], [i3 - r2, a2 - n2], [t2 - i3, e2 - a2]], t2, e2, [1, 1], o3, true), this;
+  }, y2.__private__.roundedRect = y2.roundedRect = function(t2, e2, r2, n2, i3, a2, o3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n2) || isNaN(i3) || isNaN(a2) || !Qe(o3)) throw new Error("Invalid arguments passed to jsPDF.roundedRect");
+    var s3 = 4 / 3 * (Math.SQRT2 - 1);
+    return i3 = Math.min(i3, 0.5 * r2), a2 = Math.min(a2, 0.5 * n2), this.lines([[r2 - 2 * i3, 0], [i3 * s3, 0, i3, a2 - a2 * s3, i3, a2], [0, n2 - 2 * a2], [0, a2 * s3, -i3 * s3, a2, -i3, a2], [2 * i3 - r2, 0], [-i3 * s3, 0, -i3, -a2 * s3, -i3, -a2], [0, 2 * a2 - n2], [0, -a2 * s3, i3 * s3, -a2, i3, -a2]], t2 + i3, e2, [1, 1], o3, true), this;
+  }, y2.__private__.ellipse = y2.ellipse = function(t2, e2, r2, n2, i3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n2) || !Qe(i3)) throw new Error("Invalid arguments passed to jsPDF.ellipse");
+    var a2 = 4 / 3 * (Math.SQRT2 - 1) * r2, o3 = 4 / 3 * (Math.SQRT2 - 1) * n2;
+    return sr(t2 + r2, e2), ur(t2 + r2, e2 - o3, t2 + a2, e2 - n2, t2, e2 - n2), ur(t2 - a2, e2 - n2, t2 - r2, e2 - o3, t2 - r2, e2), ur(t2 - r2, e2 + o3, t2 - a2, e2 + n2, t2, e2 + n2), ur(t2 + a2, e2 + n2, t2 + r2, e2 + o3, t2 + r2, e2), nr(i3), this;
+  }, y2.__private__.circle = y2.circle = function(t2, e2, r2, n2) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || !Qe(n2)) throw new Error("Invalid arguments passed to jsPDF.circle");
+    return this.ellipse(t2, e2, r2, r2, n2);
+  }, y2.setFont = function(t2, e2, r2) {
+    return r2 && (e2 = k2(e2, r2)), St2 = qe(t2, e2, { disableWarning: false }), this;
+  };
+  var hr = y2.__private__.getFont = y2.getFont = function() {
+    return Ft2[qe.apply(y2, arguments)];
+  };
+  y2.__private__.getFontList = y2.getFontList = function() {
+    var t2, e2, r2 = {};
+    for (t2 in Ct2) if (Ct2.hasOwnProperty(t2)) for (e2 in r2[t2] = [], Ct2[t2]) Ct2[t2].hasOwnProperty(e2) && r2[t2].push(e2);
+    return r2;
+  }, y2.addFont = function(t2, e2, r2, n2, i3) {
+    var a2 = ["StandardEncoding", "MacRomanEncoding", "Identity-H", "WinAnsiEncoding"];
+    return arguments[3] && -1 !== a2.indexOf(arguments[3]) ? i3 = arguments[3] : arguments[3] && -1 == a2.indexOf(arguments[3]) && (r2 = k2(r2, n2)), i3 = i3 || "Identity-H", Pe.call(this, t2, e2, r2, i3);
+  };
+  var lr, fr = e.lineWidth || 0.200025, dr = y2.__private__.getLineWidth = y2.getLineWidth = function() {
+    return fr;
+  }, pr = y2.__private__.setLineWidth = y2.setLineWidth = function(t2) {
+    return fr = t2, lt2(O2(U2(t2)) + " w"), this;
+  };
+  y2.__private__.setLineDash = E.API.setLineDash = E.API.setLineDashPattern = function(t2, e2) {
+    if (t2 = t2 || [], e2 = e2 || 0, isNaN(e2) || !Array.isArray(t2)) throw new Error("Invalid arguments passed to jsPDF.setLineDash");
+    return t2 = t2.map(function(t3) {
+      return O2(U2(t3));
+    }).join(" "), e2 = O2(U2(e2)), lt2("[" + t2 + "] " + e2 + " d"), this;
+  };
+  var gr = y2.__private__.getLineHeight = y2.getLineHeight = function() {
+    return gt2 * lr;
+  };
+  y2.__private__.getLineHeight = y2.getLineHeight = function() {
+    return gt2 * lr;
+  };
+  var mr = y2.__private__.setLineHeightFactor = y2.setLineHeightFactor = function(t2) {
+    return "number" == typeof (t2 = t2 || 1.15) && (lr = t2), this;
+  }, vr = y2.__private__.getLineHeightFactor = y2.getLineHeightFactor = function() {
+    return lr;
+  };
+  mr(e.lineHeight);
+  var br = y2.__private__.getHorizontalCoordinate = function(t2) {
+    return U2(t2);
+  }, yr = y2.__private__.getVerticalCoordinate = function(t2) {
+    return S2 === x2.ADVANCED ? t2 : Rt2[$2].mediaBox.topRightY - Rt2[$2].mediaBox.bottomLeftY - U2(t2);
+  }, wr = y2.__private__.getHorizontalCoordinateString = y2.getHorizontalCoordinateString = function(t2) {
+    return O2(br(t2));
+  }, Nr = y2.__private__.getVerticalCoordinateString = y2.getVerticalCoordinateString = function(t2) {
+    return O2(yr(t2));
+  }, Lr = e.strokeColor || "0 G";
+  y2.__private__.getStrokeColor = y2.getDrawColor = function() {
+    return ee2(Lr);
+  }, y2.__private__.setStrokeColor = y2.setDrawColor = function(t2, e2, r2, n2) {
+    return Lr = re2({ ch1: t2, ch2: e2, ch3: r2, ch4: n2, pdfColorType: "draw", precision: 2 }), lt2(Lr), this;
+  };
+  var Ar = e.fillColor || "0 g";
+  y2.__private__.getFillColor = y2.getFillColor = function() {
+    return ee2(Ar);
+  }, y2.__private__.setFillColor = y2.setFillColor = function(t2, e2, r2, n2) {
+    return Ar = re2({ ch1: t2, ch2: e2, ch3: r2, ch4: n2, pdfColorType: "fill", precision: 2 }), lt2(Ar), this;
+  };
+  var xr = e.textColor || "0 g", Sr = y2.__private__.getTextColor = y2.getTextColor = function() {
+    return ee2(xr);
+  };
+  y2.__private__.setTextColor = y2.setTextColor = function(t2, e2, r2, n2) {
+    return xr = re2({ ch1: t2, ch2: e2, ch3: r2, ch4: n2, pdfColorType: "text", precision: 3 }), this;
+  };
+  var _r = e.charSpace, Pr = y2.__private__.getCharSpace = y2.getCharSpace = function() {
+    return parseFloat(_r || 0);
+  };
+  y2.__private__.setCharSpace = y2.setCharSpace = function(t2) {
+    if (isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.setCharSpace");
+    return _r = t2, this;
+  };
+  var kr = 0;
+  y2.CapJoinStyles = { 0: 0, butt: 0, but: 0, miter: 0, 1: 1, round: 1, rounded: 1, circle: 1, 2: 2, projecting: 2, project: 2, square: 2, bevel: 2 }, y2.__private__.setLineCap = y2.setLineCap = function(t2) {
+    var e2 = y2.CapJoinStyles[t2];
+    if (void 0 === e2) throw new Error("Line cap style of '" + t2 + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
+    return kr = e2, lt2(e2 + " J"), this;
+  };
+  var Ir = 0;
+  y2.__private__.setLineJoin = y2.setLineJoin = function(t2) {
+    var e2 = y2.CapJoinStyles[t2];
+    if (void 0 === e2) throw new Error("Line join style of '" + t2 + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
+    return Ir = e2, lt2(e2 + " j"), this;
+  }, y2.__private__.setLineMiterLimit = y2.__private__.setMiterLimit = y2.setLineMiterLimit = y2.setMiterLimit = function(t2) {
+    if (t2 = t2 || 0, isNaN(t2)) throw new Error("Invalid argument passed to jsPDF.setLineMiterLimit");
+    return lt2(O2(U2(t2)) + " M"), this;
+  }, y2.GState = j, y2.setGState = function(t2) {
+    (t2 = "string" == typeof t2 ? Mt2[Et2[t2]] : Fr(null, t2)).equals(qt2) || (lt2("/" + t2.id + " gs"), qt2 = t2);
+  };
+  var Fr = function(t2, e2) {
+    if (!t2 || !Et2[t2]) {
+      var r2 = false;
+      for (var n2 in Mt2) if (Mt2.hasOwnProperty(n2) && Mt2[n2].equals(e2)) {
+        r2 = true;
+        break;
+      }
+      if (r2) e2 = Mt2[n2];
+      else {
+        var i3 = "GS" + (Object.keys(Mt2).length + 1).toString(10);
+        Mt2[i3] = e2, e2.id = i3;
+      }
+      return t2 && (Et2[t2] = e2.id), Tt2.publish("addGState", e2), e2;
+    }
+  };
+  y2.addGState = function(t2, e2) {
+    return Fr(t2, e2), this;
+  }, y2.saveGraphicsState = function() {
+    return lt2("q"), jt2.push({ key: St2, size: gt2, color: xr }), this;
+  }, y2.restoreGraphicsState = function() {
+    lt2("Q");
+    var t2 = jt2.pop();
+    return St2 = t2.key, gt2 = t2.size, xr = t2.color, qt2 = null, this;
+  }, y2.setCurrentTransformationMatrix = function(t2) {
+    return lt2(t2.toString() + " cm"), this;
+  }, y2.comment = function(t2) {
+    return lt2("#" + t2), this;
+  };
+  var Cr = function(t2, e2) {
+    var r2 = t2 || 0;
+    Object.defineProperty(this, "x", { enumerable: true, get: function() {
+      return r2;
+    }, set: function(t3) {
+      isNaN(t3) || (r2 = parseFloat(t3));
+    } });
+    var n2 = e2 || 0;
+    Object.defineProperty(this, "y", { enumerable: true, get: function() {
+      return n2;
+    }, set: function(t3) {
+      isNaN(t3) || (n2 = parseFloat(t3));
+    } });
+    var i3 = "pt";
+    return Object.defineProperty(this, "type", { enumerable: true, get: function() {
+      return i3;
+    }, set: function(t3) {
+      i3 = t3.toString();
+    } }), this;
+  }, jr = function(t2, e2, r2, n2) {
+    Cr.call(this, t2, e2), this.type = "rect";
+    var i3 = r2 || 0;
+    Object.defineProperty(this, "w", { enumerable: true, get: function() {
+      return i3;
+    }, set: function(t3) {
+      isNaN(t3) || (i3 = parseFloat(t3));
+    } });
+    var a2 = n2 || 0;
+    return Object.defineProperty(this, "h", { enumerable: true, get: function() {
+      return a2;
+    }, set: function(t3) {
+      isNaN(t3) || (a2 = parseFloat(t3));
+    } }), this;
+  }, Or = function() {
+    this.page = Dt2, this.currentPage = $2, this.pages = ot2.slice(0), this.pagesContext = Rt2.slice(0), this.x = Pt2, this.y = kt2, this.matrix = It2, this.width = qr($2), this.height = Rr($2), this.outputDestination = ct2, this.id = "", this.objectNumber = -1;
+  };
+  Or.prototype.restore = function() {
+    Dt2 = this.page, $2 = this.currentPage, Rt2 = this.pagesContext, ot2 = this.pages, Pt2 = this.x, kt2 = this.y, It2 = this.matrix, Dr($2, this.width), Tr($2, this.height), ct2 = this.outputDestination;
+  };
+  var Br = function(t2, e2, r2, n2, i3) {
+    Wt2.push(new Or()), Dt2 = $2 = 0, ot2 = [], Pt2 = t2, kt2 = e2, It2 = i3, je([r2, n2]);
+  }, Mr = function(t2) {
+    if (Ht2[t2]) Wt2.pop().restore();
+    else {
+      var e2 = new Or(), r2 = "Xo" + (Object.keys(zt2).length + 1).toString(10);
+      e2.id = r2, Ht2[t2] = r2, zt2[r2] = e2, Tt2.publish("addFormObject", e2), Wt2.pop().restore();
+    }
+  };
+  for (var Er in y2.beginFormObject = function(t2, e2, r2, n2, i3) {
+    return Br(t2, e2, r2, n2, i3), this;
+  }, y2.endFormObject = function(t2) {
+    return Mr(t2), this;
+  }, y2.doFormObject = function(t2, e2) {
+    var r2 = zt2[Ht2[t2]];
+    return lt2("q"), lt2(e2.toString() + " cm"), lt2("/" + r2.id + " Do"), lt2("Q"), this;
+  }, y2.getFormObject = function(t2) {
+    var e2 = zt2[Ht2[t2]];
+    return { x: e2.x, y: e2.y, width: e2.width, height: e2.height, matrix: e2.matrix };
+  }, y2.save = function(t2, e2) {
+    return t2 = t2 || "generated.pdf", (e2 = e2 || {}).returnPromise = e2.returnPromise || false, false === e2.returnPromise ? (l(We(He()), t2), "function" == typeof l.unload && n.setTimeout && setTimeout(l.unload, 911), this) : new Promise(function(e3, r2) {
+      try {
+        var i3 = l(We(He()), t2);
+        "function" == typeof l.unload && n.setTimeout && setTimeout(l.unload, 911), e3(i3);
+      } catch (t3) {
+        r2(t3.message);
+      }
+    });
+  }, E.API) E.API.hasOwnProperty(Er) && ("events" === Er && E.API.events.length ? function(t2, e2) {
+    var r2, n2, i3;
+    for (i3 = e2.length - 1; -1 !== i3; i3--) r2 = e2[i3][0], n2 = e2[i3][1], t2.subscribe.apply(t2, [r2].concat("function" == typeof n2 ? [n2] : n2));
+  }(Tt2, E.API.events) : y2[Er] = E.API[Er]);
+  var qr = y2.getPageWidth = function(t2) {
+    return (Rt2[t2 = t2 || $2].mediaBox.topRightX - Rt2[t2].mediaBox.bottomLeftX) / _t2;
+  }, Dr = y2.setPageWidth = function(t2, e2) {
+    Rt2[t2].mediaBox.topRightX = e2 * _t2 + Rt2[t2].mediaBox.bottomLeftX;
+  }, Rr = y2.getPageHeight = function(t2) {
+    return (Rt2[t2 = t2 || $2].mediaBox.topRightY - Rt2[t2].mediaBox.bottomLeftY) / _t2;
+  }, Tr = y2.setPageHeight = function(t2, e2) {
+    Rt2[t2].mediaBox.topRightY = e2 * _t2 + Rt2[t2].mediaBox.bottomLeftY;
+  };
+  return y2.internal = { pdfEscape: Ce, getStyle: tr, getFont: hr, getFontSize: vt2, getCharSpace: Pr, getTextColor: Sr, getLineHeight: gr, getLineHeightFactor: vr, getLineWidth: dr, write: ft2, getHorizontalCoordinate: br, getVerticalCoordinate: yr, getCoordinateString: wr, getVerticalCoordinateString: Nr, collections: {}, newObject: Xt2, newAdditionalObject: $t2, newObjectDeferred: Kt2, newObjectDeferredBegin: Zt2, getFilters: ne2, putStream: ie2, events: Tt2, scaleFactor: _t2, pageSize: { getWidth: function() {
+    return qr($2);
+  }, setWidth: function(t2) {
+    Dr($2, t2);
+  }, getHeight: function() {
+    return Rr($2);
+  }, setHeight: function(t2) {
+    Tr($2, t2);
+  } }, encryptionOptions: m2, encryption: Ye, getEncryptor: Je, output: Ve, getNumberOfPages: Ee, pages: ot2, out: lt2, f2: R2, f3: T2, getPageInfo: Xe, getPageInfoByObjId: Ke, getCurrentPageInfo: Ze, getPDFVersion: N2, Point: Cr, Rectangle: jr, Matrix: Vt2, hasHotfix: Ge }, Object.defineProperty(y2.internal.pageSize, "width", { get: function() {
+    return qr($2);
+  }, set: function(t2) {
+    Dr($2, t2);
+  }, enumerable: true, configurable: true }), Object.defineProperty(y2.internal.pageSize, "height", { get: function() {
+    return Rr($2);
+  }, set: function(t2) {
+    Tr($2, t2);
+  }, enumerable: true, configurable: true }), ke.call(y2, pt2), St2 = "F1", Oe(s2, i2), Tt2.publish("initialized"), y2;
+}
+I.prototype.lsbFirstWord = function(t2) {
+  return String.fromCharCode(t2 >> 0 & 255, t2 >> 8 & 255, t2 >> 16 & 255, t2 >> 24 & 255);
+}, I.prototype.toHexString = function(t2) {
+  return t2.split("").map(function(t3) {
+    return ("0" + (255 & t3.charCodeAt(0)).toString(16)).slice(-2);
+  }).join("");
+}, I.prototype.hexToBytes = function(t2) {
+  for (var e = [], r = 0; r < t2.length; r += 2) e.push(String.fromCharCode(parseInt(t2.substr(r, 2), 16)));
+  return e.join("");
+}, I.prototype.processOwnerPassword = function(t2, e) {
+  return P(x(e).substr(0, 5), t2);
+}, I.prototype.encryptor = function(t2, e) {
+  var r = x(this.encryptionKey + String.fromCharCode(255 & t2, t2 >> 8 & 255, t2 >> 16 & 255, 255 & e, e >> 8 & 255)).substr(0, 10);
+  return function(t3) {
+    return P(r, t3);
+  };
+}, j.prototype.equals = function(e) {
+  var r, n2 = "id,objectNumber,equals";
+  if (!e || _typeof(e) !== _typeof(this)) return false;
+  var i2 = 0;
+  for (r in this) if (!(n2.indexOf(r) >= 0)) {
+    if (this.hasOwnProperty(r) && !e.hasOwnProperty(r)) return false;
+    if (this[r] !== e[r]) return false;
+    i2++;
+  }
+  for (r in e) e.hasOwnProperty(r) && n2.indexOf(r) < 0 && i2--;
+  return 0 === i2;
+}, E.API = { events: [] }, E.version = "2.5.2";
+var q = E.API;
+var D = 1;
+var R = function(t2) {
+  return t2.replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)");
+};
+var T = function(t2) {
+  return t2.replace(/\\\\/g, "\\").replace(/\\\(/g, "(").replace(/\\\)/g, ")");
+};
+var U = function(t2) {
+  return t2.toFixed(2);
+};
+var z = function(t2) {
+  return t2.toFixed(5);
+};
+q.__acroform__ = {};
+var H = function(t2, e) {
+  t2.prototype = Object.create(e.prototype), t2.prototype.constructor = t2;
+};
+var W = function(t2) {
+  return t2 * D;
+};
+var V = function(t2) {
+  var e = new ut(), r = At.internal.getHeight(t2) || 0, n2 = At.internal.getWidth(t2) || 0;
+  return e.BBox = [0, 0, Number(U(n2)), Number(U(r))], e;
+};
+var G = q.__acroform__.setBit = function(t2, e) {
+  if (t2 = t2 || 0, e = e || 0, isNaN(t2) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBit");
+  return t2 |= 1 << e;
+};
+var Y = q.__acroform__.clearBit = function(t2, e) {
+  if (t2 = t2 || 0, e = e || 0, isNaN(t2) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBit");
+  return t2 &= ~(1 << e);
+};
+var J = q.__acroform__.getBit = function(t2, e) {
+  if (isNaN(t2) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBit");
+  return 0 == (t2 & 1 << e) ? 0 : 1;
+};
+var X = q.__acroform__.getBitForPdf = function(t2, e) {
+  if (isNaN(t2) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf");
+  return J(t2, e - 1);
+};
+var K = q.__acroform__.setBitForPdf = function(t2, e) {
+  if (isNaN(t2) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf");
+  return G(t2, e - 1);
+};
+var Z = q.__acroform__.clearBitForPdf = function(t2, e) {
+  if (isNaN(t2) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf");
+  return Y(t2, e - 1);
+};
+var $ = q.__acroform__.calculateCoordinates = function(t2, e) {
+  var r = e.internal.getHorizontalCoordinate, n2 = e.internal.getVerticalCoordinate, i2 = t2[0], a2 = t2[1], o2 = t2[2], s2 = t2[3], c2 = {};
+  return c2.lowerLeft_X = r(i2) || 0, c2.lowerLeft_Y = n2(a2 + s2) || 0, c2.upperRight_X = r(i2 + o2) || 0, c2.upperRight_Y = n2(a2) || 0, [Number(U(c2.lowerLeft_X)), Number(U(c2.lowerLeft_Y)), Number(U(c2.upperRight_X)), Number(U(c2.upperRight_Y))];
+};
+var Q = function(t2) {
+  if (t2.appearanceStreamContent) return t2.appearanceStreamContent;
+  if (t2.V || t2.DV) {
+    var e = [], r = t2._V || t2.DV, n2 = tt(t2, r), i2 = t2.scope.internal.getFont(t2.fontName, t2.fontStyle).id;
+    e.push("/Tx BMC"), e.push("q"), e.push("BT"), e.push(t2.scope.__private__.encodeColorString(t2.color)), e.push("/" + i2 + " " + U(n2.fontSize) + " Tf"), e.push("1 0 0 1 0 0 Tm"), e.push(n2.text), e.push("ET"), e.push("Q"), e.push("EMC");
+    var a2 = V(t2);
+    return a2.scope = t2.scope, a2.stream = e.join("\n"), a2;
+  }
+};
+var tt = function(t2, e) {
+  var r = 0 === t2.fontSize ? t2.maxFontSize : t2.fontSize, n2 = { text: "", fontSize: "" }, i2 = (e = ")" == (e = "(" == e.substr(0, 1) ? e.substr(1) : e).substr(e.length - 1) ? e.substr(0, e.length - 1) : e).split(" ");
+  i2 = t2.multiline ? i2.map(function(t3) {
+    return t3.split("\n");
+  }) : i2.map(function(t3) {
+    return [t3];
+  });
+  var a2 = r, o2 = At.internal.getHeight(t2) || 0;
+  o2 = o2 < 0 ? -o2 : o2;
+  var s2 = At.internal.getWidth(t2) || 0;
+  s2 = s2 < 0 ? -s2 : s2;
+  var c2 = function(e2, r2, n3) {
+    if (e2 + 1 < i2.length) {
+      var a3 = r2 + " " + i2[e2 + 1][0];
+      return et2(a3, t2, n3).width <= s2 - 4;
+    }
+    return false;
+  };
+  a2++;
+  t: for (; a2 > 0; ) {
+    e = "", a2--;
+    var u2, h2, l2 = et2("3", t2, a2).height, f2 = t2.multiline ? o2 - a2 : (o2 - l2) / 2, d2 = f2 += 2, p2 = 0, g2 = 0, m2 = 0;
+    if (a2 <= 0) {
+      e = "(...) Tj\n", e += "% Width of Text: " + et2(e, t2, a2 = 12).width + ", FieldWidth:" + s2 + "\n";
+      break;
+    }
+    for (var v2 = "", b3 = 0, y2 = 0; y2 < i2.length; y2++) if (i2.hasOwnProperty(y2)) {
+      var w2 = false;
+      if (1 !== i2[y2].length && m2 !== i2[y2].length - 1) {
+        if ((l2 + 2) * (b3 + 2) + 2 > o2) continue t;
+        v2 += i2[y2][m2], w2 = true, g2 = y2, y2--;
+      } else {
+        v2 = " " == (v2 += i2[y2][m2] + " ").substr(v2.length - 1) ? v2.substr(0, v2.length - 1) : v2;
+        var N2 = parseInt(y2), L2 = c2(N2, v2, a2), A2 = y2 >= i2.length - 1;
+        if (L2 && !A2) {
+          v2 += " ", m2 = 0;
+          continue;
+        }
+        if (L2 || A2) {
+          if (A2) g2 = N2;
+          else if (t2.multiline && (l2 + 2) * (b3 + 2) + 2 > o2) continue t;
+        } else {
+          if (!t2.multiline) continue t;
+          if ((l2 + 2) * (b3 + 2) + 2 > o2) continue t;
+          g2 = N2;
+        }
+      }
+      for (var x2 = "", S2 = p2; S2 <= g2; S2++) {
+        var _2 = i2[S2];
+        if (t2.multiline) {
+          if (S2 === g2) {
+            x2 += _2[m2] + " ", m2 = (m2 + 1) % _2.length;
+            continue;
+          }
+          if (S2 === p2) {
+            x2 += _2[_2.length - 1] + " ";
+            continue;
+          }
+        }
+        x2 += _2[0] + " ";
+      }
+      switch (x2 = " " == x2.substr(x2.length - 1) ? x2.substr(0, x2.length - 1) : x2, h2 = et2(x2, t2, a2).width, t2.textAlign) {
+        case "right":
+          u2 = s2 - h2 - 2;
+          break;
+        case "center":
+          u2 = (s2 - h2) / 2;
+          break;
+        case "left":
+        default:
+          u2 = 2;
+      }
+      e += U(u2) + " " + U(d2) + " Td\n", e += "(" + R(x2) + ") Tj\n", e += -U(u2) + " 0 Td\n", d2 = -(a2 + 2), h2 = 0, p2 = w2 ? g2 : g2 + 1, b3++, v2 = "";
+    } else ;
+    break;
+  }
+  return n2.text = e, n2.fontSize = a2, n2;
+};
+var et2 = function(t2, e, r) {
+  var n2 = e.scope.internal.getFont(e.fontName, e.fontStyle), i2 = e.scope.getStringUnitWidth(t2, { font: n2, fontSize: parseFloat(r), charSpace: 0 }) * parseFloat(r);
+  return { height: e.scope.getStringUnitWidth("3", { font: n2, fontSize: parseFloat(r), charSpace: 0 }) * parseFloat(r) * 1.5, width: i2 };
+};
+var rt = { fields: [], xForms: [], acroFormDictionaryRoot: null, printedOut: false, internal: null, isInitialized: false };
+var nt = function(t2, e) {
+  var r = { type: "reference", object: t2 };
+  void 0 === e.internal.getPageInfo(t2.page).pageContext.annotations.find(function(t3) {
+    return t3.type === r.type && t3.object === r.object;
+  }) && e.internal.getPageInfo(t2.page).pageContext.annotations.push(r);
+};
+var it = function(e, r) {
+  for (var n2 in e) if (e.hasOwnProperty(n2)) {
+    var i2 = n2, a2 = e[n2];
+    r.internal.newObjectDeferredBegin(a2.objId, true), "object" === _typeof(a2) && "function" == typeof a2.putStream && a2.putStream(), delete e[i2];
+  }
+};
+var at = function(e, r) {
+  if (r.scope = e, void 0 !== e.internal && (void 0 === e.internal.acroformPlugin || false === e.internal.acroformPlugin.isInitialized)) {
+    if (lt.FieldNum = 0, e.internal.acroformPlugin = JSON.parse(JSON.stringify(rt)), e.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("Exception while creating AcroformDictionary");
+    D = e.internal.scaleFactor, e.internal.acroformPlugin.acroFormDictionaryRoot = new ht(), e.internal.acroformPlugin.acroFormDictionaryRoot.scope = e, e.internal.acroformPlugin.acroFormDictionaryRoot._eventID = e.internal.events.subscribe("postPutResources", function() {
+      !function(t2) {
+        t2.internal.events.unsubscribe(t2.internal.acroformPlugin.acroFormDictionaryRoot._eventID), delete t2.internal.acroformPlugin.acroFormDictionaryRoot._eventID, t2.internal.acroformPlugin.printedOut = true;
+      }(e);
+    }), e.internal.events.subscribe("buildDocument", function() {
+      !function(t2) {
+        t2.internal.acroformPlugin.acroFormDictionaryRoot.objId = void 0;
+        var e2 = t2.internal.acroformPlugin.acroFormDictionaryRoot.Fields;
+        for (var r2 in e2) if (e2.hasOwnProperty(r2)) {
+          var n2 = e2[r2];
+          n2.objId = void 0, n2.hasAnnotation && nt(n2, t2);
+        }
+      }(e);
+    }), e.internal.events.subscribe("putCatalog", function() {
+      !function(t2) {
+        if (void 0 === t2.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("putCatalogCallback: Root missing.");
+        t2.internal.write("/AcroForm " + t2.internal.acroformPlugin.acroFormDictionaryRoot.objId + " 0 R");
+      }(e);
+    }), e.internal.events.subscribe("postPutPages", function(r2) {
+      !function(e2, r3) {
+        var n2 = !e2;
+        for (var i2 in e2 || (r3.internal.newObjectDeferredBegin(r3.internal.acroformPlugin.acroFormDictionaryRoot.objId, true), r3.internal.acroformPlugin.acroFormDictionaryRoot.putStream()), e2 = e2 || r3.internal.acroformPlugin.acroFormDictionaryRoot.Kids) if (e2.hasOwnProperty(i2)) {
+          var a2 = e2[i2], o2 = [], s2 = a2.Rect;
+          if (a2.Rect && (a2.Rect = $(a2.Rect, r3)), r3.internal.newObjectDeferredBegin(a2.objId, true), a2.DA = At.createDefaultAppearanceStream(a2), "object" === _typeof(a2) && "function" == typeof a2.getKeyValueListForStream && (o2 = a2.getKeyValueListForStream()), a2.Rect = s2, a2.hasAppearanceStream && !a2.appearanceStreamContent) {
+            var c2 = Q(a2);
+            o2.push({ key: "AP", value: "<</N " + c2 + ">>" }), r3.internal.acroformPlugin.xForms.push(c2);
+          }
+          if (a2.appearanceStreamContent) {
+            var u2 = "";
+            for (var h2 in a2.appearanceStreamContent) if (a2.appearanceStreamContent.hasOwnProperty(h2)) {
+              var l2 = a2.appearanceStreamContent[h2];
+              if (u2 += "/" + h2 + " ", u2 += "<<", Object.keys(l2).length >= 1 || Array.isArray(l2)) {
+                for (var i2 in l2) if (l2.hasOwnProperty(i2)) {
+                  var f2 = l2[i2];
+                  "function" == typeof f2 && (f2 = f2.call(r3, a2)), u2 += "/" + i2 + " " + f2 + " ", r3.internal.acroformPlugin.xForms.indexOf(f2) >= 0 || r3.internal.acroformPlugin.xForms.push(f2);
+                }
+              } else "function" == typeof (f2 = l2) && (f2 = f2.call(r3, a2)), u2 += "/" + i2 + " " + f2, r3.internal.acroformPlugin.xForms.indexOf(f2) >= 0 || r3.internal.acroformPlugin.xForms.push(f2);
+              u2 += ">>";
+            }
+            o2.push({ key: "AP", value: "<<\n" + u2 + ">>" });
+          }
+          r3.internal.putStream({ additionalKeyValues: o2, objectId: a2.objId }), r3.internal.out("endobj");
+        }
+        n2 && it(r3.internal.acroformPlugin.xForms, r3);
+      }(r2, e);
+    }), e.internal.acroformPlugin.isInitialized = true;
+  }
+};
+var ot = q.__acroform__.arrayToPdfArray = function(e, r, n2) {
+  var i2 = function(t2) {
+    return t2;
+  };
+  if (Array.isArray(e)) {
+    for (var a2 = "[", o2 = 0; o2 < e.length; o2++) switch (0 !== o2 && (a2 += " "), _typeof(e[o2])) {
+      case "boolean":
+      case "number":
+      case "object":
+        a2 += e[o2].toString();
+        break;
+      case "string":
+        "/" !== e[o2].substr(0, 1) ? (void 0 !== r && n2 && (i2 = n2.internal.getEncryptor(r)), a2 += "(" + R(i2(e[o2].toString())) + ")") : a2 += e[o2].toString();
+    }
+    return a2 += "]";
+  }
+  throw new Error("Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray");
+};
+var st = function(t2, e, r) {
+  var n2 = function(t3) {
+    return t3;
+  };
+  return void 0 !== e && r && (n2 = r.internal.getEncryptor(e)), (t2 = t2 || "").toString(), t2 = "(" + R(n2(t2)) + ")";
+};
+var ct = function() {
+  this._objId = void 0, this._scope = void 0, Object.defineProperty(this, "objId", { get: function() {
+    if (void 0 === this._objId) {
+      if (void 0 === this.scope) return;
+      this._objId = this.scope.internal.newObjectDeferred();
+    }
+    return this._objId;
+  }, set: function(t2) {
+    this._objId = t2;
+  } }), Object.defineProperty(this, "scope", { value: this._scope, writable: true });
+};
+ct.prototype.toString = function() {
+  return this.objId + " 0 R";
+}, ct.prototype.putStream = function() {
+  var t2 = this.getKeyValueListForStream();
+  this.scope.internal.putStream({ data: this.stream, additionalKeyValues: t2, objectId: this.objId }), this.scope.internal.out("endobj");
+}, ct.prototype.getKeyValueListForStream = function() {
+  var t2 = [], e = Object.getOwnPropertyNames(this).filter(function(t3) {
+    return "content" != t3 && "appearanceStreamContent" != t3 && "scope" != t3 && "objId" != t3 && "_" != t3.substring(0, 1);
+  });
+  for (var r in e) if (false === Object.getOwnPropertyDescriptor(this, e[r]).configurable) {
+    var n2 = e[r], i2 = this[n2];
+    i2 && (Array.isArray(i2) ? t2.push({ key: n2, value: ot(i2, this.objId, this.scope) }) : i2 instanceof ct ? (i2.scope = this.scope, t2.push({ key: n2, value: i2.objId + " 0 R" })) : "function" != typeof i2 && t2.push({ key: n2, value: i2 }));
+  }
+  return t2;
+};
+var ut = function() {
+  ct.call(this), Object.defineProperty(this, "Type", { value: "/XObject", configurable: false, writable: true }), Object.defineProperty(this, "Subtype", { value: "/Form", configurable: false, writable: true }), Object.defineProperty(this, "FormType", { value: 1, configurable: false, writable: true });
+  var t2, e = [];
+  Object.defineProperty(this, "BBox", { configurable: false, get: function() {
+    return e;
+  }, set: function(t3) {
+    e = t3;
+  } }), Object.defineProperty(this, "Resources", { value: "2 0 R", configurable: false, writable: true }), Object.defineProperty(this, "stream", { enumerable: false, configurable: true, set: function(e2) {
+    t2 = e2.trim();
+  }, get: function() {
+    return t2 || null;
+  } });
+};
+H(ut, ct);
+var ht = function() {
+  ct.call(this);
+  var t2, e = [];
+  Object.defineProperty(this, "Kids", { enumerable: false, configurable: true, get: function() {
+    return e.length > 0 ? e : void 0;
+  } }), Object.defineProperty(this, "Fields", { enumerable: false, configurable: false, get: function() {
+    return e;
+  } }), Object.defineProperty(this, "DA", { enumerable: false, configurable: false, get: function() {
+    if (t2) {
+      var e2 = function(t3) {
+        return t3;
+      };
+      return this.scope && (e2 = this.scope.internal.getEncryptor(this.objId)), "(" + R(e2(t2)) + ")";
+    }
+  }, set: function(e2) {
+    t2 = e2;
+  } });
+};
+H(ht, ct);
+var lt = function t() {
+  ct.call(this);
+  var e = 4;
+  Object.defineProperty(this, "F", { enumerable: false, configurable: false, get: function() {
+    return e;
+  }, set: function(t2) {
+    if (isNaN(t2)) throw new Error('Invalid value "' + t2 + '" for attribute F supplied.');
+    e = t2;
+  } }), Object.defineProperty(this, "showWhenPrinted", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(e, 3));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.F = K(e, 3) : this.F = Z(e, 3);
+  } });
+  var r = 0;
+  Object.defineProperty(this, "Ff", { enumerable: false, configurable: false, get: function() {
+    return r;
+  }, set: function(t2) {
+    if (isNaN(t2)) throw new Error('Invalid value "' + t2 + '" for attribute Ff supplied.');
+    r = t2;
+  } });
+  var n2 = [];
+  Object.defineProperty(this, "Rect", { enumerable: false, configurable: false, get: function() {
+    if (0 !== n2.length) return n2;
+  }, set: function(t2) {
+    n2 = void 0 !== t2 ? t2 : [];
+  } }), Object.defineProperty(this, "x", { enumerable: true, configurable: true, get: function() {
+    return !n2 || isNaN(n2[0]) ? 0 : n2[0];
+  }, set: function(t2) {
+    n2[0] = t2;
+  } }), Object.defineProperty(this, "y", { enumerable: true, configurable: true, get: function() {
+    return !n2 || isNaN(n2[1]) ? 0 : n2[1];
+  }, set: function(t2) {
+    n2[1] = t2;
+  } }), Object.defineProperty(this, "width", { enumerable: true, configurable: true, get: function() {
+    return !n2 || isNaN(n2[2]) ? 0 : n2[2];
+  }, set: function(t2) {
+    n2[2] = t2;
+  } }), Object.defineProperty(this, "height", { enumerable: true, configurable: true, get: function() {
+    return !n2 || isNaN(n2[3]) ? 0 : n2[3];
+  }, set: function(t2) {
+    n2[3] = t2;
+  } });
+  var i2 = "";
+  Object.defineProperty(this, "FT", { enumerable: true, configurable: false, get: function() {
+    return i2;
+  }, set: function(t2) {
+    switch (t2) {
+      case "/Btn":
+      case "/Tx":
+      case "/Ch":
+      case "/Sig":
+        i2 = t2;
+        break;
+      default:
+        throw new Error('Invalid value "' + t2 + '" for attribute FT supplied.');
+    }
+  } });
+  var a2 = null;
+  Object.defineProperty(this, "T", { enumerable: true, configurable: false, get: function() {
+    if (!a2 || a2.length < 1) {
+      if (this instanceof yt) return;
+      a2 = "FieldObject" + t.FieldNum++;
+    }
+    var e2 = function(t2) {
+      return t2;
+    };
+    return this.scope && (e2 = this.scope.internal.getEncryptor(this.objId)), "(" + R(e2(a2)) + ")";
+  }, set: function(t2) {
+    a2 = t2.toString();
+  } }), Object.defineProperty(this, "fieldName", { configurable: true, enumerable: true, get: function() {
+    return a2;
+  }, set: function(t2) {
+    a2 = t2;
+  } });
+  var o2 = "helvetica";
+  Object.defineProperty(this, "fontName", { enumerable: true, configurable: true, get: function() {
+    return o2;
+  }, set: function(t2) {
+    o2 = t2;
+  } });
+  var s2 = "normal";
+  Object.defineProperty(this, "fontStyle", { enumerable: true, configurable: true, get: function() {
+    return s2;
+  }, set: function(t2) {
+    s2 = t2;
+  } });
+  var c2 = 0;
+  Object.defineProperty(this, "fontSize", { enumerable: true, configurable: true, get: function() {
+    return c2;
+  }, set: function(t2) {
+    c2 = t2;
+  } });
+  var u2 = void 0;
+  Object.defineProperty(this, "maxFontSize", { enumerable: true, configurable: true, get: function() {
+    return void 0 === u2 ? 50 / D : u2;
+  }, set: function(t2) {
+    u2 = t2;
+  } });
+  var h2 = "black";
+  Object.defineProperty(this, "color", { enumerable: true, configurable: true, get: function() {
+    return h2;
+  }, set: function(t2) {
+    h2 = t2;
+  } });
+  var l2 = "/F1 0 Tf 0 g";
+  Object.defineProperty(this, "DA", { enumerable: true, configurable: false, get: function() {
+    if (!(!l2 || this instanceof yt || this instanceof Nt)) return st(l2, this.objId, this.scope);
+  }, set: function(t2) {
+    t2 = t2.toString(), l2 = t2;
+  } });
+  var f2 = null;
+  Object.defineProperty(this, "DV", { enumerable: false, configurable: false, get: function() {
+    if (f2) return this instanceof mt == false ? st(f2, this.objId, this.scope) : f2;
+  }, set: function(t2) {
+    t2 = t2.toString(), f2 = this instanceof mt == false ? "(" === t2.substr(0, 1) ? T(t2.substr(1, t2.length - 2)) : T(t2) : t2;
+  } }), Object.defineProperty(this, "defaultValue", { enumerable: true, configurable: true, get: function() {
+    return this instanceof mt == true ? T(f2.substr(1, f2.length - 1)) : f2;
+  }, set: function(t2) {
+    t2 = t2.toString(), f2 = this instanceof mt == true ? "/" + t2 : t2;
+  } });
+  var d2 = null;
+  Object.defineProperty(this, "_V", { enumerable: false, configurable: false, get: function() {
+    if (d2) return d2;
+  }, set: function(t2) {
+    this.V = t2;
+  } }), Object.defineProperty(this, "V", { enumerable: false, configurable: false, get: function() {
+    if (d2) return this instanceof mt == false ? st(d2, this.objId, this.scope) : d2;
+  }, set: function(t2) {
+    t2 = t2.toString(), d2 = this instanceof mt == false ? "(" === t2.substr(0, 1) ? T(t2.substr(1, t2.length - 2)) : T(t2) : t2;
+  } }), Object.defineProperty(this, "value", { enumerable: true, configurable: true, get: function() {
+    return this instanceof mt == true ? T(d2.substr(1, d2.length - 1)) : d2;
+  }, set: function(t2) {
+    t2 = t2.toString(), d2 = this instanceof mt == true ? "/" + t2 : t2;
+  } }), Object.defineProperty(this, "hasAnnotation", { enumerable: true, configurable: true, get: function() {
+    return this.Rect;
+  } }), Object.defineProperty(this, "Type", { enumerable: true, configurable: false, get: function() {
+    return this.hasAnnotation ? "/Annot" : null;
+  } }), Object.defineProperty(this, "Subtype", { enumerable: true, configurable: false, get: function() {
+    return this.hasAnnotation ? "/Widget" : null;
+  } });
+  var p2, g2 = false;
+  Object.defineProperty(this, "hasAppearanceStream", { enumerable: true, configurable: true, get: function() {
+    return g2;
+  }, set: function(t2) {
+    t2 = Boolean(t2), g2 = t2;
+  } }), Object.defineProperty(this, "page", { enumerable: true, configurable: true, get: function() {
+    if (p2) return p2;
+  }, set: function(t2) {
+    p2 = t2;
+  } }), Object.defineProperty(this, "readOnly", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 1));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 1) : this.Ff = Z(this.Ff, 1);
+  } }), Object.defineProperty(this, "required", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 2));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 2) : this.Ff = Z(this.Ff, 2);
+  } }), Object.defineProperty(this, "noExport", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 3));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 3) : this.Ff = Z(this.Ff, 3);
+  } });
+  var m2 = null;
+  Object.defineProperty(this, "Q", { enumerable: true, configurable: false, get: function() {
+    if (null !== m2) return m2;
+  }, set: function(t2) {
+    if (-1 === [0, 1, 2].indexOf(t2)) throw new Error('Invalid value "' + t2 + '" for attribute Q supplied.');
+    m2 = t2;
+  } }), Object.defineProperty(this, "textAlign", { get: function() {
+    var t2;
+    switch (m2) {
+      case 0:
+      default:
+        t2 = "left";
+        break;
+      case 1:
+        t2 = "center";
+        break;
+      case 2:
+        t2 = "right";
+    }
+    return t2;
+  }, configurable: true, enumerable: true, set: function(t2) {
+    switch (t2) {
+      case "right":
+      case 2:
+        m2 = 2;
+        break;
+      case "center":
+      case 1:
+        m2 = 1;
+        break;
+      case "left":
+      case 0:
+      default:
+        m2 = 0;
+    }
+  } });
+};
+H(lt, ct);
+var ft = function() {
+  lt.call(this), this.FT = "/Ch", this.V = "()", this.fontName = "zapfdingbats";
+  var t2 = 0;
+  Object.defineProperty(this, "TI", { enumerable: true, configurable: false, get: function() {
+    return t2;
+  }, set: function(e2) {
+    t2 = e2;
+  } }), Object.defineProperty(this, "topIndex", { enumerable: true, configurable: true, get: function() {
+    return t2;
+  }, set: function(e2) {
+    t2 = e2;
+  } });
+  var e = [];
+  Object.defineProperty(this, "Opt", { enumerable: true, configurable: false, get: function() {
+    return ot(e, this.objId, this.scope);
+  }, set: function(t3) {
+    var r, n2;
+    n2 = [], "string" == typeof (r = t3) && (n2 = function(t4, e2, r2) {
+      r2 || (r2 = 1);
+      for (var n3, i2 = []; n3 = e2.exec(t4); ) i2.push(n3[r2]);
+      return i2;
+    }(r, /\((.*?)\)/g)), e = n2;
+  } }), this.getOptions = function() {
+    return e;
+  }, this.setOptions = function(t3) {
+    e = t3, this.sort && e.sort();
+  }, this.addOption = function(t3) {
+    t3 = (t3 = t3 || "").toString(), e.push(t3), this.sort && e.sort();
+  }, this.removeOption = function(t3, r) {
+    for (r = r || false, t3 = (t3 = t3 || "").toString(); -1 !== e.indexOf(t3) && (e.splice(e.indexOf(t3), 1), false !== r); ) ;
+  }, Object.defineProperty(this, "combo", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 18));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 18) : this.Ff = Z(this.Ff, 18);
+  } }), Object.defineProperty(this, "edit", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 19));
+  }, set: function(t3) {
+    true === this.combo && (true === Boolean(t3) ? this.Ff = K(this.Ff, 19) : this.Ff = Z(this.Ff, 19));
+  } }), Object.defineProperty(this, "sort", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 20));
+  }, set: function(t3) {
+    true === Boolean(t3) ? (this.Ff = K(this.Ff, 20), e.sort()) : this.Ff = Z(this.Ff, 20);
+  } }), Object.defineProperty(this, "multiSelect", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 22));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 22) : this.Ff = Z(this.Ff, 22);
+  } }), Object.defineProperty(this, "doNotSpellCheck", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 23));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 23) : this.Ff = Z(this.Ff, 23);
+  } }), Object.defineProperty(this, "commitOnSelChange", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 27));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 27) : this.Ff = Z(this.Ff, 27);
+  } }), this.hasAppearanceStream = false;
+};
+H(ft, lt);
+var dt = function() {
+  ft.call(this), this.fontName = "helvetica", this.combo = false;
+};
+H(dt, ft);
+var pt = function() {
+  dt.call(this), this.combo = true;
+};
+H(pt, dt);
+var gt = function() {
+  pt.call(this), this.edit = true;
+};
+H(gt, pt);
+var mt = function() {
+  lt.call(this), this.FT = "/Btn", Object.defineProperty(this, "noToggleToOff", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 15));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 15) : this.Ff = Z(this.Ff, 15);
+  } }), Object.defineProperty(this, "radio", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 16));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 16) : this.Ff = Z(this.Ff, 16);
+  } }), Object.defineProperty(this, "pushButton", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 17));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 17) : this.Ff = Z(this.Ff, 17);
+  } }), Object.defineProperty(this, "radioIsUnison", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 26));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 26) : this.Ff = Z(this.Ff, 26);
+  } });
+  var e, r = {};
+  Object.defineProperty(this, "MK", { enumerable: false, configurable: false, get: function() {
+    var t2 = function(t3) {
+      return t3;
+    };
+    if (this.scope && (t2 = this.scope.internal.getEncryptor(this.objId)), 0 !== Object.keys(r).length) {
+      var e2, n2 = [];
+      for (e2 in n2.push("<<"), r) n2.push("/" + e2 + " (" + R(t2(r[e2])) + ")");
+      return n2.push(">>"), n2.join("\n");
+    }
+  }, set: function(e2) {
+    "object" === _typeof(e2) && (r = e2);
+  } }), Object.defineProperty(this, "caption", { enumerable: true, configurable: true, get: function() {
+    return r.CA || "";
+  }, set: function(t2) {
+    "string" == typeof t2 && (r.CA = t2);
+  } }), Object.defineProperty(this, "AS", { enumerable: false, configurable: false, get: function() {
+    return e;
+  }, set: function(t2) {
+    e = t2;
+  } }), Object.defineProperty(this, "appearanceState", { enumerable: true, configurable: true, get: function() {
+    return e.substr(1, e.length - 1);
+  }, set: function(t2) {
+    e = "/" + t2;
+  } });
+};
+H(mt, lt);
+var vt = function() {
+  mt.call(this), this.pushButton = true;
+};
+H(vt, mt);
+var bt = function() {
+  mt.call(this), this.radio = true, this.pushButton = false;
+  var t2 = [];
+  Object.defineProperty(this, "Kids", { enumerable: true, configurable: false, get: function() {
+    return t2;
+  }, set: function(e) {
+    t2 = void 0 !== e ? e : [];
+  } });
+};
+H(bt, mt);
+var yt = function() {
+  var e, r;
+  lt.call(this), Object.defineProperty(this, "Parent", { enumerable: false, configurable: false, get: function() {
+    return e;
+  }, set: function(t2) {
+    e = t2;
+  } }), Object.defineProperty(this, "optionName", { enumerable: false, configurable: true, get: function() {
+    return r;
+  }, set: function(t2) {
+    r = t2;
+  } });
+  var n2, i2 = {};
+  Object.defineProperty(this, "MK", { enumerable: false, configurable: false, get: function() {
+    var t2 = function(t3) {
+      return t3;
+    };
+    this.scope && (t2 = this.scope.internal.getEncryptor(this.objId));
+    var e2, r2 = [];
+    for (e2 in r2.push("<<"), i2) r2.push("/" + e2 + " (" + R(t2(i2[e2])) + ")");
+    return r2.push(">>"), r2.join("\n");
+  }, set: function(e2) {
+    "object" === _typeof(e2) && (i2 = e2);
+  } }), Object.defineProperty(this, "caption", { enumerable: true, configurable: true, get: function() {
+    return i2.CA || "";
+  }, set: function(t2) {
+    "string" == typeof t2 && (i2.CA = t2);
+  } }), Object.defineProperty(this, "AS", { enumerable: false, configurable: false, get: function() {
+    return n2;
+  }, set: function(t2) {
+    n2 = t2;
+  } }), Object.defineProperty(this, "appearanceState", { enumerable: true, configurable: true, get: function() {
+    return n2.substr(1, n2.length - 1);
+  }, set: function(t2) {
+    n2 = "/" + t2;
+  } }), this.caption = "l", this.appearanceState = "Off", this._AppearanceType = At.RadioButton.Circle, this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(this.optionName);
+};
+H(yt, lt), bt.prototype.setAppearance = function(t2) {
+  if (!("createAppearanceStream" in t2) || !("getCA" in t2)) throw new Error("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");
+  for (var e in this.Kids) if (this.Kids.hasOwnProperty(e)) {
+    var r = this.Kids[e];
+    r.appearanceStreamContent = t2.createAppearanceStream(r.optionName), r.caption = t2.getCA();
+  }
+}, bt.prototype.createOption = function(t2) {
+  var e = new yt();
+  return e.Parent = this, e.optionName = t2, this.Kids.push(e), xt.call(this.scope, e), e;
+};
+var wt = function() {
+  mt.call(this), this.fontName = "zapfdingbats", this.caption = "3", this.appearanceState = "On", this.value = "On", this.textAlign = "center", this.appearanceStreamContent = At.CheckBox.createAppearanceStream();
+};
+H(wt, mt);
+var Nt = function() {
+  lt.call(this), this.FT = "/Tx", Object.defineProperty(this, "multiline", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 13));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 13) : this.Ff = Z(this.Ff, 13);
+  } }), Object.defineProperty(this, "fileSelect", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 21));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 21) : this.Ff = Z(this.Ff, 21);
+  } }), Object.defineProperty(this, "doNotSpellCheck", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 23));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 23) : this.Ff = Z(this.Ff, 23);
+  } }), Object.defineProperty(this, "doNotScroll", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 24));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 24) : this.Ff = Z(this.Ff, 24);
+  } }), Object.defineProperty(this, "comb", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 25));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 25) : this.Ff = Z(this.Ff, 25);
+  } }), Object.defineProperty(this, "richText", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 26));
+  }, set: function(t3) {
+    true === Boolean(t3) ? this.Ff = K(this.Ff, 26) : this.Ff = Z(this.Ff, 26);
+  } });
+  var t2 = null;
+  Object.defineProperty(this, "MaxLen", { enumerable: true, configurable: false, get: function() {
+    return t2;
+  }, set: function(e) {
+    t2 = e;
+  } }), Object.defineProperty(this, "maxLength", { enumerable: true, configurable: true, get: function() {
+    return t2;
+  }, set: function(e) {
+    Number.isInteger(e) && (t2 = e);
+  } }), Object.defineProperty(this, "hasAppearanceStream", { enumerable: true, configurable: true, get: function() {
+    return this.V || this.DV;
+  } });
+};
+H(Nt, lt);
+var Lt = function() {
+  Nt.call(this), Object.defineProperty(this, "password", { enumerable: true, configurable: true, get: function() {
+    return Boolean(X(this.Ff, 14));
+  }, set: function(t2) {
+    true === Boolean(t2) ? this.Ff = K(this.Ff, 14) : this.Ff = Z(this.Ff, 14);
+  } }), this.password = true;
+};
+H(Lt, Nt);
+var At = { CheckBox: { createAppearanceStream: function() {
+  return { N: { On: At.CheckBox.YesNormal }, D: { On: At.CheckBox.YesPushDown, Off: At.CheckBox.OffPushDown } };
+}, YesPushDown: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = [], n2 = t2.scope.internal.getFont(t2.fontName, t2.fontStyle).id, i2 = t2.scope.__private__.encodeColorString(t2.color), a2 = tt(t2, t2.caption);
+  return r.push("0.749023 g"), r.push("0 0 " + U(At.internal.getWidth(t2)) + " " + U(At.internal.getHeight(t2)) + " re"), r.push("f"), r.push("BMC"), r.push("q"), r.push("0 0 1 rg"), r.push("/" + n2 + " " + U(a2.fontSize) + " Tf " + i2), r.push("BT"), r.push(a2.text), r.push("ET"), r.push("Q"), r.push("EMC"), e.stream = r.join("\n"), e;
+}, YesNormal: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = t2.scope.internal.getFont(t2.fontName, t2.fontStyle).id, n2 = t2.scope.__private__.encodeColorString(t2.color), i2 = [], a2 = At.internal.getHeight(t2), o2 = At.internal.getWidth(t2), s2 = tt(t2, t2.caption);
+  return i2.push("1 g"), i2.push("0 0 " + U(o2) + " " + U(a2) + " re"), i2.push("f"), i2.push("q"), i2.push("0 0 1 rg"), i2.push("0 0 " + U(o2 - 1) + " " + U(a2 - 1) + " re"), i2.push("W"), i2.push("n"), i2.push("0 g"), i2.push("BT"), i2.push("/" + r + " " + U(s2.fontSize) + " Tf " + n2), i2.push(s2.text), i2.push("ET"), i2.push("Q"), e.stream = i2.join("\n"), e;
+}, OffPushDown: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = [];
+  return r.push("0.749023 g"), r.push("0 0 " + U(At.internal.getWidth(t2)) + " " + U(At.internal.getHeight(t2)) + " re"), r.push("f"), e.stream = r.join("\n"), e;
+} }, RadioButton: { Circle: { createAppearanceStream: function(t2) {
+  var e = { D: { Off: At.RadioButton.Circle.OffPushDown }, N: {} };
+  return e.N[t2] = At.RadioButton.Circle.YesNormal, e.D[t2] = At.RadioButton.Circle.YesPushDown, e;
+}, getCA: function() {
+  return "l";
+}, YesNormal: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = [], n2 = At.internal.getWidth(t2) <= At.internal.getHeight(t2) ? At.internal.getWidth(t2) / 4 : At.internal.getHeight(t2) / 4;
+  n2 = Number((0.9 * n2).toFixed(5));
+  var i2 = At.internal.Bezier_C, a2 = Number((n2 * i2).toFixed(5));
+  return r.push("q"), r.push("1 0 0 1 " + z(At.internal.getWidth(t2) / 2) + " " + z(At.internal.getHeight(t2) / 2) + " cm"), r.push(n2 + " 0 m"), r.push(n2 + " " + a2 + " " + a2 + " " + n2 + " 0 " + n2 + " c"), r.push("-" + a2 + " " + n2 + " -" + n2 + " " + a2 + " -" + n2 + " 0 c"), r.push("-" + n2 + " -" + a2 + " -" + a2 + " -" + n2 + " 0 -" + n2 + " c"), r.push(a2 + " -" + n2 + " " + n2 + " -" + a2 + " " + n2 + " 0 c"), r.push("f"), r.push("Q"), e.stream = r.join("\n"), e;
+}, YesPushDown: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = [], n2 = At.internal.getWidth(t2) <= At.internal.getHeight(t2) ? At.internal.getWidth(t2) / 4 : At.internal.getHeight(t2) / 4;
+  n2 = Number((0.9 * n2).toFixed(5));
+  var i2 = Number((2 * n2).toFixed(5)), a2 = Number((i2 * At.internal.Bezier_C).toFixed(5)), o2 = Number((n2 * At.internal.Bezier_C).toFixed(5));
+  return r.push("0.749023 g"), r.push("q"), r.push("1 0 0 1 " + z(At.internal.getWidth(t2) / 2) + " " + z(At.internal.getHeight(t2) / 2) + " cm"), r.push(i2 + " 0 m"), r.push(i2 + " " + a2 + " " + a2 + " " + i2 + " 0 " + i2 + " c"), r.push("-" + a2 + " " + i2 + " -" + i2 + " " + a2 + " -" + i2 + " 0 c"), r.push("-" + i2 + " -" + a2 + " -" + a2 + " -" + i2 + " 0 -" + i2 + " c"), r.push(a2 + " -" + i2 + " " + i2 + " -" + a2 + " " + i2 + " 0 c"), r.push("f"), r.push("Q"), r.push("0 g"), r.push("q"), r.push("1 0 0 1 " + z(At.internal.getWidth(t2) / 2) + " " + z(At.internal.getHeight(t2) / 2) + " cm"), r.push(n2 + " 0 m"), r.push(n2 + " " + o2 + " " + o2 + " " + n2 + " 0 " + n2 + " c"), r.push("-" + o2 + " " + n2 + " -" + n2 + " " + o2 + " -" + n2 + " 0 c"), r.push("-" + n2 + " -" + o2 + " -" + o2 + " -" + n2 + " 0 -" + n2 + " c"), r.push(o2 + " -" + n2 + " " + n2 + " -" + o2 + " " + n2 + " 0 c"), r.push("f"), r.push("Q"), e.stream = r.join("\n"), e;
+}, OffPushDown: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = [], n2 = At.internal.getWidth(t2) <= At.internal.getHeight(t2) ? At.internal.getWidth(t2) / 4 : At.internal.getHeight(t2) / 4;
+  n2 = Number((0.9 * n2).toFixed(5));
+  var i2 = Number((2 * n2).toFixed(5)), a2 = Number((i2 * At.internal.Bezier_C).toFixed(5));
+  return r.push("0.749023 g"), r.push("q"), r.push("1 0 0 1 " + z(At.internal.getWidth(t2) / 2) + " " + z(At.internal.getHeight(t2) / 2) + " cm"), r.push(i2 + " 0 m"), r.push(i2 + " " + a2 + " " + a2 + " " + i2 + " 0 " + i2 + " c"), r.push("-" + a2 + " " + i2 + " -" + i2 + " " + a2 + " -" + i2 + " 0 c"), r.push("-" + i2 + " -" + a2 + " -" + a2 + " -" + i2 + " 0 -" + i2 + " c"), r.push(a2 + " -" + i2 + " " + i2 + " -" + a2 + " " + i2 + " 0 c"), r.push("f"), r.push("Q"), e.stream = r.join("\n"), e;
+} }, Cross: { createAppearanceStream: function(t2) {
+  var e = { D: { Off: At.RadioButton.Cross.OffPushDown }, N: {} };
+  return e.N[t2] = At.RadioButton.Cross.YesNormal, e.D[t2] = At.RadioButton.Cross.YesPushDown, e;
+}, getCA: function() {
+  return "8";
+}, YesNormal: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = [], n2 = At.internal.calculateCross(t2);
+  return r.push("q"), r.push("1 1 " + U(At.internal.getWidth(t2) - 2) + " " + U(At.internal.getHeight(t2) - 2) + " re"), r.push("W"), r.push("n"), r.push(U(n2.x1.x) + " " + U(n2.x1.y) + " m"), r.push(U(n2.x2.x) + " " + U(n2.x2.y) + " l"), r.push(U(n2.x4.x) + " " + U(n2.x4.y) + " m"), r.push(U(n2.x3.x) + " " + U(n2.x3.y) + " l"), r.push("s"), r.push("Q"), e.stream = r.join("\n"), e;
+}, YesPushDown: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = At.internal.calculateCross(t2), n2 = [];
+  return n2.push("0.749023 g"), n2.push("0 0 " + U(At.internal.getWidth(t2)) + " " + U(At.internal.getHeight(t2)) + " re"), n2.push("f"), n2.push("q"), n2.push("1 1 " + U(At.internal.getWidth(t2) - 2) + " " + U(At.internal.getHeight(t2) - 2) + " re"), n2.push("W"), n2.push("n"), n2.push(U(r.x1.x) + " " + U(r.x1.y) + " m"), n2.push(U(r.x2.x) + " " + U(r.x2.y) + " l"), n2.push(U(r.x4.x) + " " + U(r.x4.y) + " m"), n2.push(U(r.x3.x) + " " + U(r.x3.y) + " l"), n2.push("s"), n2.push("Q"), e.stream = n2.join("\n"), e;
+}, OffPushDown: function(t2) {
+  var e = V(t2);
+  e.scope = t2.scope;
+  var r = [];
+  return r.push("0.749023 g"), r.push("0 0 " + U(At.internal.getWidth(t2)) + " " + U(At.internal.getHeight(t2)) + " re"), r.push("f"), e.stream = r.join("\n"), e;
+} } }, createDefaultAppearanceStream: function(t2) {
+  var e = t2.scope.internal.getFont(t2.fontName, t2.fontStyle).id, r = t2.scope.__private__.encodeColorString(t2.color);
+  return "/" + e + " " + t2.fontSize + " Tf " + r;
+} };
+At.internal = { Bezier_C: 0.551915024494, calculateCross: function(t2) {
+  var e = At.internal.getWidth(t2), r = At.internal.getHeight(t2), n2 = Math.min(e, r);
+  return { x1: { x: (e - n2) / 2, y: (r - n2) / 2 + n2 }, x2: { x: (e - n2) / 2 + n2, y: (r - n2) / 2 }, x3: { x: (e - n2) / 2, y: (r - n2) / 2 }, x4: { x: (e - n2) / 2 + n2, y: (r - n2) / 2 + n2 } };
+} }, At.internal.getWidth = function(e) {
+  var r = 0;
+  return "object" === _typeof(e) && (r = W(e.Rect[2])), r;
+}, At.internal.getHeight = function(e) {
+  var r = 0;
+  return "object" === _typeof(e) && (r = W(e.Rect[3])), r;
+};
+var xt = q.addField = function(t2) {
+  if (at(this, t2), !(t2 instanceof lt)) throw new Error("Invalid argument passed to jsPDF.addField.");
+  var e;
+  return (e = t2).scope.internal.acroformPlugin.printedOut && (e.scope.internal.acroformPlugin.printedOut = false, e.scope.internal.acroformPlugin.acroFormDictionaryRoot = null), e.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(e), t2.page = t2.scope.internal.getCurrentPageInfo().pageNumber, this;
+};
+q.AcroFormChoiceField = ft, q.AcroFormListBox = dt, q.AcroFormComboBox = pt, q.AcroFormEditBox = gt, q.AcroFormButton = mt, q.AcroFormPushButton = vt, q.AcroFormRadioButton = bt, q.AcroFormCheckBox = wt, q.AcroFormTextField = Nt, q.AcroFormPasswordField = Lt, q.AcroFormAppearance = At, q.AcroForm = { ChoiceField: ft, ListBox: dt, ComboBox: pt, EditBox: gt, Button: mt, PushButton: vt, RadioButton: bt, CheckBox: wt, TextField: Nt, PasswordField: Lt, Appearance: At }, E.AcroForm = { ChoiceField: ft, ListBox: dt, ComboBox: pt, EditBox: gt, Button: mt, PushButton: vt, RadioButton: bt, CheckBox: wt, TextField: Nt, PasswordField: Lt, Appearance: At };
+var St = E.AcroForm;
+function _t(t2) {
+  return t2.reduce(function(t3, e, r) {
+    return t3[e] = r, t3;
+  }, {});
+}
+!function(e) {
+  e.__addimage__ = {};
+  var r = "UNKNOWN", n2 = { PNG: [[137, 80, 78, 71]], TIFF: [[77, 77, 0, 42], [73, 73, 42, 0]], JPEG: [[255, 216, 255, 224, void 0, void 0, 74, 70, 73, 70, 0], [255, 216, 255, 225, void 0, void 0, 69, 120, 105, 102, 0, 0], [255, 216, 255, 219], [255, 216, 255, 238]], JPEG2000: [[0, 0, 0, 12, 106, 80, 32, 32]], GIF87a: [[71, 73, 70, 56, 55, 97]], GIF89a: [[71, 73, 70, 56, 57, 97]], WEBP: [[82, 73, 70, 70, void 0, void 0, void 0, void 0, 87, 69, 66, 80]], BMP: [[66, 77], [66, 65], [67, 73], [67, 80], [73, 67], [80, 84]] }, i2 = e.__addimage__.getImageFileTypeByImageData = function(t2, e2) {
+    var i3, a3, o3, s3, c3, u2 = r;
+    if ("RGBA" === (e2 = e2 || r) || void 0 !== t2.data && t2.data instanceof Uint8ClampedArray && "height" in t2 && "width" in t2) return "RGBA";
+    if (x2(t2)) for (c3 in n2) for (o3 = n2[c3], i3 = 0; i3 < o3.length; i3 += 1) {
+      for (s3 = true, a3 = 0; a3 < o3[i3].length; a3 += 1) if (void 0 !== o3[i3][a3] && o3[i3][a3] !== t2[a3]) {
+        s3 = false;
+        break;
+      }
+      if (true === s3) {
+        u2 = c3;
+        break;
+      }
+    }
+    else for (c3 in n2) for (o3 = n2[c3], i3 = 0; i3 < o3.length; i3 += 1) {
+      for (s3 = true, a3 = 0; a3 < o3[i3].length; a3 += 1) if (void 0 !== o3[i3][a3] && o3[i3][a3] !== t2.charCodeAt(a3)) {
+        s3 = false;
+        break;
+      }
+      if (true === s3) {
+        u2 = c3;
+        break;
+      }
+    }
+    return u2 === r && e2 !== r && (u2 = e2), u2;
+  }, a2 = function t2(e2) {
+    for (var r2 = this.internal.write, n3 = this.internal.putStream, i3 = (0, this.internal.getFilters)(); -1 !== i3.indexOf("FlateEncode"); ) i3.splice(i3.indexOf("FlateEncode"), 1);
+    e2.objectId = this.internal.newObject();
+    var a3 = [];
+    if (a3.push({ key: "Type", value: "/XObject" }), a3.push({ key: "Subtype", value: "/Image" }), a3.push({ key: "Width", value: e2.width }), a3.push({ key: "Height", value: e2.height }), e2.colorSpace === b3.INDEXED ? a3.push({ key: "ColorSpace", value: "[/Indexed /DeviceRGB " + (e2.palette.length / 3 - 1) + " " + ("sMask" in e2 && void 0 !== e2.sMask ? e2.objectId + 2 : e2.objectId + 1) + " 0 R]" }) : (a3.push({ key: "ColorSpace", value: "/" + e2.colorSpace }), e2.colorSpace === b3.DEVICE_CMYK && a3.push({ key: "Decode", value: "[1 0 1 0 1 0 1 0]" })), a3.push({ key: "BitsPerComponent", value: e2.bitsPerComponent }), "decodeParameters" in e2 && void 0 !== e2.decodeParameters && a3.push({ key: "DecodeParms", value: "<<" + e2.decodeParameters + ">>" }), "transparency" in e2 && Array.isArray(e2.transparency)) {
+      for (var o3 = "", s3 = 0, c3 = e2.transparency.length; s3 < c3; s3++) o3 += e2.transparency[s3] + " " + e2.transparency[s3] + " ";
+      a3.push({ key: "Mask", value: "[" + o3 + "]" });
+    }
+    void 0 !== e2.sMask && a3.push({ key: "SMask", value: e2.objectId + 1 + " 0 R" });
+    var u2 = void 0 !== e2.filter ? ["/" + e2.filter] : void 0;
+    if (n3({ data: e2.data, additionalKeyValues: a3, alreadyAppliedFilters: u2, objectId: e2.objectId }), r2("endobj"), "sMask" in e2 && void 0 !== e2.sMask) {
+      var h3 = "/Predictor " + e2.predictor + " /Colors 1 /BitsPerComponent " + e2.bitsPerComponent + " /Columns " + e2.width, l3 = { width: e2.width, height: e2.height, colorSpace: "DeviceGray", bitsPerComponent: e2.bitsPerComponent, decodeParameters: h3, data: e2.sMask };
+      "filter" in e2 && (l3.filter = e2.filter), t2.call(this, l3);
+    }
+    if (e2.colorSpace === b3.INDEXED) {
+      var f3 = this.internal.newObject();
+      n3({ data: _2(new Uint8Array(e2.palette)), objectId: f3 }), r2("endobj");
+    }
+  }, o2 = function() {
+    var t2 = this.internal.collections.addImage_images;
+    for (var e2 in t2) a2.call(this, t2[e2]);
+  }, s2 = function() {
+    var t2, e2 = this.internal.collections.addImage_images, r2 = this.internal.write;
+    for (var n3 in e2) r2("/I" + (t2 = e2[n3]).index, t2.objectId, "0", "R");
+  }, c2 = function() {
+    this.internal.collections.addImage_images || (this.internal.collections.addImage_images = {}, this.internal.events.subscribe("putResources", o2), this.internal.events.subscribe("putXobjectDict", s2));
+  }, h2 = function() {
+    var t2 = this.internal.collections.addImage_images;
+    return c2.call(this), t2;
+  }, l2 = function() {
+    return Object.keys(this.internal.collections.addImage_images).length;
+  }, f2 = function(t2) {
+    return "function" == typeof e["process" + t2.toUpperCase()];
+  }, d2 = function(e2) {
+    return "object" === _typeof(e2) && 1 === e2.nodeType;
+  }, p2 = function(t2, r2) {
+    if ("IMG" === t2.nodeName && t2.hasAttribute("src")) {
+      var n3 = "" + t2.getAttribute("src");
+      if (0 === n3.indexOf("data:image/")) return u(unescape(n3).split("base64,").pop());
+      var i3 = e.loadFile(n3, true);
+      if (void 0 !== i3) return i3;
+    }
+    if ("CANVAS" === t2.nodeName) {
+      if (0 === t2.width || 0 === t2.height) throw new Error("Given canvas must have data. Canvas width: " + t2.width + ", height: " + t2.height);
+      var a3;
+      switch (r2) {
+        case "PNG":
+          a3 = "image/png";
+          break;
+        case "WEBP":
+          a3 = "image/webp";
+          break;
+        case "JPEG":
+        case "JPG":
+        default:
+          a3 = "image/jpeg";
+      }
+      return u(t2.toDataURL(a3, 1).split("base64,").pop());
+    }
+  }, g2 = function(t2) {
+    var e2 = this.internal.collections.addImage_images;
+    if (e2) {
+      for (var r2 in e2) if (t2 === e2[r2].alias) return e2[r2];
+    }
+  }, m2 = function(t2, e2, r2) {
+    return t2 || e2 || (t2 = -96, e2 = -96), t2 < 0 && (t2 = -1 * r2.width * 72 / t2 / this.internal.scaleFactor), e2 < 0 && (e2 = -1 * r2.height * 72 / e2 / this.internal.scaleFactor), 0 === t2 && (t2 = e2 * r2.width / r2.height), 0 === e2 && (e2 = t2 * r2.height / r2.width), [t2, e2];
+  }, v2 = function(t2, e2, r2, n3, i3, a3) {
+    var o3 = m2.call(this, r2, n3, i3), s3 = this.internal.getCoordinateString, c3 = this.internal.getVerticalCoordinateString, u2 = h2.call(this);
+    if (r2 = o3[0], n3 = o3[1], u2[i3.index] = i3, a3) {
+      a3 *= Math.PI / 180;
+      var l3 = Math.cos(a3), f3 = Math.sin(a3), d3 = function(t3) {
+        return t3.toFixed(4);
+      }, p3 = [d3(l3), d3(f3), d3(-1 * f3), d3(l3), 0, 0, "cm"];
+    }
+    this.internal.write("q"), a3 ? (this.internal.write([1, "0", "0", 1, s3(t2), c3(e2 + n3), "cm"].join(" ")), this.internal.write(p3.join(" ")), this.internal.write([s3(r2), "0", "0", s3(n3), "0", "0", "cm"].join(" "))) : this.internal.write([s3(r2), "0", "0", s3(n3), s3(t2), c3(e2 + n3), "cm"].join(" ")), this.isAdvancedAPI() && this.internal.write([1, 0, 0, -1, 0, 0, "cm"].join(" ")), this.internal.write("/I" + i3.index + " Do"), this.internal.write("Q");
+  }, b3 = e.color_spaces = { DEVICE_RGB: "DeviceRGB", DEVICE_GRAY: "DeviceGray", DEVICE_CMYK: "DeviceCMYK", CAL_GREY: "CalGray", CAL_RGB: "CalRGB", LAB: "Lab", ICC_BASED: "ICCBased", INDEXED: "Indexed", PATTERN: "Pattern", SEPARATION: "Separation", DEVICE_N: "DeviceN" };
+  e.decode = { DCT_DECODE: "DCTDecode", FLATE_DECODE: "FlateDecode", LZW_DECODE: "LZWDecode", JPX_DECODE: "JPXDecode", JBIG2_DECODE: "JBIG2Decode", ASCII85_DECODE: "ASCII85Decode", ASCII_HEX_DECODE: "ASCIIHexDecode", RUN_LENGTH_DECODE: "RunLengthDecode", CCITT_FAX_DECODE: "CCITTFaxDecode" };
+  var y2 = e.image_compression = { NONE: "NONE", FAST: "FAST", MEDIUM: "MEDIUM", SLOW: "SLOW" }, w2 = e.__addimage__.sHashCode = function(t2) {
+    var e2, r2, n3 = 0;
+    if ("string" == typeof t2) for (r2 = t2.length, e2 = 0; e2 < r2; e2++) n3 = (n3 << 5) - n3 + t2.charCodeAt(e2), n3 |= 0;
+    else if (x2(t2)) for (r2 = t2.byteLength / 2, e2 = 0; e2 < r2; e2++) n3 = (n3 << 5) - n3 + t2[e2], n3 |= 0;
+    return n3;
+  }, N2 = e.__addimage__.validateStringAsBase64 = function(t2) {
+    (t2 = t2 || "").toString().trim();
+    var e2 = true;
+    return 0 === t2.length && (e2 = false), t2.length % 4 != 0 && (e2 = false), false === /^[A-Za-z0-9+/]+$/.test(t2.substr(0, t2.length - 2)) && (e2 = false), false === /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(t2.substr(-2)) && (e2 = false), e2;
+  }, L2 = e.__addimage__.extractImageFromDataUrl = function(t2) {
+    var e2 = (t2 = t2 || "").split("base64,"), r2 = null;
+    if (2 === e2.length) {
+      var n3 = /^data:(\w*\/\w*);*(charset=(?!charset=)[\w=-]*)*;*$/.exec(e2[0]);
+      Array.isArray(n3) && (r2 = { mimeType: n3[1], charset: n3[2], data: e2[1] });
+    }
+    return r2;
+  }, A2 = e.__addimage__.supportsArrayBuffer = function() {
+    return "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array;
+  };
+  e.__addimage__.isArrayBuffer = function(t2) {
+    return A2() && t2 instanceof ArrayBuffer;
+  };
+  var x2 = e.__addimage__.isArrayBufferView = function(t2) {
+    return A2() && "undefined" != typeof Uint32Array && (t2 instanceof Int8Array || t2 instanceof Uint8Array || "undefined" != typeof Uint8ClampedArray && t2 instanceof Uint8ClampedArray || t2 instanceof Int16Array || t2 instanceof Uint16Array || t2 instanceof Int32Array || t2 instanceof Uint32Array || t2 instanceof Float32Array || t2 instanceof Float64Array);
+  }, S2 = e.__addimage__.binaryStringToUint8Array = function(t2) {
+    for (var e2 = t2.length, r2 = new Uint8Array(e2), n3 = 0; n3 < e2; n3++) r2[n3] = t2.charCodeAt(n3);
+    return r2;
+  }, _2 = e.__addimage__.arrayBufferToBinaryString = function(t2) {
+    for (var e2 = "", r2 = x2(t2) ? t2 : new Uint8Array(t2), n3 = 0; n3 < r2.length; n3 += 8192) e2 += String.fromCharCode.apply(null, r2.subarray(n3, n3 + 8192));
+    return e2;
+  };
+  e.addImage = function() {
+    var e2, n3, i3, a3, o3, s3, u2, h3, l3;
+    if ("number" == typeof arguments[1] ? (n3 = r, i3 = arguments[1], a3 = arguments[2], o3 = arguments[3], s3 = arguments[4], u2 = arguments[5], h3 = arguments[6], l3 = arguments[7]) : (n3 = arguments[1], i3 = arguments[2], a3 = arguments[3], o3 = arguments[4], s3 = arguments[5], u2 = arguments[6], h3 = arguments[7], l3 = arguments[8]), "object" === _typeof(e2 = arguments[0]) && !d2(e2) && "imageData" in e2) {
+      var f3 = e2;
+      e2 = f3.imageData, n3 = f3.format || n3 || r, i3 = f3.x || i3 || 0, a3 = f3.y || a3 || 0, o3 = f3.w || f3.width || o3, s3 = f3.h || f3.height || s3, u2 = f3.alias || u2, h3 = f3.compression || h3, l3 = f3.rotation || f3.angle || l3;
+    }
+    var p3 = this.internal.getFilters();
+    if (void 0 === h3 && -1 !== p3.indexOf("FlateEncode") && (h3 = "SLOW"), isNaN(i3) || isNaN(a3)) throw new Error("Invalid coordinates passed to jsPDF.addImage");
+    c2.call(this);
+    var g3 = P2.call(this, e2, n3, u2, h3);
+    return v2.call(this, i3, a3, o3, s3, g3, l3), this;
+  };
+  var P2 = function(t2, n3, a3, o3) {
+    var s3, c3, u2;
+    if ("string" == typeof t2 && i2(t2) === r) {
+      t2 = unescape(t2);
+      var h3 = k2(t2, false);
+      ("" !== h3 || void 0 !== (h3 = e.loadFile(t2, true))) && (t2 = h3);
+    }
+    if (d2(t2) && (t2 = p2(t2, n3)), n3 = i2(t2, n3), !f2(n3)) throw new Error("addImage does not support files of type '" + n3 + "', please ensure that a plugin for '" + n3 + "' support is added.");
+    if ((null == (u2 = a3) || 0 === u2.length) && (a3 = function(t3) {
+      return "string" == typeof t3 || x2(t3) ? w2(t3) : x2(t3.data) ? w2(t3.data) : null;
+    }(t2)), (s3 = g2.call(this, a3)) || (A2() && (t2 instanceof Uint8Array || "RGBA" === n3 || (c3 = t2, t2 = S2(t2))), s3 = this["process" + n3.toUpperCase()](t2, l2.call(this), a3, function(t3) {
+      return t3 && "string" == typeof t3 && (t3 = t3.toUpperCase()), t3 in e.image_compression ? t3 : y2.NONE;
+    }(o3), c3)), !s3) throw new Error("An unknown error occurred whilst processing the image.");
+    return s3;
+  }, k2 = e.__addimage__.convertBase64ToBinaryString = function(t2, e2) {
+    var r2;
+    e2 = "boolean" != typeof e2 || e2;
+    var n3, i3 = "";
+    if ("string" == typeof t2) {
+      n3 = null !== (r2 = L2(t2)) ? r2.data : t2;
+      try {
+        i3 = u(n3);
+      } catch (t3) {
+        if (e2) throw N2(n3) ? new Error("atob-Error in jsPDF.convertBase64ToBinaryString " + t3.message) : new Error("Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString ");
+      }
+    }
+    return i3;
+  };
+  e.getImageProperties = function(t2) {
+    var n3, a3, o3 = "";
+    if (d2(t2) && (t2 = p2(t2)), "string" == typeof t2 && i2(t2) === r && ("" === (o3 = k2(t2, false)) && (o3 = e.loadFile(t2) || ""), t2 = o3), a3 = i2(t2), !f2(a3)) throw new Error("addImage does not support files of type '" + a3 + "', please ensure that a plugin for '" + a3 + "' support is added.");
+    if (!A2() || t2 instanceof Uint8Array || (t2 = S2(t2)), !(n3 = this["process" + a3.toUpperCase()](t2))) throw new Error("An unknown error occurred whilst processing the image");
+    return n3.fileType = a3, n3;
+  };
+}(E.API), /**
+ * @license
+ * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var e = function(t3) {
+    if (void 0 !== t3 && "" != t3) return true;
+  };
+  E.API.events.push(["addPage", function(t3) {
+    this.internal.getPageInfo(t3.pageNumber).pageContext.annotations = [];
+  }]), t2.events.push(["putPage", function(t3) {
+    for (var r, n2, i2, a2 = this.internal.getCoordinateString, o2 = this.internal.getVerticalCoordinateString, s2 = this.internal.getPageInfoByObjId(t3.objId), c2 = t3.pageContext.annotations, u2 = false, h2 = 0; h2 < c2.length && !u2; h2++) switch ((r = c2[h2]).type) {
+      case "link":
+        (e(r.options.url) || e(r.options.pageNumber)) && (u2 = true);
+        break;
+      case "reference":
+      case "text":
+      case "freetext":
+        u2 = true;
+    }
+    if (0 != u2) {
+      this.internal.write("/Annots [");
+      for (var l2 = 0; l2 < c2.length; l2++) {
+        r = c2[l2];
+        var f2 = this.internal.pdfEscape, d2 = this.internal.getEncryptor(t3.objId);
+        switch (r.type) {
+          case "reference":
+            this.internal.write(" " + r.object.objId + " 0 R ");
+            break;
+          case "text":
+            var p2 = this.internal.newAdditionalObject(), g2 = this.internal.newAdditionalObject(), m2 = this.internal.getEncryptor(p2.objId), v2 = r.title || "Note";
+            i2 = "<</Type /Annot /Subtype /Text " + (n2 = "/Rect [" + a2(r.bounds.x) + " " + o2(r.bounds.y + r.bounds.h) + " " + a2(r.bounds.x + r.bounds.w) + " " + o2(r.bounds.y) + "] ") + "/Contents (" + f2(m2(r.contents)) + ")", i2 += " /Popup " + g2.objId + " 0 R", i2 += " /P " + s2.objId + " 0 R", i2 += " /T (" + f2(m2(v2)) + ") >>", p2.content = i2;
+            var b3 = p2.objId + " 0 R";
+            i2 = "<</Type /Annot /Subtype /Popup " + (n2 = "/Rect [" + a2(r.bounds.x + 30) + " " + o2(r.bounds.y + r.bounds.h) + " " + a2(r.bounds.x + r.bounds.w + 30) + " " + o2(r.bounds.y) + "] ") + " /Parent " + b3, r.open && (i2 += " /Open true"), i2 += " >>", g2.content = i2, this.internal.write(p2.objId, "0 R", g2.objId, "0 R");
+            break;
+          case "freetext":
+            n2 = "/Rect [" + a2(r.bounds.x) + " " + o2(r.bounds.y) + " " + a2(r.bounds.x + r.bounds.w) + " " + o2(r.bounds.y + r.bounds.h) + "] ";
+            var y2 = r.color || "#000000";
+            i2 = "<</Type /Annot /Subtype /FreeText " + n2 + "/Contents (" + f2(d2(r.contents)) + ")", i2 += " /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#" + y2 + ")", i2 += " /Border [0 0 0]", i2 += " >>", this.internal.write(i2);
+            break;
+          case "link":
+            if (r.options.name) {
+              var w2 = this.annotations._nameMap[r.options.name];
+              r.options.pageNumber = w2.page, r.options.top = w2.y;
+            } else r.options.top || (r.options.top = 0);
+            if (n2 = "/Rect [" + r.finalBounds.x + " " + r.finalBounds.y + " " + r.finalBounds.w + " " + r.finalBounds.h + "] ", i2 = "", r.options.url) i2 = "<</Type /Annot /Subtype /Link " + n2 + "/Border [0 0 0] /A <</S /URI /URI (" + f2(d2(r.options.url)) + ") >>";
+            else if (r.options.pageNumber) {
+              switch (i2 = "<</Type /Annot /Subtype /Link " + n2 + "/Border [0 0 0] /Dest [" + this.internal.getPageInfo(r.options.pageNumber).objId + " 0 R", r.options.magFactor = r.options.magFactor || "XYZ", r.options.magFactor) {
+                case "Fit":
+                  i2 += " /Fit]";
+                  break;
+                case "FitH":
+                  i2 += " /FitH " + r.options.top + "]";
+                  break;
+                case "FitV":
+                  r.options.left = r.options.left || 0, i2 += " /FitV " + r.options.left + "]";
+                  break;
+                case "XYZ":
+                default:
+                  var N2 = o2(r.options.top);
+                  r.options.left = r.options.left || 0, void 0 === r.options.zoom && (r.options.zoom = 0), i2 += " /XYZ " + r.options.left + " " + N2 + " " + r.options.zoom + "]";
+              }
+            }
+            "" != i2 && (i2 += " >>", this.internal.write(i2));
+        }
+      }
+      this.internal.write("]");
+    }
+  }]), t2.createAnnotation = function(t3) {
+    var e2 = this.internal.getCurrentPageInfo();
+    switch (t3.type) {
+      case "link":
+        this.link(t3.bounds.x, t3.bounds.y, t3.bounds.w, t3.bounds.h, t3);
+        break;
+      case "text":
+      case "freetext":
+        e2.pageContext.annotations.push(t3);
+    }
+  }, t2.link = function(t3, e2, r, n2, i2) {
+    var a2 = this.internal.getCurrentPageInfo(), o2 = this.internal.getCoordinateString, s2 = this.internal.getVerticalCoordinateString;
+    a2.pageContext.annotations.push({ finalBounds: { x: o2(t3), y: s2(e2), w: o2(t3 + r), h: s2(e2 + n2) }, options: i2, type: "link" });
+  }, t2.textWithLink = function(t3, e2, r, n2) {
+    var i2, a2, o2 = this.getTextWidth(t3), s2 = this.internal.getLineHeight() / this.internal.scaleFactor;
+    if (void 0 !== n2.maxWidth) {
+      a2 = n2.maxWidth;
+      var c2 = this.splitTextToSize(t3, a2).length;
+      i2 = Math.ceil(s2 * c2);
+    } else a2 = o2, i2 = s2;
+    return this.text(t3, e2, r, n2), r += 0.2 * s2, "center" === n2.align && (e2 -= o2 / 2), "right" === n2.align && (e2 -= o2), this.link(e2, r - s2, a2, i2, n2), o2;
+  }, t2.getTextWidth = function(t3) {
+    var e2 = this.internal.getFontSize();
+    return this.getStringUnitWidth(t3) * e2 / this.internal.scaleFactor;
+  };
+}(E.API), /**
+ * @license
+ * Copyright (c) 2017 Aras Abbasi
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var e = { 1569: [65152], 1570: [65153, 65154], 1571: [65155, 65156], 1572: [65157, 65158], 1573: [65159, 65160], 1574: [65161, 65162, 65163, 65164], 1575: [65165, 65166], 1576: [65167, 65168, 65169, 65170], 1577: [65171, 65172], 1578: [65173, 65174, 65175, 65176], 1579: [65177, 65178, 65179, 65180], 1580: [65181, 65182, 65183, 65184], 1581: [65185, 65186, 65187, 65188], 1582: [65189, 65190, 65191, 65192], 1583: [65193, 65194], 1584: [65195, 65196], 1585: [65197, 65198], 1586: [65199, 65200], 1587: [65201, 65202, 65203, 65204], 1588: [65205, 65206, 65207, 65208], 1589: [65209, 65210, 65211, 65212], 1590: [65213, 65214, 65215, 65216], 1591: [65217, 65218, 65219, 65220], 1592: [65221, 65222, 65223, 65224], 1593: [65225, 65226, 65227, 65228], 1594: [65229, 65230, 65231, 65232], 1601: [65233, 65234, 65235, 65236], 1602: [65237, 65238, 65239, 65240], 1603: [65241, 65242, 65243, 65244], 1604: [65245, 65246, 65247, 65248], 1605: [65249, 65250, 65251, 65252], 1606: [65253, 65254, 65255, 65256], 1607: [65257, 65258, 65259, 65260], 1608: [65261, 65262], 1609: [65263, 65264, 64488, 64489], 1610: [65265, 65266, 65267, 65268], 1649: [64336, 64337], 1655: [64477], 1657: [64358, 64359, 64360, 64361], 1658: [64350, 64351, 64352, 64353], 1659: [64338, 64339, 64340, 64341], 1662: [64342, 64343, 64344, 64345], 1663: [64354, 64355, 64356, 64357], 1664: [64346, 64347, 64348, 64349], 1667: [64374, 64375, 64376, 64377], 1668: [64370, 64371, 64372, 64373], 1670: [64378, 64379, 64380, 64381], 1671: [64382, 64383, 64384, 64385], 1672: [64392, 64393], 1676: [64388, 64389], 1677: [64386, 64387], 1678: [64390, 64391], 1681: [64396, 64397], 1688: [64394, 64395], 1700: [64362, 64363, 64364, 64365], 1702: [64366, 64367, 64368, 64369], 1705: [64398, 64399, 64400, 64401], 1709: [64467, 64468, 64469, 64470], 1711: [64402, 64403, 64404, 64405], 1713: [64410, 64411, 64412, 64413], 1715: [64406, 64407, 64408, 64409], 1722: [64414, 64415], 1723: [64416, 64417, 64418, 64419], 1726: [64426, 64427, 64428, 64429], 1728: [64420, 64421], 1729: [64422, 64423, 64424, 64425], 1733: [64480, 64481], 1734: [64473, 64474], 1735: [64471, 64472], 1736: [64475, 64476], 1737: [64482, 64483], 1739: [64478, 64479], 1740: [64508, 64509, 64510, 64511], 1744: [64484, 64485, 64486, 64487], 1746: [64430, 64431], 1747: [64432, 64433] }, r = { 65247: { 65154: 65269, 65156: 65271, 65160: 65273, 65166: 65275 }, 65248: { 65154: 65270, 65156: 65272, 65160: 65274, 65166: 65276 }, 65165: { 65247: { 65248: { 65258: 65010 } } }, 1617: { 1612: 64606, 1613: 64607, 1614: 64608, 1615: 64609, 1616: 64610 } }, n2 = { 1612: 64606, 1613: 64607, 1614: 64608, 1615: 64609, 1616: 64610 }, i2 = [1570, 1571, 1573, 1575];
+  t2.__arabicParser__ = {};
+  var a2 = t2.__arabicParser__.isInArabicSubstitutionA = function(t3) {
+    return void 0 !== e[t3.charCodeAt(0)];
+  }, o2 = t2.__arabicParser__.isArabicLetter = function(t3) {
+    return "string" == typeof t3 && /^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]+$/.test(t3);
+  }, s2 = t2.__arabicParser__.isArabicEndLetter = function(t3) {
+    return o2(t3) && a2(t3) && e[t3.charCodeAt(0)].length <= 2;
+  }, c2 = t2.__arabicParser__.isArabicAlfLetter = function(t3) {
+    return o2(t3) && i2.indexOf(t3.charCodeAt(0)) >= 0;
+  };
+  t2.__arabicParser__.arabicLetterHasIsolatedForm = function(t3) {
+    return o2(t3) && a2(t3) && e[t3.charCodeAt(0)].length >= 1;
+  };
+  var u2 = t2.__arabicParser__.arabicLetterHasFinalForm = function(t3) {
+    return o2(t3) && a2(t3) && e[t3.charCodeAt(0)].length >= 2;
+  };
+  t2.__arabicParser__.arabicLetterHasInitialForm = function(t3) {
+    return o2(t3) && a2(t3) && e[t3.charCodeAt(0)].length >= 3;
+  };
+  var h2 = t2.__arabicParser__.arabicLetterHasMedialForm = function(t3) {
+    return o2(t3) && a2(t3) && 4 == e[t3.charCodeAt(0)].length;
+  }, l2 = t2.__arabicParser__.resolveLigatures = function(t3) {
+    var e2 = 0, n3 = r, i3 = "", a3 = 0;
+    for (e2 = 0; e2 < t3.length; e2 += 1) void 0 !== n3[t3.charCodeAt(e2)] ? (a3++, "number" == typeof (n3 = n3[t3.charCodeAt(e2)]) && (i3 += String.fromCharCode(n3), n3 = r, a3 = 0), e2 === t3.length - 1 && (n3 = r, i3 += t3.charAt(e2 - (a3 - 1)), e2 -= a3 - 1, a3 = 0)) : (n3 = r, i3 += t3.charAt(e2 - a3), e2 -= a3, a3 = 0);
+    return i3;
+  };
+  t2.__arabicParser__.isArabicDiacritic = function(t3) {
+    return void 0 !== t3 && void 0 !== n2[t3.charCodeAt(0)];
+  };
+  var f2 = t2.__arabicParser__.getCorrectForm = function(t3, e2, r2) {
+    return o2(t3) ? false === a2(t3) ? -1 : !u2(t3) || !o2(e2) && !o2(r2) || !o2(r2) && s2(e2) || s2(t3) && !o2(e2) || s2(t3) && c2(e2) || s2(t3) && s2(e2) ? 0 : h2(t3) && o2(e2) && !s2(e2) && o2(r2) && u2(r2) ? 3 : s2(t3) || !o2(r2) ? 1 : 2 : -1;
+  }, d2 = function(t3) {
+    var r2 = 0, n3 = 0, i3 = 0, a3 = "", s3 = "", c3 = "", u3 = (t3 = t3 || "").split("\\s+"), h3 = [];
+    for (r2 = 0; r2 < u3.length; r2 += 1) {
+      for (h3.push(""), n3 = 0; n3 < u3[r2].length; n3 += 1) a3 = u3[r2][n3], s3 = u3[r2][n3 - 1], c3 = u3[r2][n3 + 1], o2(a3) ? (i3 = f2(a3, s3, c3), h3[r2] += -1 !== i3 ? String.fromCharCode(e[a3.charCodeAt(0)][i3]) : a3) : h3[r2] += a3;
+      h3[r2] = l2(h3[r2]);
+    }
+    return h3.join(" ");
+  }, p2 = t2.__arabicParser__.processArabic = t2.processArabic = function() {
+    var t3, e2 = "string" == typeof arguments[0] ? arguments[0] : arguments[0].text, r2 = [];
+    if (Array.isArray(e2)) {
+      var n3 = 0;
+      for (r2 = [], n3 = 0; n3 < e2.length; n3 += 1) Array.isArray(e2[n3]) ? r2.push([d2(e2[n3][0]), e2[n3][1], e2[n3][2]]) : r2.push([d2(e2[n3])]);
+      t3 = r2;
+    } else t3 = d2(e2);
+    return "string" == typeof arguments[0] ? t3 : (arguments[0].text = t3, arguments[0]);
+  };
+  t2.events.push(["preProcessText", p2]);
+}(E.API), E.API.autoPrint = function(t2) {
+  var e;
+  switch ((t2 = t2 || {}).variant = t2.variant || "non-conform", t2.variant) {
+    case "javascript":
+      this.addJS("print({});");
+      break;
+    case "non-conform":
+    default:
+      this.internal.events.subscribe("postPutResources", function() {
+        e = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /Named"), this.internal.out("/Type /Action"), this.internal.out("/N /Print"), this.internal.out(">>"), this.internal.out("endobj");
+      }), this.internal.events.subscribe("putCatalog", function() {
+        this.internal.out("/OpenAction " + e + " 0 R");
+      });
+  }
+  return this;
+}, /**
+ * @license
+ * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var e = function() {
+    var t3 = void 0;
+    Object.defineProperty(this, "pdf", { get: function() {
+      return t3;
+    }, set: function(e3) {
+      t3 = e3;
+    } });
+    var e2 = 150;
+    Object.defineProperty(this, "width", { get: function() {
+      return e2;
+    }, set: function(t4) {
+      e2 = isNaN(t4) || false === Number.isInteger(t4) || t4 < 0 ? 150 : t4, this.getContext("2d").pageWrapXEnabled && (this.getContext("2d").pageWrapX = e2 + 1);
+    } });
+    var r = 300;
+    Object.defineProperty(this, "height", { get: function() {
+      return r;
+    }, set: function(t4) {
+      r = isNaN(t4) || false === Number.isInteger(t4) || t4 < 0 ? 300 : t4, this.getContext("2d").pageWrapYEnabled && (this.getContext("2d").pageWrapY = r + 1);
+    } });
+    var n2 = [];
+    Object.defineProperty(this, "childNodes", { get: function() {
+      return n2;
+    }, set: function(t4) {
+      n2 = t4;
+    } });
+    var i2 = {};
+    Object.defineProperty(this, "style", { get: function() {
+      return i2;
+    }, set: function(t4) {
+      i2 = t4;
+    } }), Object.defineProperty(this, "parentNode", {});
+  };
+  e.prototype.getContext = function(t3, e2) {
+    var r;
+    if ("2d" !== (t3 = t3 || "2d")) return null;
+    for (r in e2) this.pdf.context2d.hasOwnProperty(r) && (this.pdf.context2d[r] = e2[r]);
+    return this.pdf.context2d._canvas = this, this.pdf.context2d;
+  }, e.prototype.toDataURL = function() {
+    throw new Error("toDataURL is not implemented.");
+  }, t2.events.push(["initialized", function() {
+    this.canvas = new e(), this.canvas.pdf = this;
+  }]);
+}(E.API), function(e) {
+  var r = { left: 0, top: 0, bottom: 0, right: 0 }, n2 = false, i2 = function() {
+    void 0 === this.internal.__cell__ && (this.internal.__cell__ = {}, this.internal.__cell__.padding = 3, this.internal.__cell__.headerFunction = void 0, this.internal.__cell__.margins = Object.assign({}, r), this.internal.__cell__.margins.width = this.getPageWidth(), a2.call(this));
+  }, a2 = function() {
+    this.internal.__cell__.lastCell = new o2(), this.internal.__cell__.pages = 1;
+  }, o2 = function() {
+    var t2 = arguments[0];
+    Object.defineProperty(this, "x", { enumerable: true, get: function() {
+      return t2;
+    }, set: function(e3) {
+      t2 = e3;
+    } });
+    var e2 = arguments[1];
+    Object.defineProperty(this, "y", { enumerable: true, get: function() {
+      return e2;
+    }, set: function(t3) {
+      e2 = t3;
+    } });
+    var r2 = arguments[2];
+    Object.defineProperty(this, "width", { enumerable: true, get: function() {
+      return r2;
+    }, set: function(t3) {
+      r2 = t3;
+    } });
+    var n3 = arguments[3];
+    Object.defineProperty(this, "height", { enumerable: true, get: function() {
+      return n3;
+    }, set: function(t3) {
+      n3 = t3;
+    } });
+    var i3 = arguments[4];
+    Object.defineProperty(this, "text", { enumerable: true, get: function() {
+      return i3;
+    }, set: function(t3) {
+      i3 = t3;
+    } });
+    var a3 = arguments[5];
+    Object.defineProperty(this, "lineNumber", { enumerable: true, get: function() {
+      return a3;
+    }, set: function(t3) {
+      a3 = t3;
+    } });
+    var o3 = arguments[6];
+    return Object.defineProperty(this, "align", { enumerable: true, get: function() {
+      return o3;
+    }, set: function(t3) {
+      o3 = t3;
+    } }), this;
+  };
+  o2.prototype.clone = function() {
+    return new o2(this.x, this.y, this.width, this.height, this.text, this.lineNumber, this.align);
+  }, o2.prototype.toArray = function() {
+    return [this.x, this.y, this.width, this.height, this.text, this.lineNumber, this.align];
+  }, e.setHeaderFunction = function(t2) {
+    return i2.call(this), this.internal.__cell__.headerFunction = "function" == typeof t2 ? t2 : void 0, this;
+  }, e.getTextDimensions = function(t2, e2) {
+    i2.call(this);
+    var r2 = (e2 = e2 || {}).fontSize || this.getFontSize(), n3 = e2.font || this.getFont(), a3 = e2.scaleFactor || this.internal.scaleFactor, o3 = 0, s3 = 0, c3 = 0, u2 = this;
+    if (!Array.isArray(t2) && "string" != typeof t2) {
+      if ("number" != typeof t2) throw new Error("getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.");
+      t2 = String(t2);
+    }
+    var h2 = e2.maxWidth;
+    h2 > 0 ? "string" == typeof t2 ? t2 = this.splitTextToSize(t2, h2) : "[object Array]" === Object.prototype.toString.call(t2) && (t2 = t2.reduce(function(t3, e3) {
+      return t3.concat(u2.splitTextToSize(e3, h2));
+    }, [])) : t2 = Array.isArray(t2) ? t2 : [t2];
+    for (var l2 = 0; l2 < t2.length; l2++) o3 < (c3 = this.getStringUnitWidth(t2[l2], { font: n3 }) * r2) && (o3 = c3);
+    return 0 !== o3 && (s3 = t2.length), { w: o3 /= a3, h: Math.max((s3 * r2 * this.getLineHeightFactor() - r2 * (this.getLineHeightFactor() - 1)) / a3, 0) };
+  }, e.cellAddPage = function() {
+    i2.call(this), this.addPage();
+    var t2 = this.internal.__cell__.margins || r;
+    return this.internal.__cell__.lastCell = new o2(t2.left, t2.top, void 0, void 0), this.internal.__cell__.pages += 1, this;
+  };
+  var s2 = e.cell = function() {
+    var t2;
+    t2 = arguments[0] instanceof o2 ? arguments[0] : new o2(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]), i2.call(this);
+    var e2 = this.internal.__cell__.lastCell, a3 = this.internal.__cell__.padding, s3 = this.internal.__cell__.margins || r, c3 = this.internal.__cell__.tableHeaderRow, u2 = this.internal.__cell__.printHeaders;
+    return void 0 !== e2.lineNumber && (e2.lineNumber === t2.lineNumber ? (t2.x = (e2.x || 0) + (e2.width || 0), t2.y = e2.y || 0) : e2.y + e2.height + t2.height + s3.bottom > this.getPageHeight() ? (this.cellAddPage(), t2.y = s3.top, u2 && c3 && (this.printHeaderRow(t2.lineNumber, true), t2.y += c3[0].height)) : t2.y = e2.y + e2.height || t2.y), void 0 !== t2.text[0] && (this.rect(t2.x, t2.y, t2.width, t2.height, true === n2 ? "FD" : void 0), "right" === t2.align ? this.text(t2.text, t2.x + t2.width - a3, t2.y + a3, { align: "right", baseline: "top" }) : "center" === t2.align ? this.text(t2.text, t2.x + t2.width / 2, t2.y + a3, { align: "center", baseline: "top", maxWidth: t2.width - a3 - a3 }) : this.text(t2.text, t2.x + a3, t2.y + a3, { align: "left", baseline: "top", maxWidth: t2.width - a3 - a3 })), this.internal.__cell__.lastCell = t2, this;
+  };
+  e.table = function(e2, n3, u2, h2, l2) {
+    if (i2.call(this), !u2) throw new Error("No data for PDF table.");
+    var f2, d2, p2, g2, m2 = [], v2 = [], b3 = [], y2 = {}, w2 = {}, N2 = [], L2 = [], A2 = (l2 = l2 || {}).autoSize || false, x2 = false !== l2.printHeaders, S2 = l2.css && void 0 !== l2.css["font-size"] ? 16 * l2.css["font-size"] : l2.fontSize || 12, _2 = l2.margins || Object.assign({ width: this.getPageWidth() }, r), P2 = "number" == typeof l2.padding ? l2.padding : 3, k2 = l2.headerBackgroundColor || "#c8c8c8", I2 = l2.headerTextColor || "#000";
+    if (a2.call(this), this.internal.__cell__.printHeaders = x2, this.internal.__cell__.margins = _2, this.internal.__cell__.table_font_size = S2, this.internal.__cell__.padding = P2, this.internal.__cell__.headerBackgroundColor = k2, this.internal.__cell__.headerTextColor = I2, this.setFontSize(S2), null == h2) v2 = m2 = Object.keys(u2[0]), b3 = m2.map(function() {
+      return "left";
+    });
+    else if (Array.isArray(h2) && "object" === _typeof(h2[0])) for (m2 = h2.map(function(t2) {
+      return t2.name;
+    }), v2 = h2.map(function(t2) {
+      return t2.prompt || t2.name || "";
+    }), b3 = h2.map(function(t2) {
+      return t2.align || "left";
+    }), f2 = 0; f2 < h2.length; f2 += 1) w2[h2[f2].name] = h2[f2].width * (19.049976 / 25.4);
+    else Array.isArray(h2) && "string" == typeof h2[0] && (v2 = m2 = h2, b3 = m2.map(function() {
+      return "left";
+    }));
+    if (A2 || Array.isArray(h2) && "string" == typeof h2[0]) for (f2 = 0; f2 < m2.length; f2 += 1) {
+      for (y2[g2 = m2[f2]] = u2.map(function(t2) {
+        return t2[g2];
+      }), this.setFont(void 0, "bold"), N2.push(this.getTextDimensions(v2[f2], { fontSize: this.internal.__cell__.table_font_size, scaleFactor: this.internal.scaleFactor }).w), d2 = y2[g2], this.setFont(void 0, "normal"), p2 = 0; p2 < d2.length; p2 += 1) N2.push(this.getTextDimensions(d2[p2], { fontSize: this.internal.__cell__.table_font_size, scaleFactor: this.internal.scaleFactor }).w);
+      w2[g2] = Math.max.apply(null, N2) + P2 + P2, N2 = [];
+    }
+    if (x2) {
+      var F2 = {};
+      for (f2 = 0; f2 < m2.length; f2 += 1) F2[m2[f2]] = {}, F2[m2[f2]].text = v2[f2], F2[m2[f2]].align = b3[f2];
+      var C2 = c2.call(this, F2, w2);
+      L2 = m2.map(function(t2) {
+        return new o2(e2, n3, w2[t2], C2, F2[t2].text, void 0, F2[t2].align);
+      }), this.setTableHeaderRow(L2), this.printHeaderRow(1, false);
+    }
+    var j2 = h2.reduce(function(t2, e3) {
+      return t2[e3.name] = e3.align, t2;
+    }, {});
+    for (f2 = 0; f2 < u2.length; f2 += 1) {
+      "rowStart" in l2 && l2.rowStart instanceof Function && l2.rowStart({ row: f2, data: u2[f2] }, this);
+      var O2 = c2.call(this, u2[f2], w2);
+      for (p2 = 0; p2 < m2.length; p2 += 1) {
+        var B2 = u2[f2][m2[p2]];
+        "cellStart" in l2 && l2.cellStart instanceof Function && l2.cellStart({ row: f2, col: p2, data: B2 }, this), s2.call(this, new o2(e2, n3, w2[m2[p2]], O2, B2, f2 + 2, j2[m2[p2]]));
+      }
+    }
+    return this.internal.__cell__.table_x = e2, this.internal.__cell__.table_y = n3, this;
+  };
+  var c2 = function(t2, e2) {
+    var r2 = this.internal.__cell__.padding, n3 = this.internal.__cell__.table_font_size, i3 = this.internal.scaleFactor;
+    return Object.keys(t2).map(function(n4) {
+      var i4 = t2[n4];
+      return this.splitTextToSize(i4.hasOwnProperty("text") ? i4.text : i4, e2[n4] - r2 - r2);
+    }, this).map(function(t3) {
+      return this.getLineHeightFactor() * t3.length * n3 / i3 + r2 + r2;
+    }, this).reduce(function(t3, e3) {
+      return Math.max(t3, e3);
+    }, 0);
+  };
+  e.setTableHeaderRow = function(t2) {
+    i2.call(this), this.internal.__cell__.tableHeaderRow = t2;
+  }, e.printHeaderRow = function(t2, e2) {
+    if (i2.call(this), !this.internal.__cell__.tableHeaderRow) throw new Error("Property tableHeaderRow does not exist.");
+    var r2;
+    if (n2 = true, "function" == typeof this.internal.__cell__.headerFunction) {
+      var a3 = this.internal.__cell__.headerFunction(this, this.internal.__cell__.pages);
+      this.internal.__cell__.lastCell = new o2(a3[0], a3[1], a3[2], a3[3], void 0, -1);
+    }
+    this.setFont(void 0, "bold");
+    for (var c3 = [], u2 = 0; u2 < this.internal.__cell__.tableHeaderRow.length; u2 += 1) {
+      r2 = this.internal.__cell__.tableHeaderRow[u2].clone(), e2 && (r2.y = this.internal.__cell__.margins.top || 0, c3.push(r2)), r2.lineNumber = t2;
+      var h2 = this.getTextColor();
+      this.setTextColor(this.internal.__cell__.headerTextColor), this.setFillColor(this.internal.__cell__.headerBackgroundColor), s2.call(this, r2), this.setTextColor(h2);
+    }
+    c3.length > 0 && this.setTableHeaderRow(c3), this.setFont(void 0, "normal"), n2 = false;
+  };
+}(E.API);
+var Pt = { italic: ["italic", "oblique", "normal"], oblique: ["oblique", "italic", "normal"], normal: ["normal", "oblique", "italic"] };
+var kt = ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"];
+var It = _t(kt);
+var Ft = [100, 200, 300, 400, 500, 600, 700, 800, 900];
+var Ct = _t(Ft);
+function jt(t2) {
+  var e = t2.family.replace(/"|'/g, "").toLowerCase(), r = function(t3) {
+    return Pt[t3 = t3 || "normal"] ? t3 : "normal";
+  }(t2.style), n2 = function(t3) {
+    if (!t3) return 400;
+    if ("number" == typeof t3) return t3 >= 100 && t3 <= 900 && t3 % 100 == 0 ? t3 : 400;
+    if (/^\d00$/.test(t3)) return parseInt(t3);
+    switch (t3) {
+      case "bold":
+        return 700;
+      case "normal":
+      default:
+        return 400;
+    }
+  }(t2.weight), i2 = function(t3) {
+    return "number" == typeof It[t3 = t3 || "normal"] ? t3 : "normal";
+  }(t2.stretch);
+  return { family: e, style: r, weight: n2, stretch: i2, src: t2.src || [], ref: t2.ref || { name: e, style: [i2, r, n2].join(" ") } };
+}
+function Ot(t2, e, r, n2) {
+  var i2;
+  for (i2 = r; i2 >= 0 && i2 < e.length; i2 += n2) if (t2[e[i2]]) return t2[e[i2]];
+  for (i2 = r; i2 >= 0 && i2 < e.length; i2 -= n2) if (t2[e[i2]]) return t2[e[i2]];
+}
+var Bt = { "sans-serif": "helvetica", fixed: "courier", monospace: "courier", terminal: "courier", cursive: "times", fantasy: "times", serif: "times" };
+var Mt = { caption: "times", icon: "times", menu: "times", "message-box": "times", "small-caption": "times", "status-bar": "times" };
+function Et(t2) {
+  return [t2.stretch, t2.style, t2.weight, t2.family].join(" ");
+}
+function qt(t2, e, r) {
+  for (var n2 = (r = r || {}).defaultFontFamily || "times", i2 = Object.assign({}, Bt, r.genericFontFamilies || {}), a2 = null, o2 = null, s2 = 0; s2 < e.length; ++s2) if (i2[(a2 = jt(e[s2])).family] && (a2.family = i2[a2.family]), t2.hasOwnProperty(a2.family)) {
+    o2 = t2[a2.family];
+    break;
+  }
+  if (!(o2 = o2 || t2[n2])) throw new Error("Could not find a font-family for the rule '" + Et(a2) + "' and default family '" + n2 + "'.");
+  if (o2 = function(t3, e2) {
+    if (e2[t3]) return e2[t3];
+    var r2 = It[t3], n3 = r2 <= It.normal ? -1 : 1, i3 = Ot(e2, kt, r2, n3);
+    if (!i3) throw new Error("Could not find a matching font-stretch value for " + t3);
+    return i3;
+  }(a2.stretch, o2), o2 = function(t3, e2) {
+    if (e2[t3]) return e2[t3];
+    for (var r2 = Pt[t3], n3 = 0; n3 < r2.length; ++n3) if (e2[r2[n3]]) return e2[r2[n3]];
+    throw new Error("Could not find a matching font-style for " + t3);
+  }(a2.style, o2), !(o2 = function(t3, e2) {
+    if (e2[t3]) return e2[t3];
+    if (400 === t3 && e2[500]) return e2[500];
+    if (500 === t3 && e2[400]) return e2[400];
+    var r2 = Ct[t3], n3 = Ot(e2, Ft, r2, t3 < 400 ? -1 : 1);
+    if (!n3) throw new Error("Could not find a matching font-weight for value " + t3);
+    return n3;
+  }(a2.weight, o2))) throw new Error("Failed to resolve a font for the rule '" + Et(a2) + "'.");
+  return o2;
+}
+function Dt(t2) {
+  return t2.trimLeft();
+}
+function Rt(t2, e) {
+  for (var r = 0; r < t2.length; ) {
+    if (t2.charAt(r) === e) return [t2.substring(0, r), t2.substring(r + 1)];
+    r += 1;
+  }
+  return null;
+}
+function Tt(t2) {
+  var e = t2.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);
+  return null === e ? null : [e[0], t2.substring(e[0].length)];
+}
+var Ut;
+var zt;
+var Ht;
+var Wt = ["times"];
+!function(e) {
+  var r, n2, i2, o2, s2, c2, u2, h2, l2, d2 = function(t2) {
+    return t2 = t2 || {}, this.isStrokeTransparent = t2.isStrokeTransparent || false, this.strokeOpacity = t2.strokeOpacity || 1, this.strokeStyle = t2.strokeStyle || "#000000", this.fillStyle = t2.fillStyle || "#000000", this.isFillTransparent = t2.isFillTransparent || false, this.fillOpacity = t2.fillOpacity || 1, this.font = t2.font || "10px sans-serif", this.textBaseline = t2.textBaseline || "alphabetic", this.textAlign = t2.textAlign || "left", this.lineWidth = t2.lineWidth || 1, this.lineJoin = t2.lineJoin || "miter", this.lineCap = t2.lineCap || "butt", this.path = t2.path || [], this.transform = void 0 !== t2.transform ? t2.transform.clone() : new h2(), this.globalCompositeOperation = t2.globalCompositeOperation || "normal", this.globalAlpha = t2.globalAlpha || 1, this.clip_path = t2.clip_path || [], this.currentPoint = t2.currentPoint || new c2(), this.miterLimit = t2.miterLimit || 10, this.lastPoint = t2.lastPoint || new c2(), this.lineDashOffset = t2.lineDashOffset || 0, this.lineDash = t2.lineDash || [], this.margin = t2.margin || [0, 0, 0, 0], this.prevPageLastElemOffset = t2.prevPageLastElemOffset || 0, this.ignoreClearRect = "boolean" != typeof t2.ignoreClearRect || t2.ignoreClearRect, this;
+  };
+  e.events.push(["initialized", function() {
+    this.context2d = new p2(this), r = this.internal.f2, n2 = this.internal.getCoordinateString, i2 = this.internal.getVerticalCoordinateString, o2 = this.internal.getHorizontalCoordinate, s2 = this.internal.getVerticalCoordinate, c2 = this.internal.Point, u2 = this.internal.Rectangle, h2 = this.internal.Matrix, l2 = new d2();
+  }]);
+  var p2 = function(t2) {
+    Object.defineProperty(this, "canvas", { get: function() {
+      return { parentNode: false, style: false };
+    } });
+    var e2 = t2;
+    Object.defineProperty(this, "pdf", { get: function() {
+      return e2;
+    } });
+    var r2 = false;
+    Object.defineProperty(this, "pageWrapXEnabled", { get: function() {
+      return r2;
+    }, set: function(t3) {
+      r2 = Boolean(t3);
+    } });
+    var n3 = false;
+    Object.defineProperty(this, "pageWrapYEnabled", { get: function() {
+      return n3;
+    }, set: function(t3) {
+      n3 = Boolean(t3);
+    } });
+    var i3 = 0;
+    Object.defineProperty(this, "posX", { get: function() {
+      return i3;
+    }, set: function(t3) {
+      isNaN(t3) || (i3 = t3);
+    } });
+    var a2 = 0;
+    Object.defineProperty(this, "posY", { get: function() {
+      return a2;
+    }, set: function(t3) {
+      isNaN(t3) || (a2 = t3);
+    } }), Object.defineProperty(this, "margin", { get: function() {
+      return l2.margin;
+    }, set: function(t3) {
+      var e3;
+      "number" == typeof t3 ? e3 = [t3, t3, t3, t3] : ((e3 = new Array(4))[0] = t3[0], e3[1] = t3.length >= 2 ? t3[1] : e3[0], e3[2] = t3.length >= 3 ? t3[2] : e3[0], e3[3] = t3.length >= 4 ? t3[3] : e3[1]), l2.margin = e3;
+    } });
+    var o3 = false;
+    Object.defineProperty(this, "autoPaging", { get: function() {
+      return o3;
+    }, set: function(t3) {
+      o3 = t3;
+    } });
+    var s3 = 0;
+    Object.defineProperty(this, "lastBreak", { get: function() {
+      return s3;
+    }, set: function(t3) {
+      s3 = t3;
+    } });
+    var c3 = [];
+    Object.defineProperty(this, "pageBreaks", { get: function() {
+      return c3;
+    }, set: function(t3) {
+      c3 = t3;
+    } }), Object.defineProperty(this, "ctx", { get: function() {
+      return l2;
+    }, set: function(t3) {
+      t3 instanceof d2 && (l2 = t3);
+    } }), Object.defineProperty(this, "path", { get: function() {
+      return l2.path;
+    }, set: function(t3) {
+      l2.path = t3;
+    } });
+    var u3 = [];
+    Object.defineProperty(this, "ctxStack", { get: function() {
+      return u3;
+    }, set: function(t3) {
+      u3 = t3;
+    } }), Object.defineProperty(this, "fillStyle", { get: function() {
+      return this.ctx.fillStyle;
+    }, set: function(t3) {
+      var e3;
+      e3 = g2(t3), this.ctx.fillStyle = e3.style, this.ctx.isFillTransparent = 0 === e3.a, this.ctx.fillOpacity = e3.a, this.pdf.setFillColor(e3.r, e3.g, e3.b, { a: e3.a }), this.pdf.setTextColor(e3.r, e3.g, e3.b, { a: e3.a });
+    } }), Object.defineProperty(this, "strokeStyle", { get: function() {
+      return this.ctx.strokeStyle;
+    }, set: function(t3) {
+      var e3 = g2(t3);
+      this.ctx.strokeStyle = e3.style, this.ctx.isStrokeTransparent = 0 === e3.a, this.ctx.strokeOpacity = e3.a, 0 === e3.a ? this.pdf.setDrawColor(255, 255, 255) : (e3.a, this.pdf.setDrawColor(e3.r, e3.g, e3.b));
+    } }), Object.defineProperty(this, "lineCap", { get: function() {
+      return this.ctx.lineCap;
+    }, set: function(t3) {
+      -1 !== ["butt", "round", "square"].indexOf(t3) && (this.ctx.lineCap = t3, this.pdf.setLineCap(t3));
+    } }), Object.defineProperty(this, "lineWidth", { get: function() {
+      return this.ctx.lineWidth;
+    }, set: function(t3) {
+      isNaN(t3) || (this.ctx.lineWidth = t3, this.pdf.setLineWidth(t3));
+    } }), Object.defineProperty(this, "lineJoin", { get: function() {
+      return this.ctx.lineJoin;
+    }, set: function(t3) {
+      -1 !== ["bevel", "round", "miter"].indexOf(t3) && (this.ctx.lineJoin = t3, this.pdf.setLineJoin(t3));
+    } }), Object.defineProperty(this, "miterLimit", { get: function() {
+      return this.ctx.miterLimit;
+    }, set: function(t3) {
+      isNaN(t3) || (this.ctx.miterLimit = t3, this.pdf.setMiterLimit(t3));
+    } }), Object.defineProperty(this, "textBaseline", { get: function() {
+      return this.ctx.textBaseline;
+    }, set: function(t3) {
+      this.ctx.textBaseline = t3;
+    } }), Object.defineProperty(this, "textAlign", { get: function() {
+      return this.ctx.textAlign;
+    }, set: function(t3) {
+      -1 !== ["right", "end", "center", "left", "start"].indexOf(t3) && (this.ctx.textAlign = t3);
+    } });
+    var h3 = null;
+    function f2(t3, e3) {
+      if (null === h3) {
+        var r3 = function(t4) {
+          var e4 = [];
+          return Object.keys(t4).forEach(function(r4) {
+            t4[r4].forEach(function(t5) {
+              var n4 = null;
+              switch (t5) {
+                case "bold":
+                  n4 = { family: r4, weight: "bold" };
+                  break;
+                case "italic":
+                  n4 = { family: r4, style: "italic" };
+                  break;
+                case "bolditalic":
+                  n4 = { family: r4, weight: "bold", style: "italic" };
+                  break;
+                case "":
+                case "normal":
+                  n4 = { family: r4 };
+              }
+              null !== n4 && (n4.ref = { name: r4, style: t5 }, e4.push(n4));
+            });
+          }), e4;
+        }(t3.getFontList());
+        h3 = function(t4) {
+          for (var e4 = {}, r4 = 0; r4 < t4.length; ++r4) {
+            var n4 = jt(t4[r4]), i4 = n4.family, a3 = n4.stretch, o4 = n4.style, s4 = n4.weight;
+            e4[i4] = e4[i4] || {}, e4[i4][a3] = e4[i4][a3] || {}, e4[i4][a3][o4] = e4[i4][a3][o4] || {}, e4[i4][a3][o4][s4] = n4;
+          }
+          return e4;
+        }(r3.concat(e3));
+      }
+      return h3;
+    }
+    var p3 = null;
+    Object.defineProperty(this, "fontFaces", { get: function() {
+      return p3;
+    }, set: function(t3) {
+      h3 = null, p3 = t3;
+    } }), Object.defineProperty(this, "font", { get: function() {
+      return this.ctx.font;
+    }, set: function(t3) {
+      var e3;
+      if (this.ctx.font = t3, null !== (e3 = /^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z]+?)\s*$/i.exec(t3))) {
+        var r3 = e3[1], n4 = (e3[2], e3[3]), i4 = e3[4], a3 = (e3[5], e3[6]), o4 = /^([.\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i.exec(i4)[2];
+        i4 = "px" === o4 ? Math.floor(parseFloat(i4) * this.pdf.internal.scaleFactor) : "em" === o4 ? Math.floor(parseFloat(i4) * this.pdf.getFontSize()) : Math.floor(parseFloat(i4) * this.pdf.internal.scaleFactor), this.pdf.setFontSize(i4);
+        var s4 = function(t4) {
+          var e4, r4, n5 = [], i5 = t4.trim();
+          if ("" === i5) return Wt;
+          if (i5 in Mt) return [Mt[i5]];
+          for (; "" !== i5; ) {
+            switch (r4 = null, e4 = (i5 = Dt(i5)).charAt(0)) {
+              case '"':
+              case "'":
+                r4 = Rt(i5.substring(1), e4);
+                break;
+              default:
+                r4 = Tt(i5);
+            }
+            if (null === r4) return Wt;
+            if (n5.push(r4[0]), "" !== (i5 = Dt(r4[1])) && "," !== i5.charAt(0)) return Wt;
+            i5 = i5.replace(/^,/, "");
+          }
+          return n5;
+        }(a3);
+        if (this.fontFaces) {
+          var c4 = qt(f2(this.pdf, this.fontFaces), s4.map(function(t4) {
+            return { family: t4, stretch: "normal", weight: n4, style: r3 };
+          }));
+          this.pdf.setFont(c4.ref.name, c4.ref.style);
+        } else {
+          var u4 = "";
+          ("bold" === n4 || parseInt(n4, 10) >= 700 || "bold" === r3) && (u4 = "bold"), "italic" === r3 && (u4 += "italic"), 0 === u4.length && (u4 = "normal");
+          for (var h4 = "", l3 = { arial: "Helvetica", Arial: "Helvetica", verdana: "Helvetica", Verdana: "Helvetica", helvetica: "Helvetica", Helvetica: "Helvetica", "sans-serif": "Helvetica", fixed: "Courier", monospace: "Courier", terminal: "Courier", cursive: "Times", fantasy: "Times", serif: "Times" }, d3 = 0; d3 < s4.length; d3++) {
+            if (void 0 !== this.pdf.internal.getFont(s4[d3], u4, { noFallback: true, disableWarning: true })) {
+              h4 = s4[d3];
+              break;
+            }
+            if ("bolditalic" === u4 && void 0 !== this.pdf.internal.getFont(s4[d3], "bold", { noFallback: true, disableWarning: true })) h4 = s4[d3], u4 = "bold";
+            else if (void 0 !== this.pdf.internal.getFont(s4[d3], "normal", { noFallback: true, disableWarning: true })) {
+              h4 = s4[d3], u4 = "normal";
+              break;
+            }
+          }
+          if ("" === h4) {
+            for (var p4 = 0; p4 < s4.length; p4++) if (l3[s4[p4]]) {
+              h4 = l3[s4[p4]];
+              break;
+            }
+          }
+          h4 = "" === h4 ? "Times" : h4, this.pdf.setFont(h4, u4);
+        }
+      }
+    } }), Object.defineProperty(this, "globalCompositeOperation", { get: function() {
+      return this.ctx.globalCompositeOperation;
+    }, set: function(t3) {
+      this.ctx.globalCompositeOperation = t3;
+    } }), Object.defineProperty(this, "globalAlpha", { get: function() {
+      return this.ctx.globalAlpha;
+    }, set: function(t3) {
+      this.ctx.globalAlpha = t3;
+    } }), Object.defineProperty(this, "lineDashOffset", { get: function() {
+      return this.ctx.lineDashOffset;
+    }, set: function(t3) {
+      this.ctx.lineDashOffset = t3, T2.call(this);
+    } }), Object.defineProperty(this, "lineDash", { get: function() {
+      return this.ctx.lineDash;
+    }, set: function(t3) {
+      this.ctx.lineDash = t3, T2.call(this);
+    } }), Object.defineProperty(this, "ignoreClearRect", { get: function() {
+      return this.ctx.ignoreClearRect;
+    }, set: function(t3) {
+      this.ctx.ignoreClearRect = Boolean(t3);
+    } });
+  };
+  p2.prototype.setLineDash = function(t2) {
+    this.lineDash = t2;
+  }, p2.prototype.getLineDash = function() {
+    return this.lineDash.length % 2 ? this.lineDash.concat(this.lineDash) : this.lineDash.slice();
+  }, p2.prototype.fill = function() {
+    A2.call(this, "fill", false);
+  }, p2.prototype.stroke = function() {
+    A2.call(this, "stroke", false);
+  }, p2.prototype.beginPath = function() {
+    this.path = [{ type: "begin" }];
+  }, p2.prototype.moveTo = function(t2, e2) {
+    if (isNaN(t2) || isNaN(e2)) throw a.error("jsPDF.context2d.moveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.moveTo");
+    var r2 = this.ctx.transform.applyToPoint(new c2(t2, e2));
+    this.path.push({ type: "mt", x: r2.x, y: r2.y }), this.ctx.lastPoint = new c2(t2, e2);
+  }, p2.prototype.closePath = function() {
+    var e2 = new c2(0, 0), r2 = 0;
+    for (r2 = this.path.length - 1; -1 !== r2; r2--) if ("begin" === this.path[r2].type && "object" === _typeof(this.path[r2 + 1]) && "number" == typeof this.path[r2 + 1].x) {
+      e2 = new c2(this.path[r2 + 1].x, this.path[r2 + 1].y);
+      break;
+    }
+    this.path.push({ type: "close" }), this.ctx.lastPoint = new c2(e2.x, e2.y);
+  }, p2.prototype.lineTo = function(t2, e2) {
+    if (isNaN(t2) || isNaN(e2)) throw a.error("jsPDF.context2d.lineTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.lineTo");
+    var r2 = this.ctx.transform.applyToPoint(new c2(t2, e2));
+    this.path.push({ type: "lt", x: r2.x, y: r2.y }), this.ctx.lastPoint = new c2(r2.x, r2.y);
+  }, p2.prototype.clip = function() {
+    this.ctx.clip_path = JSON.parse(JSON.stringify(this.path)), A2.call(this, null, true);
+  }, p2.prototype.quadraticCurveTo = function(t2, e2, r2, n3) {
+    if (isNaN(r2) || isNaN(n3) || isNaN(t2) || isNaN(e2)) throw a.error("jsPDF.context2d.quadraticCurveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.quadraticCurveTo");
+    var i3 = this.ctx.transform.applyToPoint(new c2(r2, n3)), o3 = this.ctx.transform.applyToPoint(new c2(t2, e2));
+    this.path.push({ type: "qct", x1: o3.x, y1: o3.y, x: i3.x, y: i3.y }), this.ctx.lastPoint = new c2(i3.x, i3.y);
+  }, p2.prototype.bezierCurveTo = function(t2, e2, r2, n3, i3, o3) {
+    if (isNaN(i3) || isNaN(o3) || isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n3)) throw a.error("jsPDF.context2d.bezierCurveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.bezierCurveTo");
+    var s3 = this.ctx.transform.applyToPoint(new c2(i3, o3)), u3 = this.ctx.transform.applyToPoint(new c2(t2, e2)), h3 = this.ctx.transform.applyToPoint(new c2(r2, n3));
+    this.path.push({ type: "bct", x1: u3.x, y1: u3.y, x2: h3.x, y2: h3.y, x: s3.x, y: s3.y }), this.ctx.lastPoint = new c2(s3.x, s3.y);
+  }, p2.prototype.arc = function(t2, e2, r2, n3, i3, o3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n3) || isNaN(i3)) throw a.error("jsPDF.context2d.arc: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.arc");
+    if (o3 = Boolean(o3), !this.ctx.transform.isIdentity) {
+      var s3 = this.ctx.transform.applyToPoint(new c2(t2, e2));
+      t2 = s3.x, e2 = s3.y;
+      var u3 = this.ctx.transform.applyToPoint(new c2(0, r2)), h3 = this.ctx.transform.applyToPoint(new c2(0, 0));
+      r2 = Math.sqrt(Math.pow(u3.x - h3.x, 2) + Math.pow(u3.y - h3.y, 2));
+    }
+    Math.abs(i3 - n3) >= 2 * Math.PI && (n3 = 0, i3 = 2 * Math.PI), this.path.push({ type: "arc", x: t2, y: e2, radius: r2, startAngle: n3, endAngle: i3, counterclockwise: o3 });
+  }, p2.prototype.arcTo = function(t2, e2, r2, n3, i3) {
+    throw new Error("arcTo not implemented.");
+  }, p2.prototype.rect = function(t2, e2, r2, n3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n3)) throw a.error("jsPDF.context2d.rect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.rect");
+    this.moveTo(t2, e2), this.lineTo(t2 + r2, e2), this.lineTo(t2 + r2, e2 + n3), this.lineTo(t2, e2 + n3), this.lineTo(t2, e2), this.lineTo(t2 + r2, e2), this.lineTo(t2, e2);
+  }, p2.prototype.fillRect = function(t2, e2, r2, n3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n3)) throw a.error("jsPDF.context2d.fillRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.fillRect");
+    if (!m2.call(this)) {
+      var i3 = {};
+      "butt" !== this.lineCap && (i3.lineCap = this.lineCap, this.lineCap = "butt"), "miter" !== this.lineJoin && (i3.lineJoin = this.lineJoin, this.lineJoin = "miter"), this.beginPath(), this.rect(t2, e2, r2, n3), this.fill(), i3.hasOwnProperty("lineCap") && (this.lineCap = i3.lineCap), i3.hasOwnProperty("lineJoin") && (this.lineJoin = i3.lineJoin);
+    }
+  }, p2.prototype.strokeRect = function(t2, e2, r2, n3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n3)) throw a.error("jsPDF.context2d.strokeRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.strokeRect");
+    v2.call(this) || (this.beginPath(), this.rect(t2, e2, r2, n3), this.stroke());
+  }, p2.prototype.clearRect = function(t2, e2, r2, n3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n3)) throw a.error("jsPDF.context2d.clearRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.clearRect");
+    this.ignoreClearRect || (this.fillStyle = "#ffffff", this.fillRect(t2, e2, r2, n3));
+  }, p2.prototype.save = function(t2) {
+    t2 = "boolean" != typeof t2 || t2;
+    for (var e2 = this.pdf.internal.getCurrentPageInfo().pageNumber, r2 = 0; r2 < this.pdf.internal.getNumberOfPages(); r2++) this.pdf.setPage(r2 + 1), this.pdf.internal.out("q");
+    if (this.pdf.setPage(e2), t2) {
+      this.ctx.fontSize = this.pdf.internal.getFontSize();
+      var n3 = new d2(this.ctx);
+      this.ctxStack.push(this.ctx), this.ctx = n3;
+    }
+  }, p2.prototype.restore = function(t2) {
+    t2 = "boolean" != typeof t2 || t2;
+    for (var e2 = this.pdf.internal.getCurrentPageInfo().pageNumber, r2 = 0; r2 < this.pdf.internal.getNumberOfPages(); r2++) this.pdf.setPage(r2 + 1), this.pdf.internal.out("Q");
+    this.pdf.setPage(e2), t2 && 0 !== this.ctxStack.length && (this.ctx = this.ctxStack.pop(), this.fillStyle = this.ctx.fillStyle, this.strokeStyle = this.ctx.strokeStyle, this.font = this.ctx.font, this.lineCap = this.ctx.lineCap, this.lineWidth = this.ctx.lineWidth, this.lineJoin = this.ctx.lineJoin, this.lineDash = this.ctx.lineDash, this.lineDashOffset = this.ctx.lineDashOffset);
+  }, p2.prototype.toDataURL = function() {
+    throw new Error("toDataUrl not implemented.");
+  };
+  var g2 = function(t2) {
+    var e2, r2, n3, i3;
+    if (true === t2.isCanvasGradient && (t2 = t2.getColor()), !t2) return { r: 0, g: 0, b: 0, a: 0, style: t2 };
+    if (/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(t2)) e2 = 0, r2 = 0, n3 = 0, i3 = 0;
+    else {
+      var a2 = /rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(t2);
+      if (null !== a2) e2 = parseInt(a2[1]), r2 = parseInt(a2[2]), n3 = parseInt(a2[3]), i3 = 1;
+      else if (null !== (a2 = /rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/.exec(t2))) e2 = parseInt(a2[1]), r2 = parseInt(a2[2]), n3 = parseInt(a2[3]), i3 = parseFloat(a2[4]);
+      else {
+        if (i3 = 1, "string" == typeof t2 && "#" !== t2.charAt(0)) {
+          var o3 = new f(t2);
+          t2 = o3.ok ? o3.toHex() : "#000000";
+        }
+        4 === t2.length ? (e2 = t2.substring(1, 2), e2 += e2, r2 = t2.substring(2, 3), r2 += r2, n3 = t2.substring(3, 4), n3 += n3) : (e2 = t2.substring(1, 3), r2 = t2.substring(3, 5), n3 = t2.substring(5, 7)), e2 = parseInt(e2, 16), r2 = parseInt(r2, 16), n3 = parseInt(n3, 16);
+      }
+    }
+    return { r: e2, g: r2, b: n3, a: i3, style: t2 };
+  }, m2 = function() {
+    return this.ctx.isFillTransparent || 0 == this.globalAlpha;
+  }, v2 = function() {
+    return Boolean(this.ctx.isStrokeTransparent || 0 == this.globalAlpha);
+  };
+  p2.prototype.fillText = function(t2, e2, r2, n3) {
+    if (isNaN(e2) || isNaN(r2) || "string" != typeof t2) throw a.error("jsPDF.context2d.fillText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.fillText");
+    if (n3 = isNaN(n3) ? void 0 : n3, !m2.call(this)) {
+      var i3 = q2(this.ctx.transform.rotation), o3 = this.ctx.transform.scaleX;
+      C2.call(this, { text: t2, x: e2, y: r2, scale: o3, angle: i3, align: this.textAlign, maxWidth: n3 });
+    }
+  }, p2.prototype.strokeText = function(t2, e2, r2, n3) {
+    if (isNaN(e2) || isNaN(r2) || "string" != typeof t2) throw a.error("jsPDF.context2d.strokeText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.strokeText");
+    if (!v2.call(this)) {
+      n3 = isNaN(n3) ? void 0 : n3;
+      var i3 = q2(this.ctx.transform.rotation), o3 = this.ctx.transform.scaleX;
+      C2.call(this, { text: t2, x: e2, y: r2, scale: o3, renderingMode: "stroke", angle: i3, align: this.textAlign, maxWidth: n3 });
+    }
+  }, p2.prototype.measureText = function(t2) {
+    if ("string" != typeof t2) throw a.error("jsPDF.context2d.measureText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.measureText");
+    var e2 = this.pdf, r2 = this.pdf.internal.scaleFactor, n3 = e2.internal.getFontSize(), i3 = e2.getStringUnitWidth(t2) * n3 / e2.internal.scaleFactor, o3 = function(t3) {
+      var e3 = (t3 = t3 || {}).width || 0;
+      return Object.defineProperty(this, "width", { get: function() {
+        return e3;
+      } }), this;
+    };
+    return new o3({ width: i3 *= Math.round(96 * r2 / 72 * 1e4) / 1e4 });
+  }, p2.prototype.scale = function(t2, e2) {
+    if (isNaN(t2) || isNaN(e2)) throw a.error("jsPDF.context2d.scale: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.scale");
+    var r2 = new h2(t2, 0, 0, e2, 0, 0);
+    this.ctx.transform = this.ctx.transform.multiply(r2);
+  }, p2.prototype.rotate = function(t2) {
+    if (isNaN(t2)) throw a.error("jsPDF.context2d.rotate: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.rotate");
+    var e2 = new h2(Math.cos(t2), Math.sin(t2), -Math.sin(t2), Math.cos(t2), 0, 0);
+    this.ctx.transform = this.ctx.transform.multiply(e2);
+  }, p2.prototype.translate = function(t2, e2) {
+    if (isNaN(t2) || isNaN(e2)) throw a.error("jsPDF.context2d.translate: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.translate");
+    var r2 = new h2(1, 0, 0, 1, t2, e2);
+    this.ctx.transform = this.ctx.transform.multiply(r2);
+  }, p2.prototype.transform = function(t2, e2, r2, n3, i3, o3) {
+    if (isNaN(t2) || isNaN(e2) || isNaN(r2) || isNaN(n3) || isNaN(i3) || isNaN(o3)) throw a.error("jsPDF.context2d.transform: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.transform");
+    var s3 = new h2(t2, e2, r2, n3, i3, o3);
+    this.ctx.transform = this.ctx.transform.multiply(s3);
+  }, p2.prototype.setTransform = function(t2, e2, r2, n3, i3, a2) {
+    t2 = isNaN(t2) ? 1 : t2, e2 = isNaN(e2) ? 0 : e2, r2 = isNaN(r2) ? 0 : r2, n3 = isNaN(n3) ? 1 : n3, i3 = isNaN(i3) ? 0 : i3, a2 = isNaN(a2) ? 0 : a2, this.ctx.transform = new h2(t2, e2, r2, n3, i3, a2);
+  };
+  var b3 = function() {
+    return this.margin[0] > 0 || this.margin[1] > 0 || this.margin[2] > 0 || this.margin[3] > 0;
+  };
+  p2.prototype.drawImage = function(t2, e2, r2, n3, i3, a2, o3, s3, c3) {
+    var l3 = this.pdf.getImageProperties(t2), f2 = 1, d3 = 1, p3 = 1, g3 = 1;
+    void 0 !== n3 && void 0 !== s3 && (p3 = s3 / n3, g3 = c3 / i3, f2 = l3.width / n3 * s3 / n3, d3 = l3.height / i3 * c3 / i3), void 0 === a2 && (a2 = e2, o3 = r2, e2 = 0, r2 = 0), void 0 !== n3 && void 0 === s3 && (s3 = n3, c3 = i3), void 0 === n3 && void 0 === s3 && (s3 = l3.width, c3 = l3.height);
+    for (var m3, v3 = this.ctx.transform.decompose(), w3 = q2(v3.rotate.shx), A3 = new h2(), S3 = (A3 = (A3 = (A3 = A3.multiply(v3.translate)).multiply(v3.skew)).multiply(v3.scale)).applyToRectangle(new u2(a2 - e2 * p3, o3 - r2 * g3, n3 * f2, i3 * d3)), _3 = y2.call(this, S3), P3 = [], k3 = 0; k3 < _3.length; k3 += 1) -1 === P3.indexOf(_3[k3]) && P3.push(_3[k3]);
+    if (L2(P3), this.autoPaging) for (var I3 = P3[0], F3 = P3[P3.length - 1], C3 = I3; C3 < F3 + 1; C3++) {
+      this.pdf.setPage(C3);
+      var j3 = this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1], O3 = 1 === C3 ? this.posY + this.margin[0] : this.margin[0], B3 = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], M3 = this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2], E3 = 1 === C3 ? 0 : B3 + (C3 - 2) * M3;
+      if (0 !== this.ctx.clip_path.length) {
+        var D3 = this.path;
+        m3 = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N2(m3, this.posX + this.margin[3], -E3 + O3 + this.ctx.prevPageLastElemOffset), x2.call(this, "fill", true), this.path = D3;
+      }
+      var R3 = JSON.parse(JSON.stringify(S3));
+      R3 = N2([R3], this.posX + this.margin[3], -E3 + O3 + this.ctx.prevPageLastElemOffset)[0];
+      var T3 = (C3 > I3 || C3 < F3) && b3.call(this);
+      T3 && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], j3, M3, null).clip().discardPath()), this.pdf.addImage(t2, "JPEG", R3.x, R3.y, R3.w, R3.h, null, null, w3), T3 && this.pdf.restoreGraphicsState();
+    }
+    else this.pdf.addImage(t2, "JPEG", S3.x, S3.y, S3.w, S3.h, null, null, w3);
+  };
+  var y2 = function(t2, e2, r2) {
+    var n3 = [];
+    e2 = e2 || this.pdf.internal.pageSize.width, r2 = r2 || this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];
+    var i3 = this.posY + this.ctx.prevPageLastElemOffset;
+    switch (t2.type) {
+      default:
+      case "mt":
+      case "lt":
+        n3.push(Math.floor((t2.y + i3) / r2) + 1);
+        break;
+      case "arc":
+        n3.push(Math.floor((t2.y + i3 - t2.radius) / r2) + 1), n3.push(Math.floor((t2.y + i3 + t2.radius) / r2) + 1);
+        break;
+      case "qct":
+        var a2 = D2(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t2.x1, t2.y1, t2.x, t2.y);
+        n3.push(Math.floor((a2.y + i3) / r2) + 1), n3.push(Math.floor((a2.y + a2.h + i3) / r2) + 1);
+        break;
+      case "bct":
+        var o3 = R2(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t2.x1, t2.y1, t2.x2, t2.y2, t2.x, t2.y);
+        n3.push(Math.floor((o3.y + i3) / r2) + 1), n3.push(Math.floor((o3.y + o3.h + i3) / r2) + 1);
+        break;
+      case "rect":
+        n3.push(Math.floor((t2.y + i3) / r2) + 1), n3.push(Math.floor((t2.y + t2.h + i3) / r2) + 1);
+    }
+    for (var s3 = 0; s3 < n3.length; s3 += 1) for (; this.pdf.internal.getNumberOfPages() < n3[s3]; ) w2.call(this);
+    return n3;
+  }, w2 = function() {
+    var t2 = this.fillStyle, e2 = this.strokeStyle, r2 = this.font, n3 = this.lineCap, i3 = this.lineWidth, a2 = this.lineJoin;
+    this.pdf.addPage(), this.fillStyle = t2, this.strokeStyle = e2, this.font = r2, this.lineCap = n3, this.lineWidth = i3, this.lineJoin = a2;
+  }, N2 = function(t2, e2, r2) {
+    for (var n3 = 0; n3 < t2.length; n3++) switch (t2[n3].type) {
+      case "bct":
+        t2[n3].x2 += e2, t2[n3].y2 += r2;
+      case "qct":
+        t2[n3].x1 += e2, t2[n3].y1 += r2;
+      case "mt":
+      case "lt":
+      case "arc":
+      default:
+        t2[n3].x += e2, t2[n3].y += r2;
+    }
+    return t2;
+  }, L2 = function(t2) {
+    return t2.sort(function(t3, e2) {
+      return t3 - e2;
+    });
+  }, A2 = function(t2, e2) {
+    for (var r2, n3, i3 = this.fillStyle, a2 = this.strokeStyle, o3 = this.lineCap, s3 = this.lineWidth, c3 = Math.abs(s3 * this.ctx.transform.scaleX), u3 = this.lineJoin, h3 = JSON.parse(JSON.stringify(this.path)), l3 = JSON.parse(JSON.stringify(this.path)), f2 = [], d3 = 0; d3 < l3.length; d3++) if (void 0 !== l3[d3].x) for (var p3 = y2.call(this, l3[d3]), g3 = 0; g3 < p3.length; g3 += 1) -1 === f2.indexOf(p3[g3]) && f2.push(p3[g3]);
+    for (var m3 = 0; m3 < f2.length; m3++) for (; this.pdf.internal.getNumberOfPages() < f2[m3]; ) w2.call(this);
+    if (L2(f2), this.autoPaging) for (var v3 = f2[0], A3 = f2[f2.length - 1], S3 = v3; S3 < A3 + 1; S3++) {
+      this.pdf.setPage(S3), this.fillStyle = i3, this.strokeStyle = a2, this.lineCap = o3, this.lineWidth = c3, this.lineJoin = u3;
+      var _3 = this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1], P3 = 1 === S3 ? this.posY + this.margin[0] : this.margin[0], k3 = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], I3 = this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2], F3 = 1 === S3 ? 0 : k3 + (S3 - 2) * I3;
+      if (0 !== this.ctx.clip_path.length) {
+        var C3 = this.path;
+        r2 = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N2(r2, this.posX + this.margin[3], -F3 + P3 + this.ctx.prevPageLastElemOffset), x2.call(this, t2, true), this.path = C3;
+      }
+      if (n3 = JSON.parse(JSON.stringify(h3)), this.path = N2(n3, this.posX + this.margin[3], -F3 + P3 + this.ctx.prevPageLastElemOffset), false === e2 || 0 === S3) {
+        var j3 = (S3 > v3 || S3 < A3) && b3.call(this);
+        j3 && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], _3, I3, null).clip().discardPath()), x2.call(this, t2, e2), j3 && this.pdf.restoreGraphicsState();
+      }
+      this.lineWidth = s3;
+    }
+    else this.lineWidth = c3, x2.call(this, t2, e2), this.lineWidth = s3;
+    this.path = h3;
+  }, x2 = function(t2, e2) {
+    if (("stroke" !== t2 || e2 || !v2.call(this)) && ("stroke" === t2 || e2 || !m2.call(this))) {
+      for (var r2, n3, i3 = [], a2 = this.path, o3 = 0; o3 < a2.length; o3++) {
+        var s3 = a2[o3];
+        switch (s3.type) {
+          case "begin":
+            i3.push({ begin: true });
+            break;
+          case "close":
+            i3.push({ close: true });
+            break;
+          case "mt":
+            i3.push({ start: s3, deltas: [], abs: [] });
+            break;
+          case "lt":
+            var c3 = i3.length;
+            if (a2[o3 - 1] && !isNaN(a2[o3 - 1].x) && (r2 = [s3.x - a2[o3 - 1].x, s3.y - a2[o3 - 1].y], c3 > 0)) {
+              for (; c3 >= 0; c3--) if (true !== i3[c3 - 1].close && true !== i3[c3 - 1].begin) {
+                i3[c3 - 1].deltas.push(r2), i3[c3 - 1].abs.push(s3);
+                break;
+              }
+            }
+            break;
+          case "bct":
+            r2 = [s3.x1 - a2[o3 - 1].x, s3.y1 - a2[o3 - 1].y, s3.x2 - a2[o3 - 1].x, s3.y2 - a2[o3 - 1].y, s3.x - a2[o3 - 1].x, s3.y - a2[o3 - 1].y], i3[i3.length - 1].deltas.push(r2);
+            break;
+          case "qct":
+            var u3 = a2[o3 - 1].x + 2 / 3 * (s3.x1 - a2[o3 - 1].x), h3 = a2[o3 - 1].y + 2 / 3 * (s3.y1 - a2[o3 - 1].y), l3 = s3.x + 2 / 3 * (s3.x1 - s3.x), f2 = s3.y + 2 / 3 * (s3.y1 - s3.y), d3 = s3.x, p3 = s3.y;
+            r2 = [u3 - a2[o3 - 1].x, h3 - a2[o3 - 1].y, l3 - a2[o3 - 1].x, f2 - a2[o3 - 1].y, d3 - a2[o3 - 1].x, p3 - a2[o3 - 1].y], i3[i3.length - 1].deltas.push(r2);
+            break;
+          case "arc":
+            i3.push({ deltas: [], abs: [], arc: true }), Array.isArray(i3[i3.length - 1].abs) && i3[i3.length - 1].abs.push(s3);
+        }
+      }
+      n3 = e2 ? null : "stroke" === t2 ? "stroke" : "fill";
+      for (var g3 = false, b5 = 0; b5 < i3.length; b5++) if (i3[b5].arc) for (var y3 = i3[b5].abs, w3 = 0; w3 < y3.length; w3++) {
+        var N3 = y3[w3];
+        "arc" === N3.type ? P2.call(this, N3.x, N3.y, N3.radius, N3.startAngle, N3.endAngle, N3.counterclockwise, void 0, e2, !g3) : j2.call(this, N3.x, N3.y), g3 = true;
+      }
+      else if (true === i3[b5].close) this.pdf.internal.out("h"), g3 = false;
+      else if (true !== i3[b5].begin) {
+        var L3 = i3[b5].start.x, A3 = i3[b5].start.y;
+        O2.call(this, i3[b5].deltas, L3, A3), g3 = true;
+      }
+      n3 && k2.call(this, n3), e2 && I2.call(this);
+    }
+  }, S2 = function(t2) {
+    var e2 = this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor, r2 = e2 * (this.pdf.internal.getLineHeightFactor() - 1);
+    switch (this.ctx.textBaseline) {
+      case "bottom":
+        return t2 - r2;
+      case "top":
+        return t2 + e2 - r2;
+      case "hanging":
+        return t2 + e2 - 2 * r2;
+      case "middle":
+        return t2 + e2 / 2 - r2;
+      case "ideographic":
+        return t2;
+      case "alphabetic":
+      default:
+        return t2;
+    }
+  }, _2 = function(t2) {
+    return t2 + this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor * (this.pdf.internal.getLineHeightFactor() - 1);
+  };
+  p2.prototype.createLinearGradient = function() {
+    var t2 = function() {
+    };
+    return t2.colorStops = [], t2.addColorStop = function(t3, e2) {
+      this.colorStops.push([t3, e2]);
+    }, t2.getColor = function() {
+      return 0 === this.colorStops.length ? "#000000" : this.colorStops[0][1];
+    }, t2.isCanvasGradient = true, t2;
+  }, p2.prototype.createPattern = function() {
+    return this.createLinearGradient();
+  }, p2.prototype.createRadialGradient = function() {
+    return this.createLinearGradient();
+  };
+  var P2 = function(t2, e2, r2, n3, i3, a2, o3, s3, c3) {
+    for (var u3 = M2.call(this, r2, n3, i3, a2), h3 = 0; h3 < u3.length; h3++) {
+      var l3 = u3[h3];
+      0 === h3 && (c3 ? F2.call(this, l3.x1 + t2, l3.y1 + e2) : j2.call(this, l3.x1 + t2, l3.y1 + e2)), B2.call(this, t2, e2, l3.x2, l3.y2, l3.x3, l3.y3, l3.x4, l3.y4);
+    }
+    s3 ? I2.call(this) : k2.call(this, o3);
+  }, k2 = function(t2) {
+    switch (t2) {
+      case "stroke":
+        this.pdf.internal.out("S");
+        break;
+      case "fill":
+        this.pdf.internal.out("f");
+    }
+  }, I2 = function() {
+    this.pdf.clip(), this.pdf.discardPath();
+  }, F2 = function(t2, e2) {
+    this.pdf.internal.out(n2(t2) + " " + i2(e2) + " m");
+  }, C2 = function(t2) {
+    var e2;
+    switch (t2.align) {
+      case "right":
+      case "end":
+        e2 = "right";
+        break;
+      case "center":
+        e2 = "center";
+        break;
+      case "left":
+      case "start":
+      default:
+        e2 = "left";
+    }
+    var r2 = this.pdf.getTextDimensions(t2.text), n3 = S2.call(this, t2.y), i3 = _2.call(this, n3) - r2.h, a2 = this.ctx.transform.applyToPoint(new c2(t2.x, n3)), o3 = this.ctx.transform.decompose(), s3 = new h2();
+    s3 = (s3 = (s3 = s3.multiply(o3.translate)).multiply(o3.skew)).multiply(o3.scale);
+    for (var l3, f2, d3, p3 = this.ctx.transform.applyToRectangle(new u2(t2.x, n3, r2.w, r2.h)), g3 = s3.applyToRectangle(new u2(t2.x, i3, r2.w, r2.h)), m3 = y2.call(this, g3), v3 = [], w3 = 0; w3 < m3.length; w3 += 1) -1 === v3.indexOf(m3[w3]) && v3.push(m3[w3]);
+    if (L2(v3), this.autoPaging) for (var A3 = v3[0], P3 = v3[v3.length - 1], k3 = A3; k3 < P3 + 1; k3++) {
+      this.pdf.setPage(k3);
+      var I3 = 1 === k3 ? this.posY + this.margin[0] : this.margin[0], F3 = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], C3 = this.pdf.internal.pageSize.height - this.margin[2], j3 = C3 - this.margin[0], O3 = this.pdf.internal.pageSize.width - this.margin[1], B3 = O3 - this.margin[3], M3 = 1 === k3 ? 0 : F3 + (k3 - 2) * j3;
+      if (0 !== this.ctx.clip_path.length) {
+        var E3 = this.path;
+        l3 = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N2(l3, this.posX + this.margin[3], -1 * M3 + I3), x2.call(this, "fill", true), this.path = E3;
+      }
+      var q3 = N2([JSON.parse(JSON.stringify(g3))], this.posX + this.margin[3], -M3 + I3 + this.ctx.prevPageLastElemOffset)[0];
+      t2.scale >= 0.01 && (f2 = this.pdf.internal.getFontSize(), this.pdf.setFontSize(f2 * t2.scale), d3 = this.lineWidth, this.lineWidth = d3 * t2.scale);
+      var D3 = "text" !== this.autoPaging;
+      if (D3 || q3.y + q3.h <= C3) {
+        if (D3 || q3.y >= I3 && q3.x <= O3) {
+          var R3 = D3 ? t2.text : this.pdf.splitTextToSize(t2.text, t2.maxWidth || O3 - q3.x)[0], T3 = N2([JSON.parse(JSON.stringify(p3))], this.posX + this.margin[3], -M3 + I3 + this.ctx.prevPageLastElemOffset)[0], U2 = D3 && (k3 > A3 || k3 < P3) && b3.call(this);
+          U2 && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], B3, j3, null).clip().discardPath()), this.pdf.text(R3, T3.x, T3.y, { angle: t2.angle, align: e2, renderingMode: t2.renderingMode }), U2 && this.pdf.restoreGraphicsState();
+        }
+      } else q3.y < C3 && (this.ctx.prevPageLastElemOffset += C3 - q3.y);
+      t2.scale >= 0.01 && (this.pdf.setFontSize(f2), this.lineWidth = d3);
+    }
+    else t2.scale >= 0.01 && (f2 = this.pdf.internal.getFontSize(), this.pdf.setFontSize(f2 * t2.scale), d3 = this.lineWidth, this.lineWidth = d3 * t2.scale), this.pdf.text(t2.text, a2.x + this.posX, a2.y + this.posY, { angle: t2.angle, align: e2, renderingMode: t2.renderingMode, maxWidth: t2.maxWidth }), t2.scale >= 0.01 && (this.pdf.setFontSize(f2), this.lineWidth = d3);
+  }, j2 = function(t2, e2, r2, a2) {
+    r2 = r2 || 0, a2 = a2 || 0, this.pdf.internal.out(n2(t2 + r2) + " " + i2(e2 + a2) + " l");
+  }, O2 = function(t2, e2, r2) {
+    return this.pdf.lines(t2, e2, r2, null, null);
+  }, B2 = function(t2, e2, n3, i3, a2, c3, u3, h3) {
+    this.pdf.internal.out([r(o2(n3 + t2)), r(s2(i3 + e2)), r(o2(a2 + t2)), r(s2(c3 + e2)), r(o2(u3 + t2)), r(s2(h3 + e2)), "c"].join(" "));
+  }, M2 = function(t2, e2, r2, n3) {
+    for (var i3 = 2 * Math.PI, a2 = Math.PI / 2; e2 > r2; ) e2 -= i3;
+    var o3 = Math.abs(r2 - e2);
+    o3 < i3 && n3 && (o3 = i3 - o3);
+    for (var s3 = [], c3 = n3 ? -1 : 1, u3 = e2; o3 > 1e-5; ) {
+      var h3 = u3 + c3 * Math.min(o3, a2);
+      s3.push(E2.call(this, t2, u3, h3)), o3 -= Math.abs(h3 - u3), u3 = h3;
+    }
+    return s3;
+  }, E2 = function(t2, e2, r2) {
+    var n3 = (r2 - e2) / 2, i3 = t2 * Math.cos(n3), a2 = t2 * Math.sin(n3), o3 = i3, s3 = -a2, c3 = o3 * o3 + s3 * s3, u3 = c3 + o3 * i3 + s3 * a2, h3 = 4 / 3 * (Math.sqrt(2 * c3 * u3) - u3) / (o3 * a2 - s3 * i3), l3 = o3 - h3 * s3, f2 = s3 + h3 * o3, d3 = l3, p3 = -f2, g3 = n3 + e2, m3 = Math.cos(g3), v3 = Math.sin(g3);
+    return { x1: t2 * Math.cos(e2), y1: t2 * Math.sin(e2), x2: l3 * m3 - f2 * v3, y2: l3 * v3 + f2 * m3, x3: d3 * m3 - p3 * v3, y3: d3 * v3 + p3 * m3, x4: t2 * Math.cos(r2), y4: t2 * Math.sin(r2) };
+  }, q2 = function(t2) {
+    return 180 * t2 / Math.PI;
+  }, D2 = function(t2, e2, r2, n3, i3, a2) {
+    var o3 = t2 + 0.5 * (r2 - t2), s3 = e2 + 0.5 * (n3 - e2), c3 = i3 + 0.5 * (r2 - i3), h3 = a2 + 0.5 * (n3 - a2), l3 = Math.min(t2, i3, o3, c3), f2 = Math.max(t2, i3, o3, c3), d3 = Math.min(e2, a2, s3, h3), p3 = Math.max(e2, a2, s3, h3);
+    return new u2(l3, d3, f2 - l3, p3 - d3);
+  }, R2 = function(t2, e2, r2, n3, i3, a2, o3, s3) {
+    var c3, h3, l3, f2, d3, p3, g3, m3, v3, b5, y3, w3, N3, L3, A3 = r2 - t2, x3 = n3 - e2, S3 = i3 - r2, _3 = a2 - n3, P3 = o3 - i3, k3 = s3 - a2;
+    for (h3 = 0; h3 < 41; h3++) v3 = (g3 = (l3 = t2 + (c3 = h3 / 40) * A3) + c3 * ((d3 = r2 + c3 * S3) - l3)) + c3 * (d3 + c3 * (i3 + c3 * P3 - d3) - g3), b5 = (m3 = (f2 = e2 + c3 * x3) + c3 * ((p3 = n3 + c3 * _3) - f2)) + c3 * (p3 + c3 * (a2 + c3 * k3 - p3) - m3), 0 == h3 ? (y3 = v3, w3 = b5, N3 = v3, L3 = b5) : (y3 = Math.min(y3, v3), w3 = Math.min(w3, b5), N3 = Math.max(N3, v3), L3 = Math.max(L3, b5));
+    return new u2(Math.round(y3), Math.round(w3), Math.round(N3 - y3), Math.round(L3 - w3));
+  }, T2 = function() {
+    if (this.prevLineDash || this.ctx.lineDash.length || this.ctx.lineDashOffset) {
+      var t2, e2, r2 = (t2 = this.ctx.lineDash, e2 = this.ctx.lineDashOffset, JSON.stringify({ lineDash: t2, lineDashOffset: e2 }));
+      this.prevLineDash !== r2 && (this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset), this.prevLineDash = r2);
+    }
+  };
+}(E.API), /**
+ * @license
+ * jsPDF filters PlugIn
+ * Copyright (c) 2014 Aras Abbasi
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var r = function(t3) {
+    var e, r2, n3, i3, a3, o2, s2, c2, u2, h2;
+    for (/[^\x00-\xFF]/.test(t3), r2 = [], n3 = 0, i3 = (t3 += e = "\0\0\0\0".slice(t3.length % 4 || 4)).length; i3 > n3; n3 += 4) 0 !== (a3 = (t3.charCodeAt(n3) << 24) + (t3.charCodeAt(n3 + 1) << 16) + (t3.charCodeAt(n3 + 2) << 8) + t3.charCodeAt(n3 + 3)) ? (o2 = (a3 = ((a3 = ((a3 = ((a3 = (a3 - (h2 = a3 % 85)) / 85) - (u2 = a3 % 85)) / 85) - (c2 = a3 % 85)) / 85) - (s2 = a3 % 85)) / 85) % 85, r2.push(o2 + 33, s2 + 33, c2 + 33, u2 + 33, h2 + 33)) : r2.push(122);
+    return function(t4, e2) {
+      for (var r3 = e2; r3 > 0; r3--) t4.pop();
+    }(r2, e.length), String.fromCharCode.apply(String, r2) + "~>";
+  }, n2 = function(t3) {
+    var e, r2, n3, i3, a3, o2 = String, s2 = "length", c2 = 255, u2 = "charCodeAt", h2 = "slice", l2 = "replace";
+    for (t3[h2](-2), t3 = t3[h2](0, -2)[l2](/\s/g, "")[l2]("z", "!!!!!"), n3 = [], i3 = 0, a3 = (t3 += e = "uuuuu"[h2](t3[s2] % 5 || 5))[s2]; a3 > i3; i3 += 5) r2 = 52200625 * (t3[u2](i3) - 33) + 614125 * (t3[u2](i3 + 1) - 33) + 7225 * (t3[u2](i3 + 2) - 33) + 85 * (t3[u2](i3 + 3) - 33) + (t3[u2](i3 + 4) - 33), n3.push(c2 & r2 >> 24, c2 & r2 >> 16, c2 & r2 >> 8, c2 & r2);
+    return function(t4, e2) {
+      for (var r3 = e2; r3 > 0; r3--) t4.pop();
+    }(n3, e[s2]), o2.fromCharCode.apply(o2, n3);
+  }, i2 = function(t3) {
+    var e = new RegExp(/^([0-9A-Fa-f]{2})+$/);
+    if (-1 !== (t3 = t3.replace(/\s/g, "")).indexOf(">") && (t3 = t3.substr(0, t3.indexOf(">"))), t3.length % 2 && (t3 += "0"), false === e.test(t3)) return "";
+    for (var r2 = "", n3 = 0; n3 < t3.length; n3 += 2) r2 += String.fromCharCode("0x" + (t3[n3] + t3[n3 + 1]));
+    return r2;
+  }, a2 = function(t3) {
+    for (var r2 = new Uint8Array(t3.length), n3 = t3.length; n3--; ) r2[n3] = t3.charCodeAt(n3);
+    return t3 = (r2 = zlibSync(r2)).reduce(function(t4, e) {
+      return t4 + String.fromCharCode(e);
+    }, "");
+  };
+  t2.processDataByFilters = function(t3, e) {
+    var o2 = 0, s2 = t3 || "", c2 = [];
+    for ("string" == typeof (e = e || []) && (e = [e]), o2 = 0; o2 < e.length; o2 += 1) switch (e[o2]) {
+      case "ASCII85Decode":
+      case "/ASCII85Decode":
+        s2 = n2(s2), c2.push("/ASCII85Encode");
+        break;
+      case "ASCII85Encode":
+      case "/ASCII85Encode":
+        s2 = r(s2), c2.push("/ASCII85Decode");
+        break;
+      case "ASCIIHexDecode":
+      case "/ASCIIHexDecode":
+        s2 = i2(s2), c2.push("/ASCIIHexEncode");
+        break;
+      case "ASCIIHexEncode":
+      case "/ASCIIHexEncode":
+        s2 = s2.split("").map(function(t4) {
+          return ("0" + t4.charCodeAt().toString(16)).slice(-2);
+        }).join("") + ">", c2.push("/ASCIIHexDecode");
+        break;
+      case "FlateEncode":
+      case "/FlateEncode":
+        s2 = a2(s2), c2.push("/FlateDecode");
+        break;
+      default:
+        throw new Error('The filter: "' + e[o2] + '" is not implemented');
+    }
+    return { data: s2, reverseChain: c2.reverse().join(" ") };
+  };
+}(E.API), /**
+ * @license
+ * jsPDF fileloading PlugIn
+ * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  t2.loadFile = function(t3, e, r) {
+    return function(t4, e2, r2) {
+      e2 = false !== e2, r2 = "function" == typeof r2 ? r2 : function() {
+      };
+      var n2 = void 0;
+      try {
+        n2 = function(t5, e3, r3) {
+          var n3 = new XMLHttpRequest(), i2 = 0, a2 = function(t6) {
+            var e4 = t6.length, r4 = [], n4 = String.fromCharCode;
+            for (i2 = 0; i2 < e4; i2 += 1) r4.push(n4(255 & t6.charCodeAt(i2)));
+            return r4.join("");
+          };
+          if (n3.open("GET", t5, !e3), n3.overrideMimeType("text/plain; charset=x-user-defined"), false === e3 && (n3.onload = function() {
+            200 === n3.status ? r3(a2(this.responseText)) : r3(void 0);
+          }), n3.send(null), e3 && 200 === n3.status) return a2(n3.responseText);
+        }(t4, e2, r2);
+      } catch (t5) {
+      }
+      return n2;
+    }(t3, e, r);
+  }, t2.loadImageFile = t2.loadFile;
+}(E.API), function(e) {
+  function r() {
+    return (n.html2canvas ? Promise.resolve(n.html2canvas) : import("./html2canvas.esm-WKGZI7AQ.js")).catch(function(t2) {
+      return Promise.reject(new Error("Could not load html2canvas: " + t2));
+    }).then(function(t2) {
+      return t2.default ? t2.default : t2;
+    });
+  }
+  function i2() {
+    return (n.DOMPurify ? Promise.resolve(n.DOMPurify) : import("./purify.es-25GRGOID.js")).catch(function(t2) {
+      return Promise.reject(new Error("Could not load dompurify: " + t2));
+    }).then(function(t2) {
+      return t2.default ? t2.default : t2;
+    });
+  }
+  var a2 = function(e2) {
+    var r2 = _typeof(e2);
+    return "undefined" === r2 ? "undefined" : "string" === r2 || e2 instanceof String ? "string" : "number" === r2 || e2 instanceof Number ? "number" : "function" === r2 || e2 instanceof Function ? "function" : e2 && e2.constructor === Array ? "array" : e2 && 1 === e2.nodeType ? "element" : "object" === r2 ? "object" : "unknown";
+  }, o2 = function(t2, e2) {
+    var r2 = document.createElement(t2);
+    for (var n2 in e2.className && (r2.className = e2.className), e2.innerHTML && e2.dompurify && (r2.innerHTML = e2.dompurify.sanitize(e2.innerHTML)), e2.style) r2.style[n2] = e2.style[n2];
+    return r2;
+  }, s2 = function t2(e2) {
+    var r2 = Object.assign(t2.convert(Promise.resolve()), JSON.parse(JSON.stringify(t2.template))), n2 = t2.convert(Promise.resolve(), r2);
+    return n2 = (n2 = n2.setProgress(1, t2, 1, [t2])).set(e2);
+  };
+  (s2.prototype = Object.create(Promise.prototype)).constructor = s2, s2.convert = function(t2, e2) {
+    return t2.__proto__ = e2 || s2.prototype, t2;
+  }, s2.template = { prop: { src: null, container: null, overlay: null, canvas: null, img: null, pdf: null, pageSize: null, callback: function() {
+  } }, progress: { val: 0, state: null, n: 0, stack: [] }, opt: { filename: "file.pdf", margin: [0, 0, 0, 0], enableLinks: true, x: 0, y: 0, html2canvas: {}, jsPDF: {}, backgroundColor: "transparent" } }, s2.prototype.from = function(t2, e2) {
+    return this.then(function() {
+      switch (e2 = e2 || function(t3) {
+        switch (a2(t3)) {
+          case "string":
+            return "string";
+          case "element":
+            return "canvas" === t3.nodeName.toLowerCase() ? "canvas" : "element";
+          default:
+            return "unknown";
+        }
+      }(t2)) {
+        case "string":
+          return this.then(i2).then(function(e3) {
+            return this.set({ src: o2("div", { innerHTML: t2, dompurify: e3 }) });
+          });
+        case "element":
+          return this.set({ src: t2 });
+        case "canvas":
+          return this.set({ canvas: t2 });
+        case "img":
+          return this.set({ img: t2 });
+        default:
+          return this.error("Unknown source type.");
+      }
+    });
+  }, s2.prototype.to = function(t2) {
+    switch (t2) {
+      case "container":
+        return this.toContainer();
+      case "canvas":
+        return this.toCanvas();
+      case "img":
+        return this.toImg();
+      case "pdf":
+        return this.toPdf();
+      default:
+        return this.error("Invalid target.");
+    }
+  }, s2.prototype.toContainer = function() {
+    return this.thenList([function() {
+      return this.prop.src || this.error("Cannot duplicate - no source HTML.");
+    }, function() {
+      return this.prop.pageSize || this.setPageSize();
+    }]).then(function() {
+      var t2 = { position: "relative", display: "inline-block", width: ("number" != typeof this.opt.width || isNaN(this.opt.width) || "number" != typeof this.opt.windowWidth || isNaN(this.opt.windowWidth) ? Math.max(this.prop.src.clientWidth, this.prop.src.scrollWidth, this.prop.src.offsetWidth) : this.opt.windowWidth) + "px", left: 0, right: 0, top: 0, margin: "auto", backgroundColor: this.opt.backgroundColor }, e2 = function t3(e3, r2) {
+        for (var n2 = 3 === e3.nodeType ? document.createTextNode(e3.nodeValue) : e3.cloneNode(false), i3 = e3.firstChild; i3; i3 = i3.nextSibling) true !== r2 && 1 === i3.nodeType && "SCRIPT" === i3.nodeName || n2.appendChild(t3(i3, r2));
+        return 1 === e3.nodeType && ("CANVAS" === e3.nodeName ? (n2.width = e3.width, n2.height = e3.height, n2.getContext("2d").drawImage(e3, 0, 0)) : "TEXTAREA" !== e3.nodeName && "SELECT" !== e3.nodeName || (n2.value = e3.value), n2.addEventListener("load", function() {
+          n2.scrollTop = e3.scrollTop, n2.scrollLeft = e3.scrollLeft;
+        }, true)), n2;
+      }(this.prop.src, this.opt.html2canvas.javascriptEnabled);
+      "BODY" === e2.tagName && (t2.height = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) + "px"), this.prop.overlay = o2("div", { className: "html2pdf__overlay", style: { position: "fixed", overflow: "hidden", zIndex: 1e3, left: "-100000px", right: 0, bottom: 0, top: 0 } }), this.prop.container = o2("div", { className: "html2pdf__container", style: t2 }), this.prop.container.appendChild(e2), this.prop.container.firstChild.appendChild(o2("div", { style: { clear: "both", border: "0 none transparent", margin: 0, padding: 0, height: 0 } })), this.prop.container.style.float = "none", this.prop.overlay.appendChild(this.prop.container), document.body.appendChild(this.prop.overlay), this.prop.container.firstChild.style.position = "relative", this.prop.container.height = Math.max(this.prop.container.firstChild.clientHeight, this.prop.container.firstChild.scrollHeight, this.prop.container.firstChild.offsetHeight) + "px";
+    });
+  }, s2.prototype.toCanvas = function() {
+    var t2 = [function() {
+      return document.body.contains(this.prop.container) || this.toContainer();
+    }];
+    return this.thenList(t2).then(r).then(function(t3) {
+      var e2 = Object.assign({}, this.opt.html2canvas);
+      return delete e2.onrendered, t3(this.prop.container, e2);
+    }).then(function(t3) {
+      (this.opt.html2canvas.onrendered || function() {
+      })(t3), this.prop.canvas = t3, document.body.removeChild(this.prop.overlay);
+    });
+  }, s2.prototype.toContext2d = function() {
+    var t2 = [function() {
+      return document.body.contains(this.prop.container) || this.toContainer();
+    }];
+    return this.thenList(t2).then(r).then(function(t3) {
+      var e2 = this.opt.jsPDF, r2 = this.opt.fontFaces, n2 = "number" != typeof this.opt.width || isNaN(this.opt.width) || "number" != typeof this.opt.windowWidth || isNaN(this.opt.windowWidth) ? 1 : this.opt.width / this.opt.windowWidth, i3 = Object.assign({ async: true, allowTaint: true, scale: n2, scrollX: this.opt.scrollX || 0, scrollY: this.opt.scrollY || 0, backgroundColor: "#ffffff", imageTimeout: 15e3, logging: true, proxy: null, removeContainer: true, foreignObjectRendering: false, useCORS: false }, this.opt.html2canvas);
+      if (delete i3.onrendered, e2.context2d.autoPaging = void 0 === this.opt.autoPaging || this.opt.autoPaging, e2.context2d.posX = this.opt.x, e2.context2d.posY = this.opt.y, e2.context2d.margin = this.opt.margin, e2.context2d.fontFaces = r2, r2) for (var a3 = 0; a3 < r2.length; ++a3) {
+        var o3 = r2[a3], s3 = o3.src.find(function(t4) {
+          return "truetype" === t4.format;
+        });
+        s3 && e2.addFont(s3.url, o3.ref.name, o3.ref.style);
+      }
+      return i3.windowHeight = i3.windowHeight || 0, i3.windowHeight = 0 == i3.windowHeight ? Math.max(this.prop.container.clientHeight, this.prop.container.scrollHeight, this.prop.container.offsetHeight) : i3.windowHeight, e2.context2d.save(true), t3(this.prop.container, i3);
+    }).then(function(t3) {
+      this.opt.jsPDF.context2d.restore(true), (this.opt.html2canvas.onrendered || function() {
+      })(t3), this.prop.canvas = t3, document.body.removeChild(this.prop.overlay);
+    });
+  }, s2.prototype.toImg = function() {
+    return this.thenList([function() {
+      return this.prop.canvas || this.toCanvas();
+    }]).then(function() {
+      var t2 = this.prop.canvas.toDataURL("image/" + this.opt.image.type, this.opt.image.quality);
+      this.prop.img = document.createElement("img"), this.prop.img.src = t2;
+    });
+  }, s2.prototype.toPdf = function() {
+    return this.thenList([function() {
+      return this.toContext2d();
+    }]).then(function() {
+      this.prop.pdf = this.prop.pdf || this.opt.jsPDF;
+    });
+  }, s2.prototype.output = function(t2, e2, r2) {
+    return "img" === (r2 = r2 || "pdf").toLowerCase() || "image" === r2.toLowerCase() ? this.outputImg(t2, e2) : this.outputPdf(t2, e2);
+  }, s2.prototype.outputPdf = function(t2, e2) {
+    return this.thenList([function() {
+      return this.prop.pdf || this.toPdf();
+    }]).then(function() {
+      return this.prop.pdf.output(t2, e2);
+    });
+  }, s2.prototype.outputImg = function(t2) {
+    return this.thenList([function() {
+      return this.prop.img || this.toImg();
+    }]).then(function() {
+      switch (t2) {
+        case void 0:
+        case "img":
+          return this.prop.img;
+        case "datauristring":
+        case "dataurlstring":
+          return this.prop.img.src;
+        case "datauri":
+        case "dataurl":
+          return document.location.href = this.prop.img.src;
+        default:
+          throw 'Image output type "' + t2 + '" is not supported.';
+      }
+    });
+  }, s2.prototype.save = function(t2) {
+    return this.thenList([function() {
+      return this.prop.pdf || this.toPdf();
+    }]).set(t2 ? { filename: t2 } : null).then(function() {
+      this.prop.pdf.save(this.opt.filename);
+    });
+  }, s2.prototype.doCallback = function() {
+    return this.thenList([function() {
+      return this.prop.pdf || this.toPdf();
+    }]).then(function() {
+      this.prop.callback(this.prop.pdf);
+    });
+  }, s2.prototype.set = function(t2) {
+    if ("object" !== a2(t2)) return this;
+    var e2 = Object.keys(t2 || {}).map(function(e3) {
+      if (e3 in s2.template.prop) return function() {
+        this.prop[e3] = t2[e3];
+      };
+      switch (e3) {
+        case "margin":
+          return this.setMargin.bind(this, t2.margin);
+        case "jsPDF":
+          return function() {
+            return this.opt.jsPDF = t2.jsPDF, this.setPageSize();
+          };
+        case "pageSize":
+          return this.setPageSize.bind(this, t2.pageSize);
+        default:
+          return function() {
+            this.opt[e3] = t2[e3];
+          };
+      }
+    }, this);
+    return this.then(function() {
+      return this.thenList(e2);
+    });
+  }, s2.prototype.get = function(t2, e2) {
+    return this.then(function() {
+      var r2 = t2 in s2.template.prop ? this.prop[t2] : this.opt[t2];
+      return e2 ? e2(r2) : r2;
+    });
+  }, s2.prototype.setMargin = function(t2) {
+    return this.then(function() {
+      switch (a2(t2)) {
+        case "number":
+          t2 = [t2, t2, t2, t2];
+        case "array":
+          if (2 === t2.length && (t2 = [t2[0], t2[1], t2[0], t2[1]]), 4 === t2.length) break;
+        default:
+          return this.error("Invalid margin array.");
+      }
+      this.opt.margin = t2;
+    }).then(this.setPageSize);
+  }, s2.prototype.setPageSize = function(t2) {
+    function e2(t3, e3) {
+      return Math.floor(t3 * e3 / 72 * 96);
+    }
+    return this.then(function() {
+      (t2 = t2 || E.getPageSize(this.opt.jsPDF)).hasOwnProperty("inner") || (t2.inner = { width: t2.width - this.opt.margin[1] - this.opt.margin[3], height: t2.height - this.opt.margin[0] - this.opt.margin[2] }, t2.inner.px = { width: e2(t2.inner.width, t2.k), height: e2(t2.inner.height, t2.k) }, t2.inner.ratio = t2.inner.height / t2.inner.width), this.prop.pageSize = t2;
+    });
+  }, s2.prototype.setProgress = function(t2, e2, r2, n2) {
+    return null != t2 && (this.progress.val = t2), null != e2 && (this.progress.state = e2), null != r2 && (this.progress.n = r2), null != n2 && (this.progress.stack = n2), this.progress.ratio = this.progress.val / this.progress.state, this;
+  }, s2.prototype.updateProgress = function(t2, e2, r2, n2) {
+    return this.setProgress(t2 ? this.progress.val + t2 : null, e2 || null, r2 ? this.progress.n + r2 : null, n2 ? this.progress.stack.concat(n2) : null);
+  }, s2.prototype.then = function(t2, e2) {
+    var r2 = this;
+    return this.thenCore(t2, e2, function(t3, e3) {
+      return r2.updateProgress(null, null, 1, [t3]), Promise.prototype.then.call(this, function(e4) {
+        return r2.updateProgress(null, t3), e4;
+      }).then(t3, e3).then(function(t4) {
+        return r2.updateProgress(1), t4;
+      });
+    });
+  }, s2.prototype.thenCore = function(t2, e2, r2) {
+    r2 = r2 || Promise.prototype.then;
+    t2 && (t2 = t2.bind(this)), e2 && (e2 = e2.bind(this));
+    var n2 = -1 !== Promise.toString().indexOf("[native code]") && "Promise" === Promise.name ? this : s2.convert(Object.assign({}, this), Promise.prototype), i3 = r2.call(n2, t2, e2);
+    return s2.convert(i3, this.__proto__);
+  }, s2.prototype.thenExternal = function(t2, e2) {
+    return Promise.prototype.then.call(this, t2, e2);
+  }, s2.prototype.thenList = function(t2) {
+    var e2 = this;
+    return t2.forEach(function(t3) {
+      e2 = e2.thenCore(t3);
+    }), e2;
+  }, s2.prototype.catch = function(t2) {
+    t2 && (t2 = t2.bind(this));
+    var e2 = Promise.prototype.catch.call(this, t2);
+    return s2.convert(e2, this);
+  }, s2.prototype.catchExternal = function(t2) {
+    return Promise.prototype.catch.call(this, t2);
+  }, s2.prototype.error = function(t2) {
+    return this.then(function() {
+      throw new Error(t2);
+    });
+  }, s2.prototype.using = s2.prototype.set, s2.prototype.saveAs = s2.prototype.save, s2.prototype.export = s2.prototype.output, s2.prototype.run = s2.prototype.then, E.getPageSize = function(e2, r2, n2) {
+    if ("object" === _typeof(e2)) {
+      var i3 = e2;
+      e2 = i3.orientation, r2 = i3.unit || r2, n2 = i3.format || n2;
+    }
+    r2 = r2 || "mm", n2 = n2 || "a4", e2 = ("" + (e2 || "P")).toLowerCase();
+    var a3, o3 = ("" + n2).toLowerCase(), s3 = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] };
+    switch (r2) {
+      case "pt":
+        a3 = 1;
+        break;
+      case "mm":
+        a3 = 72 / 25.4;
+        break;
+      case "cm":
+        a3 = 72 / 2.54;
+        break;
+      case "in":
+        a3 = 72;
+        break;
+      case "px":
+        a3 = 0.75;
+        break;
+      case "pc":
+      case "em":
+        a3 = 12;
+        break;
+      case "ex":
+        a3 = 6;
+        break;
+      default:
+        throw "Invalid unit: " + r2;
+    }
+    var c2, u2 = 0, h2 = 0;
+    if (s3.hasOwnProperty(o3)) u2 = s3[o3][1] / a3, h2 = s3[o3][0] / a3;
+    else try {
+      u2 = n2[1], h2 = n2[0];
+    } catch (t2) {
+      throw new Error("Invalid format: " + n2);
+    }
+    if ("p" === e2 || "portrait" === e2) e2 = "p", h2 > u2 && (c2 = h2, h2 = u2, u2 = c2);
+    else {
+      if ("l" !== e2 && "landscape" !== e2) throw "Invalid orientation: " + e2;
+      e2 = "l", u2 > h2 && (c2 = h2, h2 = u2, u2 = c2);
+    }
+    return { width: h2, height: u2, unit: r2, k: a3, orientation: e2 };
+  }, e.html = function(t2, e2) {
+    (e2 = e2 || {}).callback = e2.callback || function() {
+    }, e2.html2canvas = e2.html2canvas || {}, e2.html2canvas.canvas = e2.html2canvas.canvas || this.canvas, e2.jsPDF = e2.jsPDF || this, e2.fontFaces = e2.fontFaces ? e2.fontFaces.map(jt) : null;
+    var r2 = new s2(e2);
+    return e2.worker ? r2 : r2.from(t2).doCallback();
+  };
+}(E.API), E.API.addJS = function(t2) {
+  return Ht = t2, this.internal.events.subscribe("postPutResources", function() {
+    Ut = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/Names [(EmbeddedJS) " + (Ut + 1) + " 0 R]"), this.internal.out(">>"), this.internal.out("endobj"), zt = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /JavaScript"), this.internal.out("/JS (" + Ht + ")"), this.internal.out(">>"), this.internal.out("endobj");
+  }), this.internal.events.subscribe("putCatalog", function() {
+    void 0 !== Ut && void 0 !== zt && this.internal.out("/Names <</JavaScript " + Ut + " 0 R>>");
+  }), this;
+}, /**
+ * @license
+ * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var e;
+  t2.events.push(["postPutResources", function() {
+    var t3 = this, r = /^(\d+) 0 obj$/;
+    if (this.outline.root.children.length > 0) for (var n2 = t3.outline.render().split(/\r\n/), i2 = 0; i2 < n2.length; i2++) {
+      var a2 = n2[i2], o2 = r.exec(a2);
+      if (null != o2) {
+        var s2 = o2[1];
+        t3.internal.newObjectDeferredBegin(s2, false);
+      }
+      t3.internal.write(a2);
+    }
+    if (this.outline.createNamedDestinations) {
+      var c2 = this.internal.pages.length, u2 = [];
+      for (i2 = 0; i2 < c2; i2++) {
+        var h2 = t3.internal.newObject();
+        u2.push(h2);
+        var l2 = t3.internal.getPageInfo(i2 + 1);
+        t3.internal.write("<< /D[" + l2.objId + " 0 R /XYZ null null null]>> endobj");
+      }
+      var f2 = t3.internal.newObject();
+      t3.internal.write("<< /Names [ ");
+      for (i2 = 0; i2 < u2.length; i2++) t3.internal.write("(page_" + (i2 + 1) + ")" + u2[i2] + " 0 R");
+      t3.internal.write(" ] >>", "endobj"), e = t3.internal.newObject(), t3.internal.write("<< /Dests " + f2 + " 0 R"), t3.internal.write(">>", "endobj");
+    }
+  }]), t2.events.push(["putCatalog", function() {
+    this.outline.root.children.length > 0 && (this.internal.write("/Outlines", this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations && this.internal.write("/Names " + e + " 0 R"));
+  }]), t2.events.push(["initialized", function() {
+    var t3 = this;
+    t3.outline = { createNamedDestinations: false, root: { children: [] } }, t3.outline.add = function(t4, e2, r) {
+      var n2 = { title: e2, options: r, children: [] };
+      return null == t4 && (t4 = this.root), t4.children.push(n2), n2;
+    }, t3.outline.render = function() {
+      return this.ctx = {}, this.ctx.val = "", this.ctx.pdf = t3, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val;
+    }, t3.outline.genIds_r = function(e2) {
+      e2.id = t3.internal.newObjectDeferred();
+      for (var r = 0; r < e2.children.length; r++) this.genIds_r(e2.children[r]);
+    }, t3.outline.renderRoot = function(t4) {
+      this.objStart(t4), this.line("/Type /Outlines"), t4.children.length > 0 && (this.line("/First " + this.makeRef(t4.children[0])), this.line("/Last " + this.makeRef(t4.children[t4.children.length - 1]))), this.line("/Count " + this.count_r({ count: 0 }, t4)), this.objEnd();
+    }, t3.outline.renderItems = function(e2) {
+      for (var r = this.ctx.pdf.internal.getVerticalCoordinateString, n2 = 0; n2 < e2.children.length; n2++) {
+        var i2 = e2.children[n2];
+        this.objStart(i2), this.line("/Title " + this.makeString(i2.title)), this.line("/Parent " + this.makeRef(e2)), n2 > 0 && this.line("/Prev " + this.makeRef(e2.children[n2 - 1])), n2 < e2.children.length - 1 && this.line("/Next " + this.makeRef(e2.children[n2 + 1])), i2.children.length > 0 && (this.line("/First " + this.makeRef(i2.children[0])), this.line("/Last " + this.makeRef(i2.children[i2.children.length - 1])));
+        var a2 = this.count = this.count_r({ count: 0 }, i2);
+        if (a2 > 0 && this.line("/Count " + a2), i2.options && i2.options.pageNumber) {
+          var o2 = t3.internal.getPageInfo(i2.options.pageNumber);
+          this.line("/Dest [" + o2.objId + " 0 R /XYZ 0 " + r(0) + " 0]");
+        }
+        this.objEnd();
+      }
+      for (var s2 = 0; s2 < e2.children.length; s2++) this.renderItems(e2.children[s2]);
+    }, t3.outline.line = function(t4) {
+      this.ctx.val += t4 + "\r\n";
+    }, t3.outline.makeRef = function(t4) {
+      return t4.id + " 0 R";
+    }, t3.outline.makeString = function(e2) {
+      return "(" + t3.internal.pdfEscape(e2) + ")";
+    }, t3.outline.objStart = function(t4) {
+      this.ctx.val += "\r\n" + t4.id + " 0 obj\r\n<<\r\n";
+    }, t3.outline.objEnd = function() {
+      this.ctx.val += ">> \r\nendobj\r\n";
+    }, t3.outline.count_r = function(t4, e2) {
+      for (var r = 0; r < e2.children.length; r++) t4.count++, this.count_r(t4, e2.children[r]);
+      return t4.count;
+    };
+  }]);
+}(E.API), /**
+ * @license
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var e = [192, 193, 194, 195, 196, 197, 198, 199];
+  t2.processJPEG = function(t3, r, n2, i2, a2, o2) {
+    var s2, c2 = this.decode.DCT_DECODE, u2 = null;
+    if ("string" == typeof t3 || this.__addimage__.isArrayBuffer(t3) || this.__addimage__.isArrayBufferView(t3)) {
+      switch (t3 = a2 || t3, t3 = this.__addimage__.isArrayBuffer(t3) ? new Uint8Array(t3) : t3, (s2 = function(t4) {
+        for (var r2, n3 = 256 * t4.charCodeAt(4) + t4.charCodeAt(5), i3 = t4.length, a3 = { width: 0, height: 0, numcomponents: 1 }, o3 = 4; o3 < i3; o3 += 2) {
+          if (o3 += n3, -1 !== e.indexOf(t4.charCodeAt(o3 + 1))) {
+            r2 = 256 * t4.charCodeAt(o3 + 5) + t4.charCodeAt(o3 + 6), a3 = { width: 256 * t4.charCodeAt(o3 + 7) + t4.charCodeAt(o3 + 8), height: r2, numcomponents: t4.charCodeAt(o3 + 9) };
+            break;
+          }
+          n3 = 256 * t4.charCodeAt(o3 + 2) + t4.charCodeAt(o3 + 3);
+        }
+        return a3;
+      }(t3 = this.__addimage__.isArrayBufferView(t3) ? this.__addimage__.arrayBufferToBinaryString(t3) : t3)).numcomponents) {
+        case 1:
+          o2 = this.color_spaces.DEVICE_GRAY;
+          break;
+        case 4:
+          o2 = this.color_spaces.DEVICE_CMYK;
+          break;
+        case 3:
+          o2 = this.color_spaces.DEVICE_RGB;
+      }
+      u2 = { data: t3, width: s2.width, height: s2.height, colorSpace: o2, bitsPerComponent: 8, filter: c2, index: r, alias: n2 };
+    }
+    return u2;
+  };
+}(E.API);
+var Vt;
+var Gt;
+var Yt;
+var Jt;
+var Xt;
+var Kt = function() {
+  var t2, e, i2;
+  function a2(t3) {
+    var e2, r, n2, i3, a3, o3, s2, c2, u2, h2, l2, f2, d2, p2;
+    for (this.data = t3, this.pos = 8, this.palette = [], this.imgData = [], this.transparency = {}, this.animation = null, this.text = {}, o3 = null; ; ) {
+      switch (e2 = this.readUInt32(), u2 = (function() {
+        var t4, e3;
+        for (e3 = [], t4 = 0; t4 < 4; ++t4) e3.push(String.fromCharCode(this.data[this.pos++]));
+        return e3;
+      }).call(this).join("")) {
+        case "IHDR":
+          this.width = this.readUInt32(), this.height = this.readUInt32(), this.bits = this.data[this.pos++], this.colorType = this.data[this.pos++], this.compressionMethod = this.data[this.pos++], this.filterMethod = this.data[this.pos++], this.interlaceMethod = this.data[this.pos++];
+          break;
+        case "acTL":
+          this.animation = { numFrames: this.readUInt32(), numPlays: this.readUInt32() || 1 / 0, frames: [] };
+          break;
+        case "PLTE":
+          this.palette = this.read(e2);
+          break;
+        case "fcTL":
+          o3 && this.animation.frames.push(o3), this.pos += 4, o3 = { width: this.readUInt32(), height: this.readUInt32(), xOffset: this.readUInt32(), yOffset: this.readUInt32() }, a3 = this.readUInt16(), i3 = this.readUInt16() || 100, o3.delay = 1e3 * a3 / i3, o3.disposeOp = this.data[this.pos++], o3.blendOp = this.data[this.pos++], o3.data = [];
+          break;
+        case "IDAT":
+        case "fdAT":
+          for ("fdAT" === u2 && (this.pos += 4, e2 -= 4), t3 = (null != o3 ? o3.data : void 0) || this.imgData, f2 = 0; 0 <= e2 ? f2 < e2 : f2 > e2; 0 <= e2 ? ++f2 : --f2) t3.push(this.data[this.pos++]);
+          break;
+        case "tRNS":
+          switch (this.transparency = {}, this.colorType) {
+            case 3:
+              if (n2 = this.palette.length / 3, this.transparency.indexed = this.read(e2), this.transparency.indexed.length > n2) throw new Error("More transparent colors than palette size");
+              if ((h2 = n2 - this.transparency.indexed.length) > 0) for (d2 = 0; 0 <= h2 ? d2 < h2 : d2 > h2; 0 <= h2 ? ++d2 : --d2) this.transparency.indexed.push(255);
+              break;
+            case 0:
+              this.transparency.grayscale = this.read(e2)[0];
+              break;
+            case 2:
+              this.transparency.rgb = this.read(e2);
+          }
+          break;
+        case "tEXt":
+          s2 = (l2 = this.read(e2)).indexOf(0), c2 = String.fromCharCode.apply(String, l2.slice(0, s2)), this.text[c2] = String.fromCharCode.apply(String, l2.slice(s2 + 1));
+          break;
+        case "IEND":
+          return o3 && this.animation.frames.push(o3), this.colors = (function() {
+            switch (this.colorType) {
+              case 0:
+              case 3:
+              case 4:
+                return 1;
+              case 2:
+              case 6:
+                return 3;
+            }
+          }).call(this), this.hasAlphaChannel = 4 === (p2 = this.colorType) || 6 === p2, r = this.colors + (this.hasAlphaChannel ? 1 : 0), this.pixelBitlength = this.bits * r, this.colorSpace = (function() {
+            switch (this.colors) {
+              case 1:
+                return "DeviceGray";
+              case 3:
+                return "DeviceRGB";
+            }
+          }).call(this), void (this.imgData = new Uint8Array(this.imgData));
+        default:
+          this.pos += e2;
+      }
+      if (this.pos += 4, this.pos > this.data.length) throw new Error("Incomplete or corrupt PNG file");
+    }
+  }
+  a2.prototype.read = function(t3) {
+    var e2, r;
+    for (r = [], e2 = 0; 0 <= t3 ? e2 < t3 : e2 > t3; 0 <= t3 ? ++e2 : --e2) r.push(this.data[this.pos++]);
+    return r;
+  }, a2.prototype.readUInt32 = function() {
+    return this.data[this.pos++] << 24 | this.data[this.pos++] << 16 | this.data[this.pos++] << 8 | this.data[this.pos++];
+  }, a2.prototype.readUInt16 = function() {
+    return this.data[this.pos++] << 8 | this.data[this.pos++];
+  }, a2.prototype.decodePixels = function(t3) {
+    var e2 = this.pixelBitlength / 8, n2 = new Uint8Array(this.width * this.height * e2), i3 = 0, a3 = this;
+    if (null == t3 && (t3 = this.imgData), 0 === t3.length) return new Uint8Array(0);
+    function o3(r, o4, s2, c2) {
+      var u2, h2, l2, f2, d2, p2, g2, m2, v2, b3, y2, w2, N2, L2, A2, x2, S2, _2, P2, k2, I2, F2 = Math.ceil((a3.width - r) / s2), C2 = Math.ceil((a3.height - o4) / c2), j2 = a3.width == F2 && a3.height == C2;
+      for (L2 = e2 * F2, w2 = j2 ? n2 : new Uint8Array(L2 * C2), p2 = t3.length, N2 = 0, h2 = 0; N2 < C2 && i3 < p2; ) {
+        switch (t3[i3++]) {
+          case 0:
+            for (f2 = S2 = 0; S2 < L2; f2 = S2 += 1) w2[h2++] = t3[i3++];
+            break;
+          case 1:
+            for (f2 = _2 = 0; _2 < L2; f2 = _2 += 1) u2 = t3[i3++], d2 = f2 < e2 ? 0 : w2[h2 - e2], w2[h2++] = (u2 + d2) % 256;
+            break;
+          case 2:
+            for (f2 = P2 = 0; P2 < L2; f2 = P2 += 1) u2 = t3[i3++], l2 = (f2 - f2 % e2) / e2, A2 = N2 && w2[(N2 - 1) * L2 + l2 * e2 + f2 % e2], w2[h2++] = (A2 + u2) % 256;
+            break;
+          case 3:
+            for (f2 = k2 = 0; k2 < L2; f2 = k2 += 1) u2 = t3[i3++], l2 = (f2 - f2 % e2) / e2, d2 = f2 < e2 ? 0 : w2[h2 - e2], A2 = N2 && w2[(N2 - 1) * L2 + l2 * e2 + f2 % e2], w2[h2++] = (u2 + Math.floor((d2 + A2) / 2)) % 256;
+            break;
+          case 4:
+            for (f2 = I2 = 0; I2 < L2; f2 = I2 += 1) u2 = t3[i3++], l2 = (f2 - f2 % e2) / e2, d2 = f2 < e2 ? 0 : w2[h2 - e2], 0 === N2 ? A2 = x2 = 0 : (A2 = w2[(N2 - 1) * L2 + l2 * e2 + f2 % e2], x2 = l2 && w2[(N2 - 1) * L2 + (l2 - 1) * e2 + f2 % e2]), g2 = d2 + A2 - x2, m2 = Math.abs(g2 - d2), b3 = Math.abs(g2 - A2), y2 = Math.abs(g2 - x2), v2 = m2 <= b3 && m2 <= y2 ? d2 : b3 <= y2 ? A2 : x2, w2[h2++] = (u2 + v2) % 256;
+            break;
+          default:
+            throw new Error("Invalid filter algorithm: " + t3[i3 - 1]);
+        }
+        if (!j2) {
+          var O2 = ((o4 + N2 * c2) * a3.width + r) * e2, B2 = N2 * L2;
+          for (f2 = 0; f2 < F2; f2 += 1) {
+            for (var M2 = 0; M2 < e2; M2 += 1) n2[O2++] = w2[B2++];
+            O2 += (s2 - 1) * e2;
+          }
+        }
+        N2++;
+      }
+    }
+    return t3 = unzlibSync(t3), 1 == a3.interlaceMethod ? (o3(0, 0, 8, 8), o3(4, 0, 8, 8), o3(0, 4, 4, 8), o3(2, 0, 4, 4), o3(0, 2, 2, 4), o3(1, 0, 2, 2), o3(0, 1, 1, 2)) : o3(0, 0, 1, 1), n2;
+  }, a2.prototype.decodePalette = function() {
+    var t3, e2, r, n2, i3, a3, o3, s2, c2;
+    for (r = this.palette, a3 = this.transparency.indexed || [], i3 = new Uint8Array((a3.length || 0) + r.length), n2 = 0, t3 = 0, e2 = o3 = 0, s2 = r.length; o3 < s2; e2 = o3 += 3) i3[n2++] = r[e2], i3[n2++] = r[e2 + 1], i3[n2++] = r[e2 + 2], i3[n2++] = null != (c2 = a3[t3++]) ? c2 : 255;
+    return i3;
+  }, a2.prototype.copyToImageData = function(t3, e2) {
+    var r, n2, i3, a3, o3, s2, c2, u2, h2, l2, f2;
+    if (n2 = this.colors, h2 = null, r = this.hasAlphaChannel, this.palette.length && (h2 = null != (f2 = this._decodedPalette) ? f2 : this._decodedPalette = this.decodePalette(), n2 = 4, r = true), u2 = (i3 = t3.data || t3).length, o3 = h2 || e2, a3 = s2 = 0, 1 === n2) for (; a3 < u2; ) c2 = h2 ? 4 * e2[a3 / 4] : s2, l2 = o3[c2++], i3[a3++] = l2, i3[a3++] = l2, i3[a3++] = l2, i3[a3++] = r ? o3[c2++] : 255, s2 = c2;
+    else for (; a3 < u2; ) c2 = h2 ? 4 * e2[a3 / 4] : s2, i3[a3++] = o3[c2++], i3[a3++] = o3[c2++], i3[a3++] = o3[c2++], i3[a3++] = r ? o3[c2++] : 255, s2 = c2;
+  }, a2.prototype.decode = function() {
+    var t3;
+    return t3 = new Uint8Array(this.width * this.height * 4), this.copyToImageData(t3, this.decodePixels()), t3;
+  };
+  var o2 = function() {
+    if ("[object Window]" === Object.prototype.toString.call(n)) {
+      try {
+        e = n.document.createElement("canvas"), i2 = e.getContext("2d");
+      } catch (t3) {
+        return false;
+      }
+      return true;
+    }
+    return false;
+  };
+  return o2(), t2 = function(t3) {
+    var r;
+    if (true === o2()) return i2.width = t3.width, i2.height = t3.height, i2.clearRect(0, 0, t3.width, t3.height), i2.putImageData(t3, 0, 0), (r = new Image()).src = e.toDataURL(), r;
+    throw new Error("This method requires a Browser with Canvas-capability.");
+  }, a2.prototype.decodeFrames = function(e2) {
+    var r, n2, i3, a3, o3, s2, c2, u2;
+    if (this.animation) {
+      for (u2 = [], n2 = o3 = 0, s2 = (c2 = this.animation.frames).length; o3 < s2; n2 = ++o3) r = c2[n2], i3 = e2.createImageData(r.width, r.height), a3 = this.decodePixels(new Uint8Array(r.data)), this.copyToImageData(i3, a3), r.imageData = i3, u2.push(r.image = t2(i3));
+      return u2;
+    }
+  }, a2.prototype.renderFrame = function(t3, e2) {
+    var r, n2, i3;
+    return r = (n2 = this.animation.frames)[e2], i3 = n2[e2 - 1], 0 === e2 && t3.clearRect(0, 0, this.width, this.height), 1 === (null != i3 ? i3.disposeOp : void 0) ? t3.clearRect(i3.xOffset, i3.yOffset, i3.width, i3.height) : 2 === (null != i3 ? i3.disposeOp : void 0) && t3.putImageData(i3.imageData, i3.xOffset, i3.yOffset), 0 === r.blendOp && t3.clearRect(r.xOffset, r.yOffset, r.width, r.height), t3.drawImage(r.image, r.xOffset, r.yOffset);
+  }, a2.prototype.animate = function(t3) {
+    var e2, r, n2, i3, a3, o3, s2 = this;
+    return r = 0, o3 = this.animation, i3 = o3.numFrames, n2 = o3.frames, a3 = o3.numPlays, (e2 = function() {
+      var o4, c2;
+      if (o4 = r++ % i3, c2 = n2[o4], s2.renderFrame(t3, o4), i3 > 1 && r / i3 < a3) return s2.animation._timeout = setTimeout(e2, c2.delay);
+    })();
+  }, a2.prototype.stopAnimation = function() {
+    var t3;
+    return clearTimeout(null != (t3 = this.animation) ? t3._timeout : void 0);
+  }, a2.prototype.render = function(t3) {
+    var e2, r;
+    return t3._png && t3._png.stopAnimation(), t3._png = this, t3.width = this.width, t3.height = this.height, e2 = t3.getContext("2d"), this.animation ? (this.decodeFrames(e2), this.animate(e2)) : (r = e2.createImageData(this.width, this.height), this.copyToImageData(r, this.decodePixels()), e2.putImageData(r, 0, 0));
+  }, a2;
+}();
+function Zt(t2) {
+  var e = 0;
+  if (71 !== t2[e++] || 73 !== t2[e++] || 70 !== t2[e++] || 56 !== t2[e++] || 56 != (t2[e++] + 1 & 253) || 97 !== t2[e++]) throw new Error("Invalid GIF 87a/89a header.");
+  var r = t2[e++] | t2[e++] << 8, n2 = t2[e++] | t2[e++] << 8, i2 = t2[e++], a2 = i2 >> 7, o2 = 1 << (7 & i2) + 1;
+  t2[e++];
+  t2[e++];
+  var s2 = null, c2 = null;
+  a2 && (s2 = e, c2 = o2, e += 3 * o2);
+  var u2 = true, h2 = [], l2 = 0, f2 = null, d2 = 0, p2 = null;
+  for (this.width = r, this.height = n2; u2 && e < t2.length; ) switch (t2[e++]) {
+    case 33:
+      switch (t2[e++]) {
+        case 255:
+          if (11 !== t2[e] || 78 == t2[e + 1] && 69 == t2[e + 2] && 84 == t2[e + 3] && 83 == t2[e + 4] && 67 == t2[e + 5] && 65 == t2[e + 6] && 80 == t2[e + 7] && 69 == t2[e + 8] && 50 == t2[e + 9] && 46 == t2[e + 10] && 48 == t2[e + 11] && 3 == t2[e + 12] && 1 == t2[e + 13] && 0 == t2[e + 16]) e += 14, p2 = t2[e++] | t2[e++] << 8, e++;
+          else for (e += 12; ; ) {
+            if (!((P2 = t2[e++]) >= 0)) throw Error("Invalid block size");
+            if (0 === P2) break;
+            e += P2;
+          }
+          break;
+        case 249:
+          if (4 !== t2[e++] || 0 !== t2[e + 4]) throw new Error("Invalid graphics extension block.");
+          var g2 = t2[e++];
+          l2 = t2[e++] | t2[e++] << 8, f2 = t2[e++], 0 == (1 & g2) && (f2 = null), d2 = g2 >> 2 & 7, e++;
+          break;
+        case 254:
+          for (; ; ) {
+            if (!((P2 = t2[e++]) >= 0)) throw Error("Invalid block size");
+            if (0 === P2) break;
+            e += P2;
+          }
+          break;
+        default:
+          throw new Error("Unknown graphic control label: 0x" + t2[e - 1].toString(16));
+      }
+      break;
+    case 44:
+      var m2 = t2[e++] | t2[e++] << 8, v2 = t2[e++] | t2[e++] << 8, b3 = t2[e++] | t2[e++] << 8, y2 = t2[e++] | t2[e++] << 8, w2 = t2[e++], N2 = w2 >> 6 & 1, L2 = 1 << (7 & w2) + 1, A2 = s2, x2 = c2, S2 = false;
+      if (w2 >> 7) {
+        S2 = true;
+        A2 = e, x2 = L2, e += 3 * L2;
+      }
+      var _2 = e;
+      for (e++; ; ) {
+        var P2;
+        if (!((P2 = t2[e++]) >= 0)) throw Error("Invalid block size");
+        if (0 === P2) break;
+        e += P2;
+      }
+      h2.push({ x: m2, y: v2, width: b3, height: y2, has_local_palette: S2, palette_offset: A2, palette_size: x2, data_offset: _2, data_length: e - _2, transparent_index: f2, interlaced: !!N2, delay: l2, disposal: d2 });
+      break;
+    case 59:
+      u2 = false;
+      break;
+    default:
+      throw new Error("Unknown gif block: 0x" + t2[e - 1].toString(16));
+  }
+  this.numFrames = function() {
+    return h2.length;
+  }, this.loopCount = function() {
+    return p2;
+  }, this.frameInfo = function(t3) {
+    if (t3 < 0 || t3 >= h2.length) throw new Error("Frame index out of range.");
+    return h2[t3];
+  }, this.decodeAndBlitFrameBGRA = function(e2, n3) {
+    var i3 = this.frameInfo(e2), a3 = i3.width * i3.height, o3 = new Uint8Array(a3);
+    $t(t2, i3.data_offset, o3, a3);
+    var s3 = i3.palette_offset, c3 = i3.transparent_index;
+    null === c3 && (c3 = 256);
+    var u3 = i3.width, h3 = r - u3, l3 = u3, f3 = 4 * (i3.y * r + i3.x), d3 = 4 * ((i3.y + i3.height) * r + i3.x), p3 = f3, g3 = 4 * h3;
+    true === i3.interlaced && (g3 += 4 * r * 7);
+    for (var m3 = 8, v3 = 0, b5 = o3.length; v3 < b5; ++v3) {
+      var y3 = o3[v3];
+      if (0 === l3 && (l3 = u3, (p3 += g3) >= d3 && (g3 = 4 * h3 + 4 * r * (m3 - 1), p3 = f3 + (u3 + h3) * (m3 << 1), m3 >>= 1)), y3 === c3) p3 += 4;
+      else {
+        var w3 = t2[s3 + 3 * y3], N3 = t2[s3 + 3 * y3 + 1], L3 = t2[s3 + 3 * y3 + 2];
+        n3[p3++] = L3, n3[p3++] = N3, n3[p3++] = w3, n3[p3++] = 255;
+      }
+      --l3;
+    }
+  }, this.decodeAndBlitFrameRGBA = function(e2, n3) {
+    var i3 = this.frameInfo(e2), a3 = i3.width * i3.height, o3 = new Uint8Array(a3);
+    $t(t2, i3.data_offset, o3, a3);
+    var s3 = i3.palette_offset, c3 = i3.transparent_index;
+    null === c3 && (c3 = 256);
+    var u3 = i3.width, h3 = r - u3, l3 = u3, f3 = 4 * (i3.y * r + i3.x), d3 = 4 * ((i3.y + i3.height) * r + i3.x), p3 = f3, g3 = 4 * h3;
+    true === i3.interlaced && (g3 += 4 * r * 7);
+    for (var m3 = 8, v3 = 0, b5 = o3.length; v3 < b5; ++v3) {
+      var y3 = o3[v3];
+      if (0 === l3 && (l3 = u3, (p3 += g3) >= d3 && (g3 = 4 * h3 + 4 * r * (m3 - 1), p3 = f3 + (u3 + h3) * (m3 << 1), m3 >>= 1)), y3 === c3) p3 += 4;
+      else {
+        var w3 = t2[s3 + 3 * y3], N3 = t2[s3 + 3 * y3 + 1], L3 = t2[s3 + 3 * y3 + 2];
+        n3[p3++] = w3, n3[p3++] = N3, n3[p3++] = L3, n3[p3++] = 255;
+      }
+      --l3;
+    }
+  };
+}
+function $t(t2, e, r, n2) {
+  for (var i2 = t2[e++], o2 = 1 << i2, s2 = o2 + 1, c2 = s2 + 1, u2 = i2 + 1, h2 = (1 << u2) - 1, l2 = 0, f2 = 0, d2 = 0, p2 = t2[e++], g2 = new Int32Array(4096), m2 = null; ; ) {
+    for (; l2 < 16 && 0 !== p2; ) f2 |= t2[e++] << l2, l2 += 8, 1 === p2 ? p2 = t2[e++] : --p2;
+    if (l2 < u2) break;
+    var v2 = f2 & h2;
+    if (f2 >>= u2, l2 -= u2, v2 !== o2) {
+      if (v2 === s2) break;
+      for (var b3 = v2 < c2 ? v2 : m2, y2 = 0, w2 = b3; w2 > o2; ) w2 = g2[w2] >> 8, ++y2;
+      var N2 = w2;
+      if (d2 + y2 + (b3 !== v2 ? 1 : 0) > n2) return void a.log("Warning, gif stream longer than expected.");
+      r[d2++] = N2;
+      var L2 = d2 += y2;
+      for (b3 !== v2 && (r[d2++] = N2), w2 = b3; y2--; ) w2 = g2[w2], r[--L2] = 255 & w2, w2 >>= 8;
+      null !== m2 && c2 < 4096 && (g2[c2++] = m2 << 8 | N2, c2 >= h2 + 1 && u2 < 12 && (++u2, h2 = h2 << 1 | 1)), m2 = v2;
+    } else c2 = s2 + 1, h2 = (1 << (u2 = i2 + 1)) - 1, m2 = null;
+  }
+  return d2 !== n2 && a.log("Warning, gif stream shorter than expected."), r;
+}
+function Qt(t2) {
+  var e, r, n2, i2, a2, o2 = Math.floor, s2 = new Array(64), c2 = new Array(64), u2 = new Array(64), h2 = new Array(64), l2 = new Array(65535), f2 = new Array(65535), d2 = new Array(64), p2 = new Array(64), g2 = [], m2 = 0, v2 = 7, b3 = new Array(64), y2 = new Array(64), w2 = new Array(64), N2 = new Array(256), L2 = new Array(2048), A2 = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63], x2 = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], S2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], _2 = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125], P2 = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250], k2 = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], I2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], F2 = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119], C2 = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];
+  function j2(t3, e2) {
+    for (var r2 = 0, n3 = 0, i3 = new Array(), a3 = 1; a3 <= 16; a3++) {
+      for (var o3 = 1; o3 <= t3[a3]; o3++) i3[e2[n3]] = [], i3[e2[n3]][0] = r2, i3[e2[n3]][1] = a3, n3++, r2++;
+      r2 *= 2;
+    }
+    return i3;
+  }
+  function O2(t3) {
+    for (var e2 = t3[0], r2 = t3[1] - 1; r2 >= 0; ) e2 & 1 << r2 && (m2 |= 1 << v2), r2--, --v2 < 0 && (255 == m2 ? (B2(255), B2(0)) : B2(m2), v2 = 7, m2 = 0);
+  }
+  function B2(t3) {
+    g2.push(t3);
+  }
+  function M2(t3) {
+    B2(t3 >> 8 & 255), B2(255 & t3);
+  }
+  function E2(t3, e2, r2, n3, i3) {
+    for (var a3, o3 = i3[0], s3 = i3[240], c3 = function(t4, e3) {
+      var r3, n4, i4, a4, o4, s4, c4, u4, h4, l3, f3 = 0;
+      for (h4 = 0; h4 < 8; ++h4) {
+        r3 = t4[f3], n4 = t4[f3 + 1], i4 = t4[f3 + 2], a4 = t4[f3 + 3], o4 = t4[f3 + 4], s4 = t4[f3 + 5], c4 = t4[f3 + 6];
+        var p3 = r3 + (u4 = t4[f3 + 7]), g4 = r3 - u4, m4 = n4 + c4, v4 = n4 - c4, b6 = i4 + s4, y4 = i4 - s4, w4 = a4 + o4, N3 = a4 - o4, L3 = p3 + w4, A3 = p3 - w4, x3 = m4 + b6, S3 = m4 - b6;
+        t4[f3] = L3 + x3, t4[f3 + 4] = L3 - x3;
+        var _3 = 0.707106781 * (S3 + A3);
+        t4[f3 + 2] = A3 + _3, t4[f3 + 6] = A3 - _3;
+        var P3 = 0.382683433 * ((L3 = N3 + y4) - (S3 = v4 + g4)), k3 = 0.5411961 * L3 + P3, I3 = 1.306562965 * S3 + P3, F3 = 0.707106781 * (x3 = y4 + v4), C3 = g4 + F3, j3 = g4 - F3;
+        t4[f3 + 5] = j3 + k3, t4[f3 + 3] = j3 - k3, t4[f3 + 1] = C3 + I3, t4[f3 + 7] = C3 - I3, f3 += 8;
+      }
+      for (f3 = 0, h4 = 0; h4 < 8; ++h4) {
+        r3 = t4[f3], n4 = t4[f3 + 8], i4 = t4[f3 + 16], a4 = t4[f3 + 24], o4 = t4[f3 + 32], s4 = t4[f3 + 40], c4 = t4[f3 + 48];
+        var O3 = r3 + (u4 = t4[f3 + 56]), B3 = r3 - u4, M3 = n4 + c4, E3 = n4 - c4, q3 = i4 + s4, D2 = i4 - s4, R2 = a4 + o4, T2 = a4 - o4, U2 = O3 + R2, z2 = O3 - R2, H2 = M3 + q3, W2 = M3 - q3;
+        t4[f3] = U2 + H2, t4[f3 + 32] = U2 - H2;
+        var V2 = 0.707106781 * (W2 + z2);
+        t4[f3 + 16] = z2 + V2, t4[f3 + 48] = z2 - V2;
+        var G2 = 0.382683433 * ((U2 = T2 + D2) - (W2 = E3 + B3)), Y2 = 0.5411961 * U2 + G2, J2 = 1.306562965 * W2 + G2, X2 = 0.707106781 * (H2 = D2 + E3), K2 = B3 + X2, Z2 = B3 - X2;
+        t4[f3 + 40] = Z2 + Y2, t4[f3 + 24] = Z2 - Y2, t4[f3 + 8] = K2 + J2, t4[f3 + 56] = K2 - J2, f3++;
+      }
+      for (h4 = 0; h4 < 64; ++h4) l3 = t4[h4] * e3[h4], d2[h4] = l3 > 0 ? l3 + 0.5 | 0 : l3 - 0.5 | 0;
+      return d2;
+    }(t3, e2), u3 = 0; u3 < 64; ++u3) p2[A2[u3]] = c3[u3];
+    var h3 = p2[0] - r2;
+    r2 = p2[0], 0 == h3 ? O2(n3[0]) : (O2(n3[f2[a3 = 32767 + h3]]), O2(l2[a3]));
+    for (var g3 = 63; g3 > 0 && 0 == p2[g3]; ) g3--;
+    if (0 == g3) return O2(o3), r2;
+    for (var m3, v3 = 1; v3 <= g3; ) {
+      for (var b5 = v3; 0 == p2[v3] && v3 <= g3; ) ++v3;
+      var y3 = v3 - b5;
+      if (y3 >= 16) {
+        m3 = y3 >> 4;
+        for (var w3 = 1; w3 <= m3; ++w3) O2(s3);
+        y3 &= 15;
+      }
+      a3 = 32767 + p2[v3], O2(i3[(y3 << 4) + f2[a3]]), O2(l2[a3]), v3++;
+    }
+    return 63 != g3 && O2(o3), r2;
+  }
+  function q2(t3) {
+    (t3 = Math.min(Math.max(t3, 1), 100), a2 != t3) && (!function(t4) {
+      for (var e2 = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99], r2 = 0; r2 < 64; r2++) {
+        var n3 = o2((e2[r2] * t4 + 50) / 100);
+        n3 = Math.min(Math.max(n3, 1), 255), s2[A2[r2]] = n3;
+      }
+      for (var i3 = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99], a3 = 0; a3 < 64; a3++) {
+        var l3 = o2((i3[a3] * t4 + 50) / 100);
+        l3 = Math.min(Math.max(l3, 1), 255), c2[A2[a3]] = l3;
+      }
+      for (var f3 = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379], d3 = 0, p3 = 0; p3 < 8; p3++) for (var g3 = 0; g3 < 8; g3++) u2[d3] = 1 / (s2[A2[d3]] * f3[p3] * f3[g3] * 8), h2[d3] = 1 / (c2[A2[d3]] * f3[p3] * f3[g3] * 8), d3++;
+    }(t3 < 50 ? Math.floor(5e3 / t3) : Math.floor(200 - 2 * t3)), a2 = t3);
+  }
+  this.encode = function(t3, a3) {
+    a3 && q2(a3), g2 = new Array(), m2 = 0, v2 = 7, M2(65496), M2(65504), M2(16), B2(74), B2(70), B2(73), B2(70), B2(0), B2(1), B2(1), B2(0), M2(1), M2(1), B2(0), B2(0), function() {
+      M2(65499), M2(132), B2(0);
+      for (var t4 = 0; t4 < 64; t4++) B2(s2[t4]);
+      B2(1);
+      for (var e2 = 0; e2 < 64; e2++) B2(c2[e2]);
+    }(), function(t4, e2) {
+      M2(65472), M2(17), B2(8), M2(e2), M2(t4), B2(3), B2(1), B2(17), B2(0), B2(2), B2(17), B2(1), B2(3), B2(17), B2(1);
+    }(t3.width, t3.height), function() {
+      M2(65476), M2(418), B2(0);
+      for (var t4 = 0; t4 < 16; t4++) B2(x2[t4 + 1]);
+      for (var e2 = 0; e2 <= 11; e2++) B2(S2[e2]);
+      B2(16);
+      for (var r2 = 0; r2 < 16; r2++) B2(_2[r2 + 1]);
+      for (var n3 = 0; n3 <= 161; n3++) B2(P2[n3]);
+      B2(1);
+      for (var i3 = 0; i3 < 16; i3++) B2(k2[i3 + 1]);
+      for (var a4 = 0; a4 <= 11; a4++) B2(I2[a4]);
+      B2(17);
+      for (var o4 = 0; o4 < 16; o4++) B2(F2[o4 + 1]);
+      for (var s3 = 0; s3 <= 161; s3++) B2(C2[s3]);
+    }(), M2(65498), M2(12), B2(3), B2(1), B2(0), B2(2), B2(17), B2(3), B2(17), B2(0), B2(63), B2(0);
+    var o3 = 0, l3 = 0, f3 = 0;
+    m2 = 0, v2 = 7, this.encode.displayName = "_encode_";
+    for (var d3, p3, N3, A3, j3, D2, R2, T2, U2, z2 = t3.data, H2 = t3.width, W2 = t3.height, V2 = 4 * H2, G2 = 0; G2 < W2; ) {
+      for (d3 = 0; d3 < V2; ) {
+        for (j3 = V2 * G2 + d3, R2 = -1, T2 = 0, U2 = 0; U2 < 64; U2++) D2 = j3 + (T2 = U2 >> 3) * V2 + (R2 = 4 * (7 & U2)), G2 + T2 >= W2 && (D2 -= V2 * (G2 + 1 + T2 - W2)), d3 + R2 >= V2 && (D2 -= d3 + R2 - V2 + 4), p3 = z2[D2++], N3 = z2[D2++], A3 = z2[D2++], b3[U2] = (L2[p3] + L2[N3 + 256 >> 0] + L2[A3 + 512 >> 0] >> 16) - 128, y2[U2] = (L2[p3 + 768 >> 0] + L2[N3 + 1024 >> 0] + L2[A3 + 1280 >> 0] >> 16) - 128, w2[U2] = (L2[p3 + 1280 >> 0] + L2[N3 + 1536 >> 0] + L2[A3 + 1792 >> 0] >> 16) - 128;
+        o3 = E2(b3, u2, o3, e, n2), l3 = E2(y2, h2, l3, r, i2), f3 = E2(w2, h2, f3, r, i2), d3 += 32;
+      }
+      G2 += 8;
+    }
+    if (v2 >= 0) {
+      var Y2 = [];
+      Y2[1] = v2 + 1, Y2[0] = (1 << v2 + 1) - 1, O2(Y2);
+    }
+    return M2(65497), new Uint8Array(g2);
+  }, t2 = t2 || 50, function() {
+    for (var t3 = String.fromCharCode, e2 = 0; e2 < 256; e2++) N2[e2] = t3(e2);
+  }(), e = j2(x2, S2), r = j2(k2, I2), n2 = j2(_2, P2), i2 = j2(F2, C2), function() {
+    for (var t3 = 1, e2 = 2, r2 = 1; r2 <= 15; r2++) {
+      for (var n3 = t3; n3 < e2; n3++) f2[32767 + n3] = r2, l2[32767 + n3] = [], l2[32767 + n3][1] = r2, l2[32767 + n3][0] = n3;
+      for (var i3 = -(e2 - 1); i3 <= -t3; i3++) f2[32767 + i3] = r2, l2[32767 + i3] = [], l2[32767 + i3][1] = r2, l2[32767 + i3][0] = e2 - 1 + i3;
+      t3 <<= 1, e2 <<= 1;
+    }
+  }(), function() {
+    for (var t3 = 0; t3 < 256; t3++) L2[t3] = 19595 * t3, L2[t3 + 256 >> 0] = 38470 * t3, L2[t3 + 512 >> 0] = 7471 * t3 + 32768, L2[t3 + 768 >> 0] = -11059 * t3, L2[t3 + 1024 >> 0] = -21709 * t3, L2[t3 + 1280 >> 0] = 32768 * t3 + 8421375, L2[t3 + 1536 >> 0] = -27439 * t3, L2[t3 + 1792 >> 0] = -5329 * t3;
+  }(), q2(t2);
+}
+function te2(t2, e) {
+  if (this.pos = 0, this.buffer = t2, this.datav = new DataView(t2.buffer), this.is_with_alpha = !!e, this.bottom_up = true, this.flag = String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]), this.pos += 2, -1 === ["BM", "BA", "CI", "CP", "IC", "PT"].indexOf(this.flag)) throw new Error("Invalid BMP File");
+  this.parseHeader(), this.parseBGR();
+}
+function ee(t2) {
+  function e(t3) {
+    if (!t3) throw Error("assert :P");
+  }
+  function r(t3, e2, r2) {
+    for (var n3 = 0; 4 > n3; n3++) if (t3[e2 + n3] != r2.charCodeAt(n3)) return true;
+    return false;
+  }
+  function n2(t3, e2, r2, n3, i3) {
+    for (var a3 = 0; a3 < i3; a3++) t3[e2 + a3] = r2[n3 + a3];
+  }
+  function i2(t3, e2, r2, n3) {
+    for (var i3 = 0; i3 < n3; i3++) t3[e2 + i3] = r2;
+  }
+  function a2(t3) {
+    return new Int32Array(t3);
+  }
+  function o2(t3, e2) {
+    for (var r2 = [], n3 = 0; n3 < t3; n3++) r2.push(new e2());
+    return r2;
+  }
+  function s2(t3, e2) {
+    var r2 = [];
+    return function t4(r3, n3, i3) {
+      for (var a3 = i3[n3], o3 = 0; o3 < a3 && (r3.push(i3.length > n3 + 1 ? [] : new e2()), !(i3.length < n3 + 1)); o3++) t4(r3[o3], n3 + 1, i3);
+    }(r2, 0, t3), r2;
+  }
+  var c2 = function() {
+    var t3 = this;
+    function c3(t4, e2) {
+      for (var r2 = 1 << e2 - 1 >>> 0; t4 & r2; ) r2 >>>= 1;
+      return r2 ? (t4 & r2 - 1) + r2 : t4;
+    }
+    function u3(t4, r2, n3, i3, a3) {
+      e(!(i3 % n3));
+      do {
+        t4[r2 + (i3 -= n3)] = a3;
+      } while (0 < i3);
+    }
+    function h3(t4, r2, n3, i3, o3) {
+      if (e(2328 >= o3), 512 >= o3) var s3 = a2(512);
+      else if (null == (s3 = a2(o3))) return 0;
+      return function(t5, r3, n4, i4, o4, s4) {
+        var h4, f4, d4 = r3, p4 = 1 << n4, g4 = a2(16), m4 = a2(16);
+        for (e(0 != o4), e(null != i4), e(null != t5), e(0 < n4), f4 = 0; f4 < o4; ++f4) {
+          if (15 < i4[f4]) return 0;
+          ++g4[i4[f4]];
+        }
+        if (g4[0] == o4) return 0;
+        for (m4[1] = 0, h4 = 1; 15 > h4; ++h4) {
+          if (g4[h4] > 1 << h4) return 0;
+          m4[h4 + 1] = m4[h4] + g4[h4];
+        }
+        for (f4 = 0; f4 < o4; ++f4) h4 = i4[f4], 0 < i4[f4] && (s4[m4[h4]++] = f4);
+        if (1 == m4[15]) return (i4 = new l3()).g = 0, i4.value = s4[0], u3(t5, d4, 1, p4, i4), p4;
+        var v4, b6 = -1, y4 = p4 - 1, w4 = 0, N4 = 1, L4 = 1, A4 = 1 << n4;
+        for (f4 = 0, h4 = 1, o4 = 2; h4 <= n4; ++h4, o4 <<= 1) {
+          if (N4 += L4 <<= 1, 0 > (L4 -= g4[h4])) return 0;
+          for (; 0 < g4[h4]; --g4[h4]) (i4 = new l3()).g = h4, i4.value = s4[f4++], u3(t5, d4 + w4, o4, A4, i4), w4 = c3(w4, h4);
+        }
+        for (h4 = n4 + 1, o4 = 2; 15 >= h4; ++h4, o4 <<= 1) {
+          if (N4 += L4 <<= 1, 0 > (L4 -= g4[h4])) return 0;
+          for (; 0 < g4[h4]; --g4[h4]) {
+            if (i4 = new l3(), (w4 & y4) != b6) {
+              for (d4 += A4, v4 = 1 << (b6 = h4) - n4; 15 > b6 && !(0 >= (v4 -= g4[b6])); ) ++b6, v4 <<= 1;
+              p4 += A4 = 1 << (v4 = b6 - n4), t5[r3 + (b6 = w4 & y4)].g = v4 + n4, t5[r3 + b6].value = d4 - r3 - b6;
+            }
+            i4.g = h4 - n4, i4.value = s4[f4++], u3(t5, d4 + (w4 >> n4), o4, A4, i4), w4 = c3(w4, h4);
+          }
+        }
+        return N4 != 2 * m4[15] - 1 ? 0 : p4;
+      }(t4, r2, n3, i3, o3, s3);
+    }
+    function l3() {
+      this.value = this.g = 0;
+    }
+    function f3() {
+      this.value = this.g = 0;
+    }
+    function d3() {
+      this.G = o2(5, l3), this.H = a2(5), this.jc = this.Qb = this.qb = this.nd = 0, this.pd = o2(Dr, f3);
+    }
+    function p3(t4, r2, n3, i3) {
+      e(null != t4), e(null != r2), e(2147483648 > i3), t4.Ca = 254, t4.I = 0, t4.b = -8, t4.Ka = 0, t4.oa = r2, t4.pa = n3, t4.Jd = r2, t4.Yc = n3 + i3, t4.Zc = 4 <= i3 ? n3 + i3 - 4 + 1 : n3, _2(t4);
+    }
+    function g3(t4, e2) {
+      for (var r2 = 0; 0 < e2--; ) r2 |= k2(t4, 128) << e2;
+      return r2;
+    }
+    function m3(t4, e2) {
+      var r2 = g3(t4, e2);
+      return P2(t4) ? -r2 : r2;
+    }
+    function v3(t4, r2, n3, i3) {
+      var a3, o3 = 0;
+      for (e(null != t4), e(null != r2), e(4294967288 > i3), t4.Sb = i3, t4.Ra = 0, t4.u = 0, t4.h = 0, 4 < i3 && (i3 = 4), a3 = 0; a3 < i3; ++a3) o3 += r2[n3 + a3] << 8 * a3;
+      t4.Ra = o3, t4.bb = i3, t4.oa = r2, t4.pa = n3;
+    }
+    function b5(t4) {
+      for (; 8 <= t4.u && t4.bb < t4.Sb; ) t4.Ra >>>= 8, t4.Ra += t4.oa[t4.pa + t4.bb] << Ur - 8 >>> 0, ++t4.bb, t4.u -= 8;
+      A3(t4) && (t4.h = 1, t4.u = 0);
+    }
+    function y3(t4, r2) {
+      if (e(0 <= r2), !t4.h && r2 <= Tr) {
+        var n3 = L3(t4) & Rr[r2];
+        return t4.u += r2, b5(t4), n3;
+      }
+      return t4.h = 1, t4.u = 0;
+    }
+    function w3() {
+      this.b = this.Ca = this.I = 0, this.oa = [], this.pa = 0, this.Jd = [], this.Yc = 0, this.Zc = [], this.Ka = 0;
+    }
+    function N3() {
+      this.Ra = 0, this.oa = [], this.h = this.u = this.bb = this.Sb = this.pa = 0;
+    }
+    function L3(t4) {
+      return t4.Ra >>> (t4.u & Ur - 1) >>> 0;
+    }
+    function A3(t4) {
+      return e(t4.bb <= t4.Sb), t4.h || t4.bb == t4.Sb && t4.u > Ur;
+    }
+    function x2(t4, e2) {
+      t4.u = e2, t4.h = A3(t4);
+    }
+    function S2(t4) {
+      t4.u >= zr && (e(t4.u >= zr), b5(t4));
+    }
+    function _2(t4) {
+      e(null != t4 && null != t4.oa), t4.pa < t4.Zc ? (t4.I = (t4.oa[t4.pa++] | t4.I << 8) >>> 0, t4.b += 8) : (e(null != t4 && null != t4.oa), t4.pa < t4.Yc ? (t4.b += 8, t4.I = t4.oa[t4.pa++] | t4.I << 8) : t4.Ka ? t4.b = 0 : (t4.I <<= 8, t4.b += 8, t4.Ka = 1));
+    }
+    function P2(t4) {
+      return g3(t4, 1);
+    }
+    function k2(t4, e2) {
+      var r2 = t4.Ca;
+      0 > t4.b && _2(t4);
+      var n3 = t4.b, i3 = r2 * e2 >>> 8, a3 = (t4.I >>> n3 > i3) + 0;
+      for (a3 ? (r2 -= i3, t4.I -= i3 + 1 << n3 >>> 0) : r2 = i3 + 1, n3 = r2, i3 = 0; 256 <= n3; ) i3 += 8, n3 >>= 8;
+      return n3 = 7 ^ i3 + Hr[n3], t4.b -= n3, t4.Ca = (r2 << n3) - 1, a3;
+    }
+    function I2(t4, e2, r2) {
+      t4[e2 + 0] = r2 >> 24 & 255, t4[e2 + 1] = r2 >> 16 & 255, t4[e2 + 2] = r2 >> 8 & 255, t4[e2 + 3] = r2 >> 0 & 255;
+    }
+    function F2(t4, e2) {
+      return t4[e2 + 0] << 0 | t4[e2 + 1] << 8;
+    }
+    function C2(t4, e2) {
+      return F2(t4, e2) | t4[e2 + 2] << 16;
+    }
+    function j2(t4, e2) {
+      return F2(t4, e2) | F2(t4, e2 + 2) << 16;
+    }
+    function O2(t4, r2) {
+      var n3 = 1 << r2;
+      return e(null != t4), e(0 < r2), t4.X = a2(n3), null == t4.X ? 0 : (t4.Mb = 32 - r2, t4.Xa = r2, 1);
+    }
+    function B2(t4, r2) {
+      e(null != t4), e(null != r2), e(t4.Xa == r2.Xa), n2(r2.X, 0, t4.X, 0, 1 << r2.Xa);
+    }
+    function M2() {
+      this.X = [], this.Xa = this.Mb = 0;
+    }
+    function E2(t4, r2, n3, i3) {
+      e(null != n3), e(null != i3);
+      var a3 = n3[0], o3 = i3[0];
+      return 0 == a3 && (a3 = (t4 * o3 + r2 / 2) / r2), 0 == o3 && (o3 = (r2 * a3 + t4 / 2) / t4), 0 >= a3 || 0 >= o3 ? 0 : (n3[0] = a3, i3[0] = o3, 1);
+    }
+    function q2(t4, e2) {
+      return t4 + (1 << e2) - 1 >>> e2;
+    }
+    function D2(t4, e2) {
+      return ((4278255360 & t4) + (4278255360 & e2) >>> 0 & 4278255360) + ((16711935 & t4) + (16711935 & e2) >>> 0 & 16711935) >>> 0;
+    }
+    function R2(e2, r2) {
+      t3[r2] = function(r3, n3, i3, a3, o3, s3, c4) {
+        var u4;
+        for (u4 = 0; u4 < o3; ++u4) {
+          var h4 = t3[e2](s3[c4 + u4 - 1], i3, a3 + u4);
+          s3[c4 + u4] = D2(r3[n3 + u4], h4);
+        }
+      };
+    }
+    function T2() {
+      this.ud = this.hd = this.jd = 0;
+    }
+    function U2(t4, e2) {
+      return ((4278124286 & (t4 ^ e2)) >>> 1) + (t4 & e2) >>> 0;
+    }
+    function z2(t4) {
+      return 0 <= t4 && 256 > t4 ? t4 : 0 > t4 ? 0 : 255 < t4 ? 255 : void 0;
+    }
+    function H2(t4, e2) {
+      return z2(t4 + (t4 - e2 + 0.5 >> 1));
+    }
+    function W2(t4, e2, r2) {
+      return Math.abs(e2 - r2) - Math.abs(t4 - r2);
+    }
+    function V2(t4, e2, r2, n3, i3, a3, o3) {
+      for (n3 = a3[o3 - 1], r2 = 0; r2 < i3; ++r2) a3[o3 + r2] = n3 = D2(t4[e2 + r2], n3);
+    }
+    function G2(t4, e2, r2, n3, i3) {
+      var a3;
+      for (a3 = 0; a3 < r2; ++a3) {
+        var o3 = t4[e2 + a3], s3 = o3 >> 8 & 255, c4 = 16711935 & (c4 = (c4 = 16711935 & o3) + ((s3 << 16) + s3));
+        n3[i3 + a3] = (4278255360 & o3) + c4 >>> 0;
+      }
+    }
+    function Y2(t4, e2) {
+      e2.jd = t4 >> 0 & 255, e2.hd = t4 >> 8 & 255, e2.ud = t4 >> 16 & 255;
+    }
+    function J2(t4, e2, r2, n3, i3, a3) {
+      var o3;
+      for (o3 = 0; o3 < n3; ++o3) {
+        var s3 = e2[r2 + o3], c4 = s3 >>> 8, u4 = s3, h4 = 255 & (h4 = (h4 = s3 >>> 16) + ((t4.jd << 24 >> 24) * (c4 << 24 >> 24) >>> 5));
+        u4 = 255 & (u4 = (u4 = u4 + ((t4.hd << 24 >> 24) * (c4 << 24 >> 24) >>> 5)) + ((t4.ud << 24 >> 24) * (h4 << 24 >> 24) >>> 5));
+        i3[a3 + o3] = (4278255360 & s3) + (h4 << 16) + u4;
+      }
+    }
+    function X2(e2, r2, n3, i3, a3) {
+      t3[r2] = function(t4, e3, r3, n4, o3, s3, c4, u4, h4) {
+        for (n4 = c4; n4 < u4; ++n4) for (c4 = 0; c4 < h4; ++c4) o3[s3++] = a3(r3[i3(t4[e3++])]);
+      }, t3[e2] = function(e3, r3, o3, s3, c4, u4, h4) {
+        var l4 = 8 >> e3.b, f4 = e3.Ea, d4 = e3.K[0], p4 = e3.w;
+        if (8 > l4) for (e3 = (1 << e3.b) - 1, p4 = (1 << l4) - 1; r3 < o3; ++r3) {
+          var g4, m4 = 0;
+          for (g4 = 0; g4 < f4; ++g4) g4 & e3 || (m4 = i3(s3[c4++])), u4[h4++] = a3(d4[m4 & p4]), m4 >>= l4;
+        }
+        else t3["VP8LMapColor" + n3](s3, c4, d4, p4, u4, h4, r3, o3, f4);
+      };
+    }
+    function K2(t4, e2, r2, n3, i3) {
+      for (r2 = e2 + r2; e2 < r2; ) {
+        var a3 = t4[e2++];
+        n3[i3++] = a3 >> 16 & 255, n3[i3++] = a3 >> 8 & 255, n3[i3++] = a3 >> 0 & 255;
+      }
+    }
+    function Z2(t4, e2, r2, n3, i3) {
+      for (r2 = e2 + r2; e2 < r2; ) {
+        var a3 = t4[e2++];
+        n3[i3++] = a3 >> 16 & 255, n3[i3++] = a3 >> 8 & 255, n3[i3++] = a3 >> 0 & 255, n3[i3++] = a3 >> 24 & 255;
+      }
+    }
+    function $2(t4, e2, r2, n3, i3) {
+      for (r2 = e2 + r2; e2 < r2; ) {
+        var a3 = (o3 = t4[e2++]) >> 16 & 240 | o3 >> 12 & 15, o3 = o3 >> 0 & 240 | o3 >> 28 & 15;
+        n3[i3++] = a3, n3[i3++] = o3;
+      }
+    }
+    function Q2(t4, e2, r2, n3, i3) {
+      for (r2 = e2 + r2; e2 < r2; ) {
+        var a3 = (o3 = t4[e2++]) >> 16 & 248 | o3 >> 13 & 7, o3 = o3 >> 5 & 224 | o3 >> 3 & 31;
+        n3[i3++] = a3, n3[i3++] = o3;
+      }
+    }
+    function tt2(t4, e2, r2, n3, i3) {
+      for (r2 = e2 + r2; e2 < r2; ) {
+        var a3 = t4[e2++];
+        n3[i3++] = a3 >> 0 & 255, n3[i3++] = a3 >> 8 & 255, n3[i3++] = a3 >> 16 & 255;
+      }
+    }
+    function et3(t4, e2, r2, i3, a3, o3) {
+      if (0 == o3) for (r2 = e2 + r2; e2 < r2; ) I2(i3, ((o3 = t4[e2++])[0] >> 24 | o3[1] >> 8 & 65280 | o3[2] << 8 & 16711680 | o3[3] << 24) >>> 0), a3 += 32;
+      else n2(i3, a3, t4, e2, r2);
+    }
+    function rt2(e2, r2) {
+      t3[r2][0] = t3[e2 + "0"], t3[r2][1] = t3[e2 + "1"], t3[r2][2] = t3[e2 + "2"], t3[r2][3] = t3[e2 + "3"], t3[r2][4] = t3[e2 + "4"], t3[r2][5] = t3[e2 + "5"], t3[r2][6] = t3[e2 + "6"], t3[r2][7] = t3[e2 + "7"], t3[r2][8] = t3[e2 + "8"], t3[r2][9] = t3[e2 + "9"], t3[r2][10] = t3[e2 + "10"], t3[r2][11] = t3[e2 + "11"], t3[r2][12] = t3[e2 + "12"], t3[r2][13] = t3[e2 + "13"], t3[r2][14] = t3[e2 + "0"], t3[r2][15] = t3[e2 + "0"];
+    }
+    function nt2(t4) {
+      return t4 == Hn || t4 == Wn || t4 == Vn || t4 == Gn;
+    }
+    function it2() {
+      this.eb = [], this.size = this.A = this.fb = 0;
+    }
+    function at2() {
+      this.y = [], this.f = [], this.ea = [], this.F = [], this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;
+    }
+    function ot2() {
+      this.Rd = this.height = this.width = this.S = 0, this.f = {}, this.f.RGBA = new it2(), this.f.kb = new at2(), this.sd = null;
+    }
+    function st2() {
+      this.width = [0], this.height = [0], this.Pd = [0], this.Qd = [0], this.format = [0];
+    }
+    function ct2() {
+      this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;
+    }
+    function ut2(t4) {
+      return alert("todo:WebPSamplerProcessPlane"), t4.T;
+    }
+    function ht2(t4, e2) {
+      var r2 = t4.T, i3 = e2.ba.f.RGBA, a3 = i3.eb, o3 = i3.fb + t4.ka * i3.A, s3 = vi[e2.ba.S], c4 = t4.y, u4 = t4.O, h4 = t4.f, l4 = t4.N, f4 = t4.ea, d4 = t4.W, p4 = e2.cc, g4 = e2.dc, m4 = e2.Mc, v4 = e2.Nc, b6 = t4.ka, y4 = t4.ka + t4.T, w4 = t4.U, N4 = w4 + 1 >> 1;
+      for (0 == b6 ? s3(c4, u4, null, null, h4, l4, f4, d4, h4, l4, f4, d4, a3, o3, null, null, w4) : (s3(e2.ec, e2.fc, c4, u4, p4, g4, m4, v4, h4, l4, f4, d4, a3, o3 - i3.A, a3, o3, w4), ++r2); b6 + 2 < y4; b6 += 2) p4 = h4, g4 = l4, m4 = f4, v4 = d4, l4 += t4.Rc, d4 += t4.Rc, o3 += 2 * i3.A, s3(c4, (u4 += 2 * t4.fa) - t4.fa, c4, u4, p4, g4, m4, v4, h4, l4, f4, d4, a3, o3 - i3.A, a3, o3, w4);
+      return u4 += t4.fa, t4.j + y4 < t4.o ? (n2(e2.ec, e2.fc, c4, u4, w4), n2(e2.cc, e2.dc, h4, l4, N4), n2(e2.Mc, e2.Nc, f4, d4, N4), r2--) : 1 & y4 || s3(c4, u4, null, null, h4, l4, f4, d4, h4, l4, f4, d4, a3, o3 + i3.A, null, null, w4), r2;
+    }
+    function lt2(t4, r2, n3) {
+      var i3 = t4.F, a3 = [t4.J];
+      if (null != i3) {
+        var o3 = t4.U, s3 = r2.ba.S, c4 = s3 == Tn || s3 == Vn;
+        r2 = r2.ba.f.RGBA;
+        var u4 = [0], h4 = t4.ka;
+        u4[0] = t4.T, t4.Kb && (0 == h4 ? --u4[0] : (--h4, a3[0] -= t4.width), t4.j + t4.ka + t4.T == t4.o && (u4[0] = t4.o - t4.j - h4));
+        var l4 = r2.eb;
+        h4 = r2.fb + h4 * r2.A;
+        t4 = Sn(i3, a3[0], t4.width, o3, u4, l4, h4 + (c4 ? 0 : 3), r2.A), e(n3 == u4), t4 && nt2(s3) && An(l4, h4, c4, o3, u4, r2.A);
+      }
+      return 0;
+    }
+    function ft2(t4) {
+      var e2 = t4.ma, r2 = e2.ba.S, n3 = 11 > r2, i3 = r2 == qn || r2 == Rn || r2 == Tn || r2 == Un || 12 == r2 || nt2(r2);
+      if (e2.memory = null, e2.Ib = null, e2.Jb = null, e2.Nd = null, !Mr(e2.Oa, t4, i3 ? 11 : 12)) return 0;
+      if (i3 && nt2(r2) && br(), t4.da) alert("todo:use_scaling");
+      else {
+        if (n3) {
+          if (e2.Ib = ut2, t4.Kb) {
+            if (r2 = t4.U + 1 >> 1, e2.memory = a2(t4.U + 2 * r2), null == e2.memory) return 0;
+            e2.ec = e2.memory, e2.fc = 0, e2.cc = e2.ec, e2.dc = e2.fc + t4.U, e2.Mc = e2.cc, e2.Nc = e2.dc + r2, e2.Ib = ht2, br();
+          }
+        } else alert("todo:EmitYUV");
+        i3 && (e2.Jb = lt2, n3 && mr());
+      }
+      if (n3 && !Ci) {
+        for (t4 = 0; 256 > t4; ++t4) ji[t4] = 89858 * (t4 - 128) + _i >> Si, Mi[t4] = -22014 * (t4 - 128) + _i, Bi[t4] = -45773 * (t4 - 128), Oi[t4] = 113618 * (t4 - 128) + _i >> Si;
+        for (t4 = Pi; t4 < ki; ++t4) e2 = 76283 * (t4 - 16) + _i >> Si, Ei[t4 - Pi] = Vt2(e2, 255), qi[t4 - Pi] = Vt2(e2 + 8 >> 4, 15);
+        Ci = 1;
+      }
+      return 1;
+    }
+    function dt2(t4) {
+      var r2 = t4.ma, n3 = t4.U, i3 = t4.T;
+      return e(!(1 & t4.ka)), 0 >= n3 || 0 >= i3 ? 0 : (n3 = r2.Ib(t4, r2), null != r2.Jb && r2.Jb(t4, r2, n3), r2.Dc += n3, 1);
+    }
+    function pt2(t4) {
+      t4.ma.memory = null;
+    }
+    function gt2(t4, e2, r2, n3) {
+      return 47 != y3(t4, 8) ? 0 : (e2[0] = y3(t4, 14) + 1, r2[0] = y3(t4, 14) + 1, n3[0] = y3(t4, 1), 0 != y3(t4, 3) ? 0 : !t4.h);
+    }
+    function mt2(t4, e2) {
+      if (4 > t4) return t4 + 1;
+      var r2 = t4 - 2 >> 1;
+      return (2 + (1 & t4) << r2) + y3(e2, r2) + 1;
+    }
+    function vt2(t4, e2) {
+      return 120 < e2 ? e2 - 120 : 1 <= (r2 = ((r2 = $n[e2 - 1]) >> 4) * t4 + (8 - (15 & r2))) ? r2 : 1;
+      var r2;
+    }
+    function bt2(t4, e2, r2) {
+      var n3 = L3(r2), i3 = t4[e2 += 255 & n3].g - 8;
+      return 0 < i3 && (x2(r2, r2.u + 8), n3 = L3(r2), e2 += t4[e2].value, e2 += n3 & (1 << i3) - 1), x2(r2, r2.u + t4[e2].g), t4[e2].value;
+    }
+    function yt2(t4, r2, n3) {
+      return n3.g += t4.g, n3.value += t4.value << r2 >>> 0, e(8 >= n3.g), t4.g;
+    }
+    function wt2(t4, r2, n3) {
+      var i3 = t4.xc;
+      return e((r2 = 0 == i3 ? 0 : t4.vc[t4.md * (n3 >> i3) + (r2 >> i3)]) < t4.Wb), t4.Ya[r2];
+    }
+    function Nt2(t4, r2, i3, a3) {
+      var o3 = t4.ab, s3 = t4.c * r2, c4 = t4.C;
+      r2 = c4 + r2;
+      var u4 = i3, h4 = a3;
+      for (a3 = t4.Ta, i3 = t4.Ua; 0 < o3--; ) {
+        var l4 = t4.gc[o3], f4 = c4, d4 = r2, p4 = u4, g4 = h4, m4 = (h4 = a3, u4 = i3, l4.Ea);
+        switch (e(f4 < d4), e(d4 <= l4.nc), l4.hc) {
+          case 2:
+            Gr(p4, g4, (d4 - f4) * m4, h4, u4);
+            break;
+          case 0:
+            var v4 = f4, b6 = d4, y4 = h4, w4 = u4, N4 = (_3 = l4).Ea;
+            0 == v4 && (Wr(p4, g4, null, null, 1, y4, w4), V2(p4, g4 + 1, 0, 0, N4 - 1, y4, w4 + 1), g4 += N4, w4 += N4, ++v4);
+            for (var L4 = 1 << _3.b, A4 = L4 - 1, x3 = q2(N4, _3.b), S3 = _3.K, _3 = _3.w + (v4 >> _3.b) * x3; v4 < b6; ) {
+              var P3 = S3, k3 = _3, I3 = 1;
+              for (Vr(p4, g4, y4, w4 - N4, 1, y4, w4); I3 < N4; ) {
+                var F3 = (I3 & ~A4) + L4;
+                F3 > N4 && (F3 = N4), (0, Zr[P3[k3++] >> 8 & 15])(p4, g4 + +I3, y4, w4 + I3 - N4, F3 - I3, y4, w4 + I3), I3 = F3;
+              }
+              g4 += N4, w4 += N4, ++v4 & A4 || (_3 += x3);
+            }
+            d4 != l4.nc && n2(h4, u4 - m4, h4, u4 + (d4 - f4 - 1) * m4, m4);
+            break;
+          case 1:
+            for (m4 = p4, b6 = g4, N4 = (p4 = l4.Ea) - (w4 = p4 & ~(y4 = (g4 = 1 << l4.b) - 1)), v4 = q2(p4, l4.b), L4 = l4.K, l4 = l4.w + (f4 >> l4.b) * v4; f4 < d4; ) {
+              for (A4 = L4, x3 = l4, S3 = new T2(), _3 = b6 + w4, P3 = b6 + p4; b6 < _3; ) Y2(A4[x3++], S3), $r(S3, m4, b6, g4, h4, u4), b6 += g4, u4 += g4;
+              b6 < P3 && (Y2(A4[x3++], S3), $r(S3, m4, b6, N4, h4, u4), b6 += N4, u4 += N4), ++f4 & y4 || (l4 += v4);
+            }
+            break;
+          case 3:
+            if (p4 == h4 && g4 == u4 && 0 < l4.b) {
+              for (b6 = h4, p4 = m4 = u4 + (d4 - f4) * m4 - (w4 = (d4 - f4) * q2(l4.Ea, l4.b)), g4 = h4, y4 = u4, v4 = [], w4 = (N4 = w4) - 1; 0 <= w4; --w4) v4[w4] = g4[y4 + w4];
+              for (w4 = N4 - 1; 0 <= w4; --w4) b6[p4 + w4] = v4[w4];
+              Yr(l4, f4, d4, h4, m4, h4, u4);
+            } else Yr(l4, f4, d4, p4, g4, h4, u4);
+        }
+        u4 = a3, h4 = i3;
+      }
+      h4 != i3 && n2(a3, i3, u4, h4, s3);
+    }
+    function Lt2(t4, r2) {
+      var n3 = t4.V, i3 = t4.Ba + t4.c * t4.C, a3 = r2 - t4.C;
+      if (e(r2 <= t4.l.o), e(16 >= a3), 0 < a3) {
+        var o3 = t4.l, s3 = t4.Ta, c4 = t4.Ua, u4 = o3.width;
+        if (Nt2(t4, a3, n3, i3), a3 = c4 = [c4], e((n3 = t4.C) < (i3 = r2)), e(o3.v < o3.va), i3 > o3.o && (i3 = o3.o), n3 < o3.j) {
+          var h4 = o3.j - n3;
+          n3 = o3.j;
+          a3[0] += h4 * u4;
+        }
+        if (n3 >= i3 ? n3 = 0 : (a3[0] += 4 * o3.v, o3.ka = n3 - o3.j, o3.U = o3.va - o3.v, o3.T = i3 - n3, n3 = 1), n3) {
+          if (c4 = c4[0], 11 > (n3 = t4.ca).S) {
+            var l4 = n3.f.RGBA, f4 = (i3 = n3.S, a3 = o3.U, o3 = o3.T, h4 = l4.eb, l4.A), d4 = o3;
+            for (l4 = l4.fb + t4.Ma * l4.A; 0 < d4--; ) {
+              var p4 = s3, g4 = c4, m4 = a3, v4 = h4, b6 = l4;
+              switch (i3) {
+                case En:
+                  Qr(p4, g4, m4, v4, b6);
+                  break;
+                case qn:
+                  tn(p4, g4, m4, v4, b6);
+                  break;
+                case Hn:
+                  tn(p4, g4, m4, v4, b6), An(v4, b6, 0, m4, 1, 0);
+                  break;
+                case Dn:
+                  nn(p4, g4, m4, v4, b6);
+                  break;
+                case Rn:
+                  et3(p4, g4, m4, v4, b6, 1);
+                  break;
+                case Wn:
+                  et3(p4, g4, m4, v4, b6, 1), An(v4, b6, 0, m4, 1, 0);
+                  break;
+                case Tn:
+                  et3(p4, g4, m4, v4, b6, 0);
+                  break;
+                case Vn:
+                  et3(p4, g4, m4, v4, b6, 0), An(v4, b6, 1, m4, 1, 0);
+                  break;
+                case Un:
+                  en(p4, g4, m4, v4, b6);
+                  break;
+                case Gn:
+                  en(p4, g4, m4, v4, b6), xn(v4, b6, m4, 1, 0);
+                  break;
+                case zn:
+                  rn(p4, g4, m4, v4, b6);
+                  break;
+                default:
+                  e(0);
+              }
+              c4 += u4, l4 += f4;
+            }
+            t4.Ma += o3;
+          } else alert("todo:EmitRescaledRowsYUVA");
+          e(t4.Ma <= n3.height);
+        }
+      }
+      t4.C = r2, e(t4.C <= t4.i);
+    }
+    function At2(t4) {
+      var e2;
+      if (0 < t4.ua) return 0;
+      for (e2 = 0; e2 < t4.Wb; ++e2) {
+        var r2 = t4.Ya[e2].G, n3 = t4.Ya[e2].H;
+        if (0 < r2[1][n3[1] + 0].g || 0 < r2[2][n3[2] + 0].g || 0 < r2[3][n3[3] + 0].g) return 0;
+      }
+      return 1;
+    }
+    function xt2(t4, r2, n3, i3, a3, o3) {
+      if (0 != t4.Z) {
+        var s3 = t4.qd, c4 = t4.rd;
+        for (e(null != mi[t4.Z]); r2 < n3; ++r2) mi[t4.Z](s3, c4, i3, a3, i3, a3, o3), s3 = i3, c4 = a3, a3 += o3;
+        t4.qd = s3, t4.rd = c4;
+      }
+    }
+    function St2(t4, r2) {
+      var n3 = t4.l.ma, i3 = 0 == n3.Z || 1 == n3.Z ? t4.l.j : t4.C;
+      i3 = t4.C < i3 ? i3 : t4.C;
+      if (e(r2 <= t4.l.o), r2 > i3) {
+        var a3 = t4.l.width, o3 = n3.ca, s3 = n3.tb + a3 * i3, c4 = t4.V, u4 = t4.Ba + t4.c * i3, h4 = t4.gc;
+        e(1 == t4.ab), e(3 == h4[0].hc), Xr(h4[0], i3, r2, c4, u4, o3, s3), xt2(n3, i3, r2, o3, s3, a3);
+      }
+      t4.C = t4.Ma = r2;
+    }
+    function _t2(t4, r2, n3, i3, a3, o3, s3) {
+      var c4 = t4.$ / i3, u4 = t4.$ % i3, h4 = t4.m, l4 = t4.s, f4 = n3 + t4.$, d4 = f4;
+      a3 = n3 + i3 * a3;
+      var p4 = n3 + i3 * o3, g4 = 280 + l4.ua, m4 = t4.Pb ? c4 : 16777216, v4 = 0 < l4.ua ? l4.Wa : null, b6 = l4.wc, y4 = f4 < p4 ? wt2(l4, u4, c4) : null;
+      e(t4.C < o3), e(p4 <= a3);
+      var w4 = false;
+      t: for (; ; ) {
+        for (; w4 || f4 < p4; ) {
+          var N4 = 0;
+          if (c4 >= m4) {
+            var _3 = f4 - n3;
+            e((m4 = t4).Pb), m4.wd = m4.m, m4.xd = _3, 0 < m4.s.ua && B2(m4.s.Wa, m4.s.vb), m4 = c4 + ti;
+          }
+          if (u4 & b6 || (y4 = wt2(l4, u4, c4)), e(null != y4), y4.Qb && (r2[f4] = y4.qb, w4 = true), !w4) if (S2(h4), y4.jc) {
+            N4 = h4, _3 = r2;
+            var P3 = f4, k3 = y4.pd[L3(N4) & Dr - 1];
+            e(y4.jc), 256 > k3.g ? (x2(N4, N4.u + k3.g), _3[P3] = k3.value, N4 = 0) : (x2(N4, N4.u + k3.g - 256), e(256 <= k3.value), N4 = k3.value), 0 == N4 && (w4 = true);
+          } else N4 = bt2(y4.G[0], y4.H[0], h4);
+          if (h4.h) break;
+          if (w4 || 256 > N4) {
+            if (!w4) if (y4.nd) r2[f4] = (y4.qb | N4 << 8) >>> 0;
+            else {
+              if (S2(h4), w4 = bt2(y4.G[1], y4.H[1], h4), S2(h4), _3 = bt2(y4.G[2], y4.H[2], h4), P3 = bt2(y4.G[3], y4.H[3], h4), h4.h) break;
+              r2[f4] = (P3 << 24 | w4 << 16 | N4 << 8 | _3) >>> 0;
+            }
+            if (w4 = false, ++f4, ++u4 >= i3 && (u4 = 0, ++c4, null != s3 && c4 <= o3 && !(c4 % 16) && s3(t4, c4), null != v4)) for (; d4 < f4; ) N4 = r2[d4++], v4.X[(506832829 * N4 & 4294967295) >>> v4.Mb] = N4;
+          } else if (280 > N4) {
+            if (N4 = mt2(N4 - 256, h4), _3 = bt2(y4.G[4], y4.H[4], h4), S2(h4), _3 = vt2(i3, _3 = mt2(_3, h4)), h4.h) break;
+            if (f4 - n3 < _3 || a3 - f4 < N4) break t;
+            for (P3 = 0; P3 < N4; ++P3) r2[f4 + P3] = r2[f4 + P3 - _3];
+            for (f4 += N4, u4 += N4; u4 >= i3; ) u4 -= i3, ++c4, null != s3 && c4 <= o3 && !(c4 % 16) && s3(t4, c4);
+            if (e(f4 <= a3), u4 & b6 && (y4 = wt2(l4, u4, c4)), null != v4) for (; d4 < f4; ) N4 = r2[d4++], v4.X[(506832829 * N4 & 4294967295) >>> v4.Mb] = N4;
+          } else {
+            if (!(N4 < g4)) break t;
+            for (w4 = N4 - 280, e(null != v4); d4 < f4; ) N4 = r2[d4++], v4.X[(506832829 * N4 & 4294967295) >>> v4.Mb] = N4;
+            N4 = f4, e(!(w4 >>> (_3 = v4).Xa)), r2[N4] = _3.X[w4], w4 = true;
+          }
+          w4 || e(h4.h == A3(h4));
+        }
+        if (t4.Pb && h4.h && f4 < a3) e(t4.m.h), t4.a = 5, t4.m = t4.wd, t4.$ = t4.xd, 0 < t4.s.ua && B2(t4.s.vb, t4.s.Wa);
+        else {
+          if (h4.h) break t;
+          null != s3 && s3(t4, c4 > o3 ? o3 : c4), t4.a = 0, t4.$ = f4 - n3;
+        }
+        return 1;
+      }
+      return t4.a = 3, 0;
+    }
+    function Pt2(t4) {
+      e(null != t4), t4.vc = null, t4.yc = null, t4.Ya = null;
+      var r2 = t4.Wa;
+      null != r2 && (r2.X = null), t4.vb = null, e(null != t4);
+    }
+    function kt2() {
+      var e2 = new or();
+      return null == e2 ? null : (e2.a = 0, e2.xb = gi, rt2("Predictor", "VP8LPredictors"), rt2("Predictor", "VP8LPredictors_C"), rt2("PredictorAdd", "VP8LPredictorsAdd"), rt2("PredictorAdd", "VP8LPredictorsAdd_C"), Gr = G2, $r = J2, Qr = K2, tn = Z2, en = $2, rn = Q2, nn = tt2, t3.VP8LMapColor32b = Jr, t3.VP8LMapColor8b = Kr, e2);
+    }
+    function It2(t4, r2, n3, s3, c4) {
+      var u4 = 1, f4 = [t4], p4 = [r2], g4 = s3.m, m4 = s3.s, v4 = null, b6 = 0;
+      t: for (; ; ) {
+        if (n3) for (; u4 && y3(g4, 1); ) {
+          var w4 = f4, N4 = p4, A4 = s3, _3 = 1, P3 = A4.m, k3 = A4.gc[A4.ab], I3 = y3(P3, 2);
+          if (A4.Oc & 1 << I3) u4 = 0;
+          else {
+            switch (A4.Oc |= 1 << I3, k3.hc = I3, k3.Ea = w4[0], k3.nc = N4[0], k3.K = [null], ++A4.ab, e(4 >= A4.ab), I3) {
+              case 0:
+              case 1:
+                k3.b = y3(P3, 3) + 2, _3 = It2(q2(k3.Ea, k3.b), q2(k3.nc, k3.b), 0, A4, k3.K), k3.K = k3.K[0];
+                break;
+              case 3:
+                var F3, C3 = y3(P3, 8) + 1, j3 = 16 < C3 ? 0 : 4 < C3 ? 1 : 2 < C3 ? 2 : 3;
+                if (w4[0] = q2(k3.Ea, j3), k3.b = j3, F3 = _3 = It2(C3, 1, 0, A4, k3.K)) {
+                  var B3, M3 = C3, E3 = k3, R3 = 1 << (8 >> E3.b), T3 = a2(R3);
+                  if (null == T3) F3 = 0;
+                  else {
+                    var U3 = E3.K[0], z3 = E3.w;
+                    for (T3[0] = E3.K[0][0], B3 = 1; B3 < 1 * M3; ++B3) T3[B3] = D2(U3[z3 + B3], T3[B3 - 1]);
+                    for (; B3 < 4 * R3; ++B3) T3[B3] = 0;
+                    E3.K[0] = null, E3.K[0] = T3, F3 = 1;
+                  }
+                }
+                _3 = F3;
+                break;
+              case 2:
+                break;
+              default:
+                e(0);
+            }
+            u4 = _3;
+          }
+        }
+        if (f4 = f4[0], p4 = p4[0], u4 && y3(g4, 1) && !(u4 = 1 <= (b6 = y3(g4, 4)) && 11 >= b6)) {
+          s3.a = 3;
+          break t;
+        }
+        var H3;
+        if (H3 = u4) e: {
+          var W3, V3, G3, Y3 = s3, J3 = f4, X3 = p4, K3 = b6, Z3 = n3, $3 = Y3.m, Q3 = Y3.s, tt3 = [null], et4 = 1, rt3 = 0, nt3 = Qn[K3];
+          r: for (; ; ) {
+            if (Z3 && y3($3, 1)) {
+              var it3 = y3($3, 3) + 2, at3 = q2(J3, it3), ot3 = q2(X3, it3), st3 = at3 * ot3;
+              if (!It2(at3, ot3, 0, Y3, tt3)) break r;
+              for (tt3 = tt3[0], Q3.xc = it3, W3 = 0; W3 < st3; ++W3) {
+                var ct3 = tt3[W3] >> 8 & 65535;
+                tt3[W3] = ct3, ct3 >= et4 && (et4 = ct3 + 1);
+              }
+            }
+            if ($3.h) break r;
+            for (V3 = 0; 5 > V3; ++V3) {
+              var ut3 = Xn[V3];
+              !V3 && 0 < K3 && (ut3 += 1 << K3), rt3 < ut3 && (rt3 = ut3);
+            }
+            var ht3 = o2(et4 * nt3, l3), lt3 = et4, ft3 = o2(lt3, d3);
+            if (null == ft3) var dt3 = null;
+            else e(65536 >= lt3), dt3 = ft3;
+            var pt3 = a2(rt3);
+            if (null == dt3 || null == pt3 || null == ht3) {
+              Y3.a = 1;
+              break r;
+            }
+            var gt3 = ht3;
+            for (W3 = G3 = 0; W3 < et4; ++W3) {
+              var mt3 = dt3[W3], vt3 = mt3.G, bt3 = mt3.H, wt3 = 0, Nt3 = 1, Lt3 = 0;
+              for (V3 = 0; 5 > V3; ++V3) {
+                ut3 = Xn[V3], vt3[V3] = gt3, bt3[V3] = G3, !V3 && 0 < K3 && (ut3 += 1 << K3);
+                n: {
+                  var At3, xt3 = ut3, St3 = Y3, kt3 = pt3, Ft3 = gt3, Ct3 = G3, jt3 = 0, Ot3 = St3.m, Bt3 = y3(Ot3, 1);
+                  if (i2(kt3, 0, 0, xt3), Bt3) {
+                    var Mt3 = y3(Ot3, 1) + 1, Et3 = y3(Ot3, 1), qt3 = y3(Ot3, 0 == Et3 ? 1 : 8);
+                    kt3[qt3] = 1, 2 == Mt3 && (kt3[qt3 = y3(Ot3, 8)] = 1);
+                    var Dt3 = 1;
+                  } else {
+                    var Rt3 = a2(19), Tt3 = y3(Ot3, 4) + 4;
+                    if (19 < Tt3) {
+                      St3.a = 3;
+                      var Ut3 = 0;
+                      break n;
+                    }
+                    for (At3 = 0; At3 < Tt3; ++At3) Rt3[Zn[At3]] = y3(Ot3, 3);
+                    var zt3 = void 0, Ht3 = void 0, Wt3 = St3, Vt3 = Rt3, Gt3 = xt3, Yt3 = kt3, Jt3 = 0, Xt3 = Wt3.m, Kt3 = 8, Zt3 = o2(128, l3);
+                    i: for (; h3(Zt3, 0, 7, Vt3, 19); ) {
+                      if (y3(Xt3, 1)) {
+                        var $t3 = 2 + 2 * y3(Xt3, 3);
+                        if ((zt3 = 2 + y3(Xt3, $t3)) > Gt3) break i;
+                      } else zt3 = Gt3;
+                      for (Ht3 = 0; Ht3 < Gt3 && zt3--; ) {
+                        S2(Xt3);
+                        var Qt3 = Zt3[0 + (127 & L3(Xt3))];
+                        x2(Xt3, Xt3.u + Qt3.g);
+                        var te4 = Qt3.value;
+                        if (16 > te4) Yt3[Ht3++] = te4, 0 != te4 && (Kt3 = te4);
+                        else {
+                          var ee3 = 16 == te4, re3 = te4 - 16, ne3 = Jn[re3], ie3 = y3(Xt3, Yn[re3]) + ne3;
+                          if (Ht3 + ie3 > Gt3) break i;
+                          for (var ae3 = ee3 ? Kt3 : 0; 0 < ie3--; ) Yt3[Ht3++] = ae3;
+                        }
+                      }
+                      Jt3 = 1;
+                      break i;
+                    }
+                    Jt3 || (Wt3.a = 3), Dt3 = Jt3;
+                  }
+                  (Dt3 = Dt3 && !Ot3.h) && (jt3 = h3(Ft3, Ct3, 8, kt3, xt3)), Dt3 && 0 != jt3 ? Ut3 = jt3 : (St3.a = 3, Ut3 = 0);
+                }
+                if (0 == Ut3) break r;
+                if (Nt3 && 1 == Kn[V3] && (Nt3 = 0 == gt3[G3].g), wt3 += gt3[G3].g, G3 += Ut3, 3 >= V3) {
+                  var oe3, se3 = pt3[0];
+                  for (oe3 = 1; oe3 < ut3; ++oe3) pt3[oe3] > se3 && (se3 = pt3[oe3]);
+                  Lt3 += se3;
+                }
+              }
+              if (mt3.nd = Nt3, mt3.Qb = 0, Nt3 && (mt3.qb = (vt3[3][bt3[3] + 0].value << 24 | vt3[1][bt3[1] + 0].value << 16 | vt3[2][bt3[2] + 0].value) >>> 0, 0 == wt3 && 256 > vt3[0][bt3[0] + 0].value && (mt3.Qb = 1, mt3.qb += vt3[0][bt3[0] + 0].value << 8)), mt3.jc = !mt3.Qb && 6 > Lt3, mt3.jc) {
+                var ce3, ue3 = mt3;
+                for (ce3 = 0; ce3 < Dr; ++ce3) {
+                  var he3 = ce3, le3 = ue3.pd[he3], fe3 = ue3.G[0][ue3.H[0] + he3];
+                  256 <= fe3.value ? (le3.g = fe3.g + 256, le3.value = fe3.value) : (le3.g = 0, le3.value = 0, he3 >>= yt2(fe3, 8, le3), he3 >>= yt2(ue3.G[1][ue3.H[1] + he3], 16, le3), he3 >>= yt2(ue3.G[2][ue3.H[2] + he3], 0, le3), yt2(ue3.G[3][ue3.H[3] + he3], 24, le3));
+                }
+              }
+            }
+            Q3.vc = tt3, Q3.Wb = et4, Q3.Ya = dt3, Q3.yc = ht3, H3 = 1;
+            break e;
+          }
+          H3 = 0;
+        }
+        if (!(u4 = H3)) {
+          s3.a = 3;
+          break t;
+        }
+        if (0 < b6) {
+          if (m4.ua = 1 << b6, !O2(m4.Wa, b6)) {
+            s3.a = 1, u4 = 0;
+            break t;
+          }
+        } else m4.ua = 0;
+        var de3 = s3, pe3 = f4, ge3 = p4, me3 = de3.s, ve3 = me3.xc;
+        if (de3.c = pe3, de3.i = ge3, me3.md = q2(pe3, ve3), me3.wc = 0 == ve3 ? -1 : (1 << ve3) - 1, n3) {
+          s3.xb = pi;
+          break t;
+        }
+        if (null == (v4 = a2(f4 * p4))) {
+          s3.a = 1, u4 = 0;
+          break t;
+        }
+        u4 = (u4 = _t2(s3, v4, 0, f4, p4, p4, null)) && !g4.h;
+        break t;
+      }
+      return u4 ? (null != c4 ? c4[0] = v4 : (e(null == v4), e(n3)), s3.$ = 0, n3 || Pt2(m4)) : Pt2(m4), u4;
+    }
+    function Ft2(t4, r2) {
+      var n3 = t4.c * t4.i, i3 = n3 + r2 + 16 * r2;
+      return e(t4.c <= r2), t4.V = a2(i3), null == t4.V ? (t4.Ta = null, t4.Ua = 0, t4.a = 1, 0) : (t4.Ta = t4.V, t4.Ua = t4.Ba + n3 + r2, 1);
+    }
+    function Ct2(t4, r2) {
+      var n3 = t4.C, i3 = r2 - n3, a3 = t4.V, o3 = t4.Ba + t4.c * n3;
+      for (e(r2 <= t4.l.o); 0 < i3; ) {
+        var s3 = 16 < i3 ? 16 : i3, c4 = t4.l.ma, u4 = t4.l.width, h4 = u4 * s3, l4 = c4.ca, f4 = c4.tb + u4 * n3, d4 = t4.Ta, p4 = t4.Ua;
+        Nt2(t4, s3, a3, o3), _n(d4, p4, l4, f4, h4), xt2(c4, n3, n3 + s3, l4, f4, u4), i3 -= s3, a3 += s3 * t4.c, n3 += s3;
+      }
+      e(n3 == r2), t4.C = t4.Ma = r2;
+    }
+    function jt2() {
+      this.ub = this.yd = this.td = this.Rb = 0;
+    }
+    function Ot2() {
+      this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;
+    }
+    function Bt2() {
+      this.Fb = this.Bb = this.Cb = 0, this.Zb = a2(4), this.Lb = a2(4);
+    }
+    function Mt2() {
+      this.Yb = function() {
+        var t4 = [];
+        return function t5(e2, r2, n3) {
+          for (var i3 = n3[r2], a3 = 0; a3 < i3 && (e2.push(n3.length > r2 + 1 ? [] : 0), !(n3.length < r2 + 1)); a3++) t5(e2[a3], r2 + 1, n3);
+        }(t4, 0, [3, 11]), t4;
+      }();
+    }
+    function Et2() {
+      this.jb = a2(3), this.Wc = s2([4, 8], Mt2), this.Xc = s2([4, 17], Mt2);
+    }
+    function qt2() {
+      this.Pc = this.wb = this.Tb = this.zd = 0, this.vd = new a2(4), this.od = new a2(4);
+    }
+    function Dt2() {
+      this.ld = this.La = this.dd = this.tc = 0;
+    }
+    function Rt2() {
+      this.Na = this.la = 0;
+    }
+    function Tt2() {
+      this.Sc = [0, 0], this.Eb = [0, 0], this.Qc = [0, 0], this.ia = this.lc = 0;
+    }
+    function Ut2() {
+      this.ad = a2(384), this.Za = 0, this.Ob = a2(16), this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;
+    }
+    function zt2() {
+      this.uc = this.M = this.Nb = 0, this.wa = Array(new Dt2()), this.Y = 0, this.ya = Array(new Ut2()), this.aa = 0, this.l = new Gt2();
+    }
+    function Ht2() {
+      this.y = a2(16), this.f = a2(8), this.ea = a2(8);
+    }
+    function Wt2() {
+      this.cb = this.a = 0, this.sc = "", this.m = new w3(), this.Od = new jt2(), this.Kc = new Ot2(), this.ed = new qt2(), this.Qa = new Bt2(), this.Ic = this.$c = this.Aa = 0, this.D = new zt2(), this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0, this.Jc = o2(8, w3), this.ia = 0, this.pb = o2(4, Tt2), this.Pa = new Et2(), this.Bd = this.kc = 0, this.Ac = [], this.Bc = 0, this.zc = [0, 0, 0, 0], this.Gd = Array(new Ht2()), this.Hd = 0, this.rb = Array(new Rt2()), this.sb = 0, this.wa = Array(new Dt2()), this.Y = 0, this.oc = [], this.pc = 0, this.sa = [], this.ta = 0, this.qa = [], this.ra = 0, this.Ha = [], this.B = this.R = this.Ia = 0, this.Ec = [], this.M = this.ja = this.Vb = this.Fc = 0, this.ya = Array(new Ut2()), this.L = this.aa = 0, this.gd = s2([4, 2], Dt2), this.ga = null, this.Fa = [], this.Cc = this.qc = this.P = 0, this.Gb = [], this.Uc = 0, this.mb = [], this.nb = 0, this.rc = [], this.Ga = this.Vc = 0;
+    }
+    function Vt2(t4, e2) {
+      return 0 > t4 ? 0 : t4 > e2 ? e2 : t4;
+    }
+    function Gt2() {
+      this.T = this.U = this.ka = this.height = this.width = 0, this.y = [], this.f = [], this.ea = [], this.Rc = this.fa = this.W = this.N = this.O = 0, this.ma = "void", this.put = "VP8IoPutHook", this.ac = "VP8IoSetupHook", this.bc = "VP8IoTeardownHook", this.ha = this.Kb = 0, this.data = [], this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0, this.F = [], this.J = 0;
+    }
+    function Yt2() {
+      var t4 = new Wt2();
+      return null != t4 && (t4.a = 0, t4.sc = "OK", t4.cb = 0, t4.Xb = 0, ni || (ni = Zt2)), t4;
+    }
+    function Jt2(t4, e2, r2) {
+      return 0 == t4.a && (t4.a = e2, t4.sc = r2, t4.cb = 0), 0;
+    }
+    function Xt2(t4, e2, r2) {
+      return 3 <= r2 && 157 == t4[e2 + 0] && 1 == t4[e2 + 1] && 42 == t4[e2 + 2];
+    }
+    function Kt2(t4, r2) {
+      if (null == t4) return 0;
+      if (t4.a = 0, t4.sc = "OK", null == r2) return Jt2(t4, 2, "null VP8Io passed to VP8GetHeaders()");
+      var n3 = r2.data, a3 = r2.w, o3 = r2.ha;
+      if (4 > o3) return Jt2(t4, 7, "Truncated header.");
+      var s3 = n3[a3 + 0] | n3[a3 + 1] << 8 | n3[a3 + 2] << 16, c4 = t4.Od;
+      if (c4.Rb = !(1 & s3), c4.td = s3 >> 1 & 7, c4.yd = s3 >> 4 & 1, c4.ub = s3 >> 5, 3 < c4.td) return Jt2(t4, 3, "Incorrect keyframe parameters.");
+      if (!c4.yd) return Jt2(t4, 4, "Frame not displayable.");
+      a3 += 3, o3 -= 3;
+      var u4 = t4.Kc;
+      if (c4.Rb) {
+        if (7 > o3) return Jt2(t4, 7, "cannot parse picture header");
+        if (!Xt2(n3, a3, o3)) return Jt2(t4, 3, "Bad code word");
+        u4.c = 16383 & (n3[a3 + 4] << 8 | n3[a3 + 3]), u4.Td = n3[a3 + 4] >> 6, u4.i = 16383 & (n3[a3 + 6] << 8 | n3[a3 + 5]), u4.Ud = n3[a3 + 6] >> 6, a3 += 7, o3 -= 7, t4.za = u4.c + 15 >> 4, t4.Ub = u4.i + 15 >> 4, r2.width = u4.c, r2.height = u4.i, r2.Da = 0, r2.j = 0, r2.v = 0, r2.va = r2.width, r2.o = r2.height, r2.da = 0, r2.ib = r2.width, r2.hb = r2.height, r2.U = r2.width, r2.T = r2.height, i2((s3 = t4.Pa).jb, 0, 255, s3.jb.length), e(null != (s3 = t4.Qa)), s3.Cb = 0, s3.Bb = 0, s3.Fb = 1, i2(s3.Zb, 0, 0, s3.Zb.length), i2(s3.Lb, 0, 0, s3.Lb);
+      }
+      if (c4.ub > o3) return Jt2(t4, 7, "bad partition length");
+      p3(s3 = t4.m, n3, a3, c4.ub), a3 += c4.ub, o3 -= c4.ub, c4.Rb && (u4.Ld = P2(s3), u4.Kd = P2(s3)), u4 = t4.Qa;
+      var h4, l4 = t4.Pa;
+      if (e(null != s3), e(null != u4), u4.Cb = P2(s3), u4.Cb) {
+        if (u4.Bb = P2(s3), P2(s3)) {
+          for (u4.Fb = P2(s3), h4 = 0; 4 > h4; ++h4) u4.Zb[h4] = P2(s3) ? m3(s3, 7) : 0;
+          for (h4 = 0; 4 > h4; ++h4) u4.Lb[h4] = P2(s3) ? m3(s3, 6) : 0;
+        }
+        if (u4.Bb) for (h4 = 0; 3 > h4; ++h4) l4.jb[h4] = P2(s3) ? g3(s3, 8) : 255;
+      } else u4.Bb = 0;
+      if (s3.Ka) return Jt2(t4, 3, "cannot parse segment header");
+      if ((u4 = t4.ed).zd = P2(s3), u4.Tb = g3(s3, 6), u4.wb = g3(s3, 3), u4.Pc = P2(s3), u4.Pc && P2(s3)) {
+        for (l4 = 0; 4 > l4; ++l4) P2(s3) && (u4.vd[l4] = m3(s3, 6));
+        for (l4 = 0; 4 > l4; ++l4) P2(s3) && (u4.od[l4] = m3(s3, 6));
+      }
+      if (t4.L = 0 == u4.Tb ? 0 : u4.zd ? 1 : 2, s3.Ka) return Jt2(t4, 3, "cannot parse filter header");
+      var f4 = o3;
+      if (o3 = h4 = a3, a3 = h4 + f4, u4 = f4, t4.Xb = (1 << g3(t4.m, 2)) - 1, f4 < 3 * (l4 = t4.Xb)) n3 = 7;
+      else {
+        for (h4 += 3 * l4, u4 -= 3 * l4, f4 = 0; f4 < l4; ++f4) {
+          var d4 = n3[o3 + 0] | n3[o3 + 1] << 8 | n3[o3 + 2] << 16;
+          d4 > u4 && (d4 = u4), p3(t4.Jc[+f4], n3, h4, d4), h4 += d4, u4 -= d4, o3 += 3;
+        }
+        p3(t4.Jc[+l4], n3, h4, u4), n3 = h4 < a3 ? 0 : 5;
+      }
+      if (0 != n3) return Jt2(t4, n3, "cannot parse partitions");
+      for (n3 = g3(h4 = t4.m, 7), o3 = P2(h4) ? m3(h4, 4) : 0, a3 = P2(h4) ? m3(h4, 4) : 0, u4 = P2(h4) ? m3(h4, 4) : 0, l4 = P2(h4) ? m3(h4, 4) : 0, h4 = P2(h4) ? m3(h4, 4) : 0, f4 = t4.Qa, d4 = 0; 4 > d4; ++d4) {
+        if (f4.Cb) {
+          var v4 = f4.Zb[d4];
+          f4.Fb || (v4 += n3);
+        } else {
+          if (0 < d4) {
+            t4.pb[d4] = t4.pb[0];
+            continue;
+          }
+          v4 = n3;
+        }
+        var b6 = t4.pb[d4];
+        b6.Sc[0] = ei[Vt2(v4 + o3, 127)], b6.Sc[1] = ri[Vt2(v4 + 0, 127)], b6.Eb[0] = 2 * ei[Vt2(v4 + a3, 127)], b6.Eb[1] = 101581 * ri[Vt2(v4 + u4, 127)] >> 16, 8 > b6.Eb[1] && (b6.Eb[1] = 8), b6.Qc[0] = ei[Vt2(v4 + l4, 117)], b6.Qc[1] = ri[Vt2(v4 + h4, 127)], b6.lc = v4 + h4;
+      }
+      if (!c4.Rb) return Jt2(t4, 4, "Not a key frame.");
+      for (P2(s3), c4 = t4.Pa, n3 = 0; 4 > n3; ++n3) {
+        for (o3 = 0; 8 > o3; ++o3) for (a3 = 0; 3 > a3; ++a3) for (u4 = 0; 11 > u4; ++u4) l4 = k2(s3, ui[n3][o3][a3][u4]) ? g3(s3, 8) : si[n3][o3][a3][u4], c4.Wc[n3][o3].Yb[a3][u4] = l4;
+        for (o3 = 0; 17 > o3; ++o3) c4.Xc[n3][o3] = c4.Wc[n3][hi[o3]];
+      }
+      return t4.kc = P2(s3), t4.kc && (t4.Bd = g3(s3, 8)), t4.cb = 1;
+    }
+    function Zt2(t4, e2, r2, n3, i3, a3, o3) {
+      var s3 = e2[i3].Yb[r2];
+      for (r2 = 0; 16 > i3; ++i3) {
+        if (!k2(t4, s3[r2 + 0])) return i3;
+        for (; !k2(t4, s3[r2 + 1]); ) if (s3 = e2[++i3].Yb[0], r2 = 0, 16 == i3) return 16;
+        var c4 = e2[i3 + 1].Yb;
+        if (k2(t4, s3[r2 + 2])) {
+          var u4 = t4, h4 = 0;
+          if (k2(u4, (f4 = s3)[(l4 = r2) + 3])) if (k2(u4, f4[l4 + 6])) {
+            for (s3 = 0, l4 = 2 * (h4 = k2(u4, f4[l4 + 8])) + (f4 = k2(u4, f4[l4 + 9 + h4])), h4 = 0, f4 = ii[l4]; f4[s3]; ++s3) h4 += h4 + k2(u4, f4[s3]);
+            h4 += 3 + (8 << l4);
+          } else k2(u4, f4[l4 + 7]) ? (h4 = 7 + 2 * k2(u4, 165), h4 += k2(u4, 145)) : h4 = 5 + k2(u4, 159);
+          else h4 = k2(u4, f4[l4 + 4]) ? 3 + k2(u4, f4[l4 + 5]) : 2;
+          s3 = c4[2];
+        } else h4 = 1, s3 = c4[1];
+        c4 = o3 + ai[i3], 0 > (u4 = t4).b && _2(u4);
+        var l4, f4 = u4.b, d4 = (l4 = u4.Ca >> 1) - (u4.I >> f4) >> 31;
+        --u4.b, u4.Ca += d4, u4.Ca |= 1, u4.I -= (l4 + 1 & d4) << f4, a3[c4] = ((h4 ^ d4) - d4) * n3[(0 < i3) + 0];
+      }
+      return 16;
+    }
+    function $t2(t4) {
+      var e2 = t4.rb[t4.sb - 1];
+      e2.la = 0, e2.Na = 0, i2(t4.zc, 0, 0, t4.zc.length), t4.ja = 0;
+    }
+    function Qt2(t4, r2) {
+      if (null == t4) return 0;
+      if (null == r2) return Jt2(t4, 2, "NULL VP8Io parameter in VP8Decode().");
+      if (!t4.cb && !Kt2(t4, r2)) return 0;
+      if (e(t4.cb), null == r2.ac || r2.ac(r2)) {
+        r2.ob && (t4.L = 0);
+        var s3 = Ri[t4.L];
+        if (2 == t4.L ? (t4.yb = 0, t4.zb = 0) : (t4.yb = r2.v - s3 >> 4, t4.zb = r2.j - s3 >> 4, 0 > t4.yb && (t4.yb = 0), 0 > t4.zb && (t4.zb = 0)), t4.Va = r2.o + 15 + s3 >> 4, t4.Hb = r2.va + 15 + s3 >> 4, t4.Hb > t4.za && (t4.Hb = t4.za), t4.Va > t4.Ub && (t4.Va = t4.Ub), 0 < t4.L) {
+          var c4 = t4.ed;
+          for (s3 = 0; 4 > s3; ++s3) {
+            var u4;
+            if (t4.Qa.Cb) {
+              var h4 = t4.Qa.Lb[s3];
+              t4.Qa.Fb || (h4 += c4.Tb);
+            } else h4 = c4.Tb;
+            for (u4 = 0; 1 >= u4; ++u4) {
+              var l4 = t4.gd[s3][u4], f4 = h4;
+              if (c4.Pc && (f4 += c4.vd[0], u4 && (f4 += c4.od[0])), 0 < (f4 = 0 > f4 ? 0 : 63 < f4 ? 63 : f4)) {
+                var d4 = f4;
+                0 < c4.wb && ((d4 = 4 < c4.wb ? d4 >> 2 : d4 >> 1) > 9 - c4.wb && (d4 = 9 - c4.wb)), 1 > d4 && (d4 = 1), l4.dd = d4, l4.tc = 2 * f4 + d4, l4.ld = 40 <= f4 ? 2 : 15 <= f4 ? 1 : 0;
+              } else l4.tc = 0;
+              l4.La = u4;
+            }
+          }
+        }
+        s3 = 0;
+      } else Jt2(t4, 6, "Frame setup failed"), s3 = t4.a;
+      if (s3 = 0 == s3) {
+        if (s3) {
+          t4.$c = 0, 0 < t4.Aa || (t4.Ic = Ui);
+          t: {
+            s3 = t4.Ic;
+            c4 = 4 * (d4 = t4.za);
+            var p4 = 32 * d4, g4 = d4 + 1, m4 = 0 < t4.L ? d4 * (0 < t4.Aa ? 2 : 1) : 0, v4 = (2 == t4.Aa ? 2 : 1) * d4;
+            if ((l4 = c4 + 832 + (u4 = 3 * (16 * s3 + Ri[t4.L]) / 2 * p4) + (h4 = null != t4.Fa && 0 < t4.Fa.length ? t4.Kc.c * t4.Kc.i : 0)) != l4) s3 = 0;
+            else {
+              if (l4 > t4.Vb) {
+                if (t4.Vb = 0, t4.Ec = a2(l4), t4.Fc = 0, null == t4.Ec) {
+                  s3 = Jt2(t4, 1, "no memory during frame initialization.");
+                  break t;
+                }
+                t4.Vb = l4;
+              }
+              l4 = t4.Ec, f4 = t4.Fc, t4.Ac = l4, t4.Bc = f4, f4 += c4, t4.Gd = o2(p4, Ht2), t4.Hd = 0, t4.rb = o2(g4 + 1, Rt2), t4.sb = 1, t4.wa = m4 ? o2(m4, Dt2) : null, t4.Y = 0, t4.D.Nb = 0, t4.D.wa = t4.wa, t4.D.Y = t4.Y, 0 < t4.Aa && (t4.D.Y += d4), e(true), t4.oc = l4, t4.pc = f4, f4 += 832, t4.ya = o2(v4, Ut2), t4.aa = 0, t4.D.ya = t4.ya, t4.D.aa = t4.aa, 2 == t4.Aa && (t4.D.aa += d4), t4.R = 16 * d4, t4.B = 8 * d4, d4 = (p4 = Ri[t4.L]) * t4.R, p4 = p4 / 2 * t4.B, t4.sa = l4, t4.ta = f4 + d4, t4.qa = t4.sa, t4.ra = t4.ta + 16 * s3 * t4.R + p4, t4.Ha = t4.qa, t4.Ia = t4.ra + 8 * s3 * t4.B + p4, t4.$c = 0, f4 += u4, t4.mb = h4 ? l4 : null, t4.nb = h4 ? f4 : null, e(f4 + h4 <= t4.Fc + t4.Vb), $t2(t4), i2(t4.Ac, t4.Bc, 0, c4), s3 = 1;
+            }
+          }
+          if (s3) {
+            if (r2.ka = 0, r2.y = t4.sa, r2.O = t4.ta, r2.f = t4.qa, r2.N = t4.ra, r2.ea = t4.Ha, r2.Vd = t4.Ia, r2.fa = t4.R, r2.Rc = t4.B, r2.F = null, r2.J = 0, !Cn) {
+              for (s3 = -255; 255 >= s3; ++s3) Pn[255 + s3] = 0 > s3 ? -s3 : s3;
+              for (s3 = -1020; 1020 >= s3; ++s3) kn[1020 + s3] = -128 > s3 ? -128 : 127 < s3 ? 127 : s3;
+              for (s3 = -112; 112 >= s3; ++s3) In[112 + s3] = -16 > s3 ? -16 : 15 < s3 ? 15 : s3;
+              for (s3 = -255; 510 >= s3; ++s3) Fn[255 + s3] = 0 > s3 ? 0 : 255 < s3 ? 255 : s3;
+              Cn = 1;
+            }
+            an = ue2, on = ae2, cn = oe2, un = se2, hn = ce2, sn = ie2, ln2 = Je, fn = Xe, dn = $e, pn = Qe, gn = Ke, mn = Ze, vn = tr, bn = er, yn = ze, wn = He, Nn = We, Ln = Ve, fi[0] = xe, fi[1] = le2, fi[2] = Le2, fi[3] = Ae, fi[4] = Se, fi[5] = Pe, fi[6] = _e, fi[7] = ke, fi[8] = Fe, fi[9] = Ie, li[0] = ve2, li[1] = de2, li[2] = pe2, li[3] = ge2, li[4] = be2, li[5] = ye2, li[6] = we2, di[0] = Be, di[1] = fe2, di[2] = Ce, di[3] = je, di[4] = Ee, di[5] = Me, di[6] = qe, s3 = 1;
+          } else s3 = 0;
+        }
+        s3 && (s3 = function(t5, r3) {
+          for (t5.M = 0; t5.M < t5.Va; ++t5.M) {
+            var o3, s4 = t5.Jc[t5.M & t5.Xb], c5 = t5.m, u5 = t5;
+            for (o3 = 0; o3 < u5.za; ++o3) {
+              var h5 = c5, l5 = u5, f5 = l5.Ac, d5 = l5.Bc + 4 * o3, p5 = l5.zc, g5 = l5.ya[l5.aa + o3];
+              if (l5.Qa.Bb ? g5.$b = k2(h5, l5.Pa.jb[0]) ? 2 + k2(h5, l5.Pa.jb[2]) : k2(h5, l5.Pa.jb[1]) : g5.$b = 0, l5.kc && (g5.Ad = k2(h5, l5.Bd)), g5.Za = !k2(h5, 145) + 0, g5.Za) {
+                var m5 = g5.Ob, v5 = 0;
+                for (l5 = 0; 4 > l5; ++l5) {
+                  var b6, y4 = p5[0 + l5];
+                  for (b6 = 0; 4 > b6; ++b6) {
+                    y4 = ci[f5[d5 + b6]][y4];
+                    for (var w4 = oi[k2(h5, y4[0])]; 0 < w4; ) w4 = oi[2 * w4 + k2(h5, y4[w4])];
+                    y4 = -w4, f5[d5 + b6] = y4;
+                  }
+                  n2(m5, v5, f5, d5, 4), v5 += 4, p5[0 + l5] = y4;
+                }
+              } else y4 = k2(h5, 156) ? k2(h5, 128) ? 1 : 3 : k2(h5, 163) ? 2 : 0, g5.Ob[0] = y4, i2(f5, d5, y4, 4), i2(p5, 0, y4, 4);
+              g5.Dd = k2(h5, 142) ? k2(h5, 114) ? k2(h5, 183) ? 1 : 3 : 2 : 0;
+            }
+            if (u5.m.Ka) return Jt2(t5, 7, "Premature end-of-partition0 encountered.");
+            for (; t5.ja < t5.za; ++t5.ja) {
+              if (u5 = s4, h5 = (c5 = t5).rb[c5.sb - 1], f5 = c5.rb[c5.sb + c5.ja], o3 = c5.ya[c5.aa + c5.ja], d5 = c5.kc ? o3.Ad : 0) h5.la = f5.la = 0, o3.Za || (h5.Na = f5.Na = 0), o3.Hc = 0, o3.Gc = 0, o3.ia = 0;
+              else {
+                var N4, L4;
+                h5 = f5, f5 = u5, d5 = c5.Pa.Xc, p5 = c5.ya[c5.aa + c5.ja], g5 = c5.pb[p5.$b];
+                if (l5 = p5.ad, m5 = 0, v5 = c5.rb[c5.sb - 1], y4 = b6 = 0, i2(l5, m5, 0, 384), p5.Za) var A4 = 0, x3 = d5[3];
+                else {
+                  w4 = a2(16);
+                  var S3 = h5.Na + v5.Na;
+                  if (S3 = ni(f5, d5[1], S3, g5.Eb, 0, w4, 0), h5.Na = v5.Na = (0 < S3) + 0, 1 < S3) an(w4, 0, l5, m5);
+                  else {
+                    var _3 = w4[0] + 3 >> 3;
+                    for (w4 = 0; 256 > w4; w4 += 16) l5[m5 + w4] = _3;
+                  }
+                  A4 = 1, x3 = d5[0];
+                }
+                var P3 = 15 & h5.la, I3 = 15 & v5.la;
+                for (w4 = 0; 4 > w4; ++w4) {
+                  var F3 = 1 & I3;
+                  for (_3 = L4 = 0; 4 > _3; ++_3) P3 = P3 >> 1 | (F3 = (S3 = ni(f5, x3, S3 = F3 + (1 & P3), g5.Sc, A4, l5, m5)) > A4) << 7, L4 = L4 << 2 | (3 < S3 ? 3 : 1 < S3 ? 2 : 0 != l5[m5 + 0]), m5 += 16;
+                  P3 >>= 4, I3 = I3 >> 1 | F3 << 7, b6 = (b6 << 8 | L4) >>> 0;
+                }
+                for (x3 = P3, A4 = I3 >> 4, N4 = 0; 4 > N4; N4 += 2) {
+                  for (L4 = 0, P3 = h5.la >> 4 + N4, I3 = v5.la >> 4 + N4, w4 = 0; 2 > w4; ++w4) {
+                    for (F3 = 1 & I3, _3 = 0; 2 > _3; ++_3) S3 = F3 + (1 & P3), P3 = P3 >> 1 | (F3 = 0 < (S3 = ni(f5, d5[2], S3, g5.Qc, 0, l5, m5))) << 3, L4 = L4 << 2 | (3 < S3 ? 3 : 1 < S3 ? 2 : 0 != l5[m5 + 0]), m5 += 16;
+                    P3 >>= 2, I3 = I3 >> 1 | F3 << 5;
+                  }
+                  y4 |= L4 << 4 * N4, x3 |= P3 << 4 << N4, A4 |= (240 & I3) << N4;
+                }
+                h5.la = x3, v5.la = A4, p5.Hc = b6, p5.Gc = y4, p5.ia = 43690 & y4 ? 0 : g5.ia, d5 = !(b6 | y4);
+              }
+              if (0 < c5.L && (c5.wa[c5.Y + c5.ja] = c5.gd[o3.$b][o3.Za], c5.wa[c5.Y + c5.ja].La |= !d5), u5.Ka) return Jt2(t5, 7, "Premature end-of-file encountered.");
+            }
+            if ($t2(t5), c5 = r3, u5 = 1, o3 = (s4 = t5).D, h5 = 0 < s4.L && s4.M >= s4.zb && s4.M <= s4.Va, 0 == s4.Aa) t: {
+              if (o3.M = s4.M, o3.uc = h5, Or(s4, o3), u5 = 1, o3 = (L4 = s4.D).Nb, h5 = (y4 = Ri[s4.L]) * s4.R, f5 = y4 / 2 * s4.B, w4 = 16 * o3 * s4.R, _3 = 8 * o3 * s4.B, d5 = s4.sa, p5 = s4.ta - h5 + w4, g5 = s4.qa, l5 = s4.ra - f5 + _3, m5 = s4.Ha, v5 = s4.Ia - f5 + _3, I3 = 0 == (P3 = L4.M), b6 = P3 >= s4.Va - 1, 2 == s4.Aa && Or(s4, L4), L4.uc) for (F3 = (S3 = s4).D.M, e(S3.D.uc), L4 = S3.yb; L4 < S3.Hb; ++L4) {
+                A4 = L4, x3 = F3;
+                var C3 = (j3 = (U3 = S3).D).Nb;
+                N4 = U3.R;
+                var j3 = j3.wa[j3.Y + A4], O3 = U3.sa, B3 = U3.ta + 16 * C3 * N4 + 16 * A4, M3 = j3.dd, E3 = j3.tc;
+                if (0 != E3) if (e(3 <= E3), 1 == U3.L) 0 < A4 && wn(O3, B3, N4, E3 + 4), j3.La && Ln(O3, B3, N4, E3), 0 < x3 && yn(O3, B3, N4, E3 + 4), j3.La && Nn(O3, B3, N4, E3);
+                else {
+                  var q3 = U3.B, D3 = U3.qa, R3 = U3.ra + 8 * C3 * q3 + 8 * A4, T3 = U3.Ha, U3 = U3.Ia + 8 * C3 * q3 + 8 * A4;
+                  C3 = j3.ld;
+                  0 < A4 && (fn(O3, B3, N4, E3 + 4, M3, C3), pn(D3, R3, T3, U3, q3, E3 + 4, M3, C3)), j3.La && (mn(O3, B3, N4, E3, M3, C3), bn(D3, R3, T3, U3, q3, E3, M3, C3)), 0 < x3 && (ln2(O3, B3, N4, E3 + 4, M3, C3), dn(D3, R3, T3, U3, q3, E3 + 4, M3, C3)), j3.La && (gn(O3, B3, N4, E3, M3, C3), vn(D3, R3, T3, U3, q3, E3, M3, C3));
+                }
+              }
+              if (s4.ia && alert("todo:DitherRow"), null != c5.put) {
+                if (L4 = 16 * P3, P3 = 16 * (P3 + 1), I3 ? (c5.y = s4.sa, c5.O = s4.ta + w4, c5.f = s4.qa, c5.N = s4.ra + _3, c5.ea = s4.Ha, c5.W = s4.Ia + _3) : (L4 -= y4, c5.y = d5, c5.O = p5, c5.f = g5, c5.N = l5, c5.ea = m5, c5.W = v5), b6 || (P3 -= y4), P3 > c5.o && (P3 = c5.o), c5.F = null, c5.J = null, null != s4.Fa && 0 < s4.Fa.length && L4 < P3 && (c5.J = lr(s4, c5, L4, P3 - L4), c5.F = s4.mb, null == c5.F && 0 == c5.F.length)) {
+                  u5 = Jt2(s4, 3, "Could not decode alpha data.");
+                  break t;
+                }
+                L4 < c5.j && (y4 = c5.j - L4, L4 = c5.j, e(!(1 & y4)), c5.O += s4.R * y4, c5.N += s4.B * (y4 >> 1), c5.W += s4.B * (y4 >> 1), null != c5.F && (c5.J += c5.width * y4)), L4 < P3 && (c5.O += c5.v, c5.N += c5.v >> 1, c5.W += c5.v >> 1, null != c5.F && (c5.J += c5.v), c5.ka = L4 - c5.j, c5.U = c5.va - c5.v, c5.T = P3 - L4, u5 = c5.put(c5));
+              }
+              o3 + 1 != s4.Ic || b6 || (n2(s4.sa, s4.ta - h5, d5, p5 + 16 * s4.R, h5), n2(s4.qa, s4.ra - f5, g5, l5 + 8 * s4.B, f5), n2(s4.Ha, s4.Ia - f5, m5, v5 + 8 * s4.B, f5));
+            }
+            if (!u5) return Jt2(t5, 6, "Output aborted.");
+          }
+          return 1;
+        }(t4, r2)), null != r2.bc && r2.bc(r2), s3 &= 1;
+      }
+      return s3 ? (t4.cb = 0, s3) : 0;
+    }
+    function te3(t4, e2, r2, n3, i3) {
+      i3 = t4[e2 + r2 + 32 * n3] + (i3 >> 3), t4[e2 + r2 + 32 * n3] = -256 & i3 ? 0 > i3 ? 0 : 255 : i3;
+    }
+    function ee2(t4, e2, r2, n3, i3, a3) {
+      te3(t4, e2, 0, r2, n3 + i3), te3(t4, e2, 1, r2, n3 + a3), te3(t4, e2, 2, r2, n3 - a3), te3(t4, e2, 3, r2, n3 - i3);
+    }
+    function re2(t4) {
+      return (20091 * t4 >> 16) + t4;
+    }
+    function ne2(t4, e2, r2, n3) {
+      var i3, o3 = 0, s3 = a2(16);
+      for (i3 = 0; 4 > i3; ++i3) {
+        var c4 = t4[e2 + 0] + t4[e2 + 8], u4 = t4[e2 + 0] - t4[e2 + 8], h4 = (35468 * t4[e2 + 4] >> 16) - re2(t4[e2 + 12]), l4 = re2(t4[e2 + 4]) + (35468 * t4[e2 + 12] >> 16);
+        s3[o3 + 0] = c4 + l4, s3[o3 + 1] = u4 + h4, s3[o3 + 2] = u4 - h4, s3[o3 + 3] = c4 - l4, o3 += 4, e2++;
+      }
+      for (i3 = o3 = 0; 4 > i3; ++i3) c4 = (t4 = s3[o3 + 0] + 4) + s3[o3 + 8], u4 = t4 - s3[o3 + 8], h4 = (35468 * s3[o3 + 4] >> 16) - re2(s3[o3 + 12]), te3(r2, n3, 0, 0, c4 + (l4 = re2(s3[o3 + 4]) + (35468 * s3[o3 + 12] >> 16))), te3(r2, n3, 1, 0, u4 + h4), te3(r2, n3, 2, 0, u4 - h4), te3(r2, n3, 3, 0, c4 - l4), o3++, n3 += 32;
+    }
+    function ie2(t4, e2, r2, n3) {
+      var i3 = t4[e2 + 0] + 4, a3 = 35468 * t4[e2 + 4] >> 16, o3 = re2(t4[e2 + 4]), s3 = 35468 * t4[e2 + 1] >> 16;
+      ee2(r2, n3, 0, i3 + o3, t4 = re2(t4[e2 + 1]), s3), ee2(r2, n3, 1, i3 + a3, t4, s3), ee2(r2, n3, 2, i3 - a3, t4, s3), ee2(r2, n3, 3, i3 - o3, t4, s3);
+    }
+    function ae2(t4, e2, r2, n3, i3) {
+      ne2(t4, e2, r2, n3), i3 && ne2(t4, e2 + 16, r2, n3 + 4);
+    }
+    function oe2(t4, e2, r2, n3) {
+      on(t4, e2 + 0, r2, n3, 1), on(t4, e2 + 32, r2, n3 + 128, 1);
+    }
+    function se2(t4, e2, r2, n3) {
+      var i3;
+      for (t4 = t4[e2 + 0] + 4, i3 = 0; 4 > i3; ++i3) for (e2 = 0; 4 > e2; ++e2) te3(r2, n3, e2, i3, t4);
+    }
+    function ce2(t4, e2, r2, n3) {
+      t4[e2 + 0] && un(t4, e2 + 0, r2, n3), t4[e2 + 16] && un(t4, e2 + 16, r2, n3 + 4), t4[e2 + 32] && un(t4, e2 + 32, r2, n3 + 128), t4[e2 + 48] && un(t4, e2 + 48, r2, n3 + 128 + 4);
+    }
+    function ue2(t4, e2, r2, n3) {
+      var i3, o3 = a2(16);
+      for (i3 = 0; 4 > i3; ++i3) {
+        var s3 = t4[e2 + 0 + i3] + t4[e2 + 12 + i3], c4 = t4[e2 + 4 + i3] + t4[e2 + 8 + i3], u4 = t4[e2 + 4 + i3] - t4[e2 + 8 + i3], h4 = t4[e2 + 0 + i3] - t4[e2 + 12 + i3];
+        o3[0 + i3] = s3 + c4, o3[8 + i3] = s3 - c4, o3[4 + i3] = h4 + u4, o3[12 + i3] = h4 - u4;
+      }
+      for (i3 = 0; 4 > i3; ++i3) s3 = (t4 = o3[0 + 4 * i3] + 3) + o3[3 + 4 * i3], c4 = o3[1 + 4 * i3] + o3[2 + 4 * i3], u4 = o3[1 + 4 * i3] - o3[2 + 4 * i3], h4 = t4 - o3[3 + 4 * i3], r2[n3 + 0] = s3 + c4 >> 3, r2[n3 + 16] = h4 + u4 >> 3, r2[n3 + 32] = s3 - c4 >> 3, r2[n3 + 48] = h4 - u4 >> 3, n3 += 64;
+    }
+    function he2(t4, e2, r2) {
+      var n3, i3 = e2 - 32, a3 = Bn, o3 = 255 - t4[i3 - 1];
+      for (n3 = 0; n3 < r2; ++n3) {
+        var s3, c4 = a3, u4 = o3 + t4[e2 - 1];
+        for (s3 = 0; s3 < r2; ++s3) t4[e2 + s3] = c4[u4 + t4[i3 + s3]];
+        e2 += 32;
+      }
+    }
+    function le2(t4, e2) {
+      he2(t4, e2, 4);
+    }
+    function fe2(t4, e2) {
+      he2(t4, e2, 8);
+    }
+    function de2(t4, e2) {
+      he2(t4, e2, 16);
+    }
+    function pe2(t4, e2) {
+      var r2;
+      for (r2 = 0; 16 > r2; ++r2) n2(t4, e2 + 32 * r2, t4, e2 - 32, 16);
+    }
+    function ge2(t4, e2) {
+      var r2;
+      for (r2 = 16; 0 < r2; --r2) i2(t4, e2, t4[e2 - 1], 16), e2 += 32;
+    }
+    function me2(t4, e2, r2) {
+      var n3;
+      for (n3 = 0; 16 > n3; ++n3) i2(e2, r2 + 32 * n3, t4, 16);
+    }
+    function ve2(t4, e2) {
+      var r2, n3 = 16;
+      for (r2 = 0; 16 > r2; ++r2) n3 += t4[e2 - 1 + 32 * r2] + t4[e2 + r2 - 32];
+      me2(n3 >> 5, t4, e2);
+    }
+    function be2(t4, e2) {
+      var r2, n3 = 8;
+      for (r2 = 0; 16 > r2; ++r2) n3 += t4[e2 - 1 + 32 * r2];
+      me2(n3 >> 4, t4, e2);
+    }
+    function ye2(t4, e2) {
+      var r2, n3 = 8;
+      for (r2 = 0; 16 > r2; ++r2) n3 += t4[e2 + r2 - 32];
+      me2(n3 >> 4, t4, e2);
+    }
+    function we2(t4, e2) {
+      me2(128, t4, e2);
+    }
+    function Ne2(t4, e2, r2) {
+      return t4 + 2 * e2 + r2 + 2 >> 2;
+    }
+    function Le2(t4, e2) {
+      var r2, i3 = e2 - 32;
+      i3 = new Uint8Array([Ne2(t4[i3 - 1], t4[i3 + 0], t4[i3 + 1]), Ne2(t4[i3 + 0], t4[i3 + 1], t4[i3 + 2]), Ne2(t4[i3 + 1], t4[i3 + 2], t4[i3 + 3]), Ne2(t4[i3 + 2], t4[i3 + 3], t4[i3 + 4])]);
+      for (r2 = 0; 4 > r2; ++r2) n2(t4, e2 + 32 * r2, i3, 0, i3.length);
+    }
+    function Ae(t4, e2) {
+      var r2 = t4[e2 - 1], n3 = t4[e2 - 1 + 32], i3 = t4[e2 - 1 + 64], a3 = t4[e2 - 1 + 96];
+      I2(t4, e2 + 0, 16843009 * Ne2(t4[e2 - 1 - 32], r2, n3)), I2(t4, e2 + 32, 16843009 * Ne2(r2, n3, i3)), I2(t4, e2 + 64, 16843009 * Ne2(n3, i3, a3)), I2(t4, e2 + 96, 16843009 * Ne2(i3, a3, a3));
+    }
+    function xe(t4, e2) {
+      var r2, n3 = 4;
+      for (r2 = 0; 4 > r2; ++r2) n3 += t4[e2 + r2 - 32] + t4[e2 - 1 + 32 * r2];
+      for (n3 >>= 3, r2 = 0; 4 > r2; ++r2) i2(t4, e2 + 32 * r2, n3, 4);
+    }
+    function Se(t4, e2) {
+      var r2 = t4[e2 - 1 + 0], n3 = t4[e2 - 1 + 32], i3 = t4[e2 - 1 + 64], a3 = t4[e2 - 1 - 32], o3 = t4[e2 + 0 - 32], s3 = t4[e2 + 1 - 32], c4 = t4[e2 + 2 - 32], u4 = t4[e2 + 3 - 32];
+      t4[e2 + 0 + 96] = Ne2(n3, i3, t4[e2 - 1 + 96]), t4[e2 + 1 + 96] = t4[e2 + 0 + 64] = Ne2(r2, n3, i3), t4[e2 + 2 + 96] = t4[e2 + 1 + 64] = t4[e2 + 0 + 32] = Ne2(a3, r2, n3), t4[e2 + 3 + 96] = t4[e2 + 2 + 64] = t4[e2 + 1 + 32] = t4[e2 + 0 + 0] = Ne2(o3, a3, r2), t4[e2 + 3 + 64] = t4[e2 + 2 + 32] = t4[e2 + 1 + 0] = Ne2(s3, o3, a3), t4[e2 + 3 + 32] = t4[e2 + 2 + 0] = Ne2(c4, s3, o3), t4[e2 + 3 + 0] = Ne2(u4, c4, s3);
+    }
+    function _e(t4, e2) {
+      var r2 = t4[e2 + 1 - 32], n3 = t4[e2 + 2 - 32], i3 = t4[e2 + 3 - 32], a3 = t4[e2 + 4 - 32], o3 = t4[e2 + 5 - 32], s3 = t4[e2 + 6 - 32], c4 = t4[e2 + 7 - 32];
+      t4[e2 + 0 + 0] = Ne2(t4[e2 + 0 - 32], r2, n3), t4[e2 + 1 + 0] = t4[e2 + 0 + 32] = Ne2(r2, n3, i3), t4[e2 + 2 + 0] = t4[e2 + 1 + 32] = t4[e2 + 0 + 64] = Ne2(n3, i3, a3), t4[e2 + 3 + 0] = t4[e2 + 2 + 32] = t4[e2 + 1 + 64] = t4[e2 + 0 + 96] = Ne2(i3, a3, o3), t4[e2 + 3 + 32] = t4[e2 + 2 + 64] = t4[e2 + 1 + 96] = Ne2(a3, o3, s3), t4[e2 + 3 + 64] = t4[e2 + 2 + 96] = Ne2(o3, s3, c4), t4[e2 + 3 + 96] = Ne2(s3, c4, c4);
+    }
+    function Pe(t4, e2) {
+      var r2 = t4[e2 - 1 + 0], n3 = t4[e2 - 1 + 32], i3 = t4[e2 - 1 + 64], a3 = t4[e2 - 1 - 32], o3 = t4[e2 + 0 - 32], s3 = t4[e2 + 1 - 32], c4 = t4[e2 + 2 - 32], u4 = t4[e2 + 3 - 32];
+      t4[e2 + 0 + 0] = t4[e2 + 1 + 64] = a3 + o3 + 1 >> 1, t4[e2 + 1 + 0] = t4[e2 + 2 + 64] = o3 + s3 + 1 >> 1, t4[e2 + 2 + 0] = t4[e2 + 3 + 64] = s3 + c4 + 1 >> 1, t4[e2 + 3 + 0] = c4 + u4 + 1 >> 1, t4[e2 + 0 + 96] = Ne2(i3, n3, r2), t4[e2 + 0 + 64] = Ne2(n3, r2, a3), t4[e2 + 0 + 32] = t4[e2 + 1 + 96] = Ne2(r2, a3, o3), t4[e2 + 1 + 32] = t4[e2 + 2 + 96] = Ne2(a3, o3, s3), t4[e2 + 2 + 32] = t4[e2 + 3 + 96] = Ne2(o3, s3, c4), t4[e2 + 3 + 32] = Ne2(s3, c4, u4);
+    }
+    function ke(t4, e2) {
+      var r2 = t4[e2 + 0 - 32], n3 = t4[e2 + 1 - 32], i3 = t4[e2 + 2 - 32], a3 = t4[e2 + 3 - 32], o3 = t4[e2 + 4 - 32], s3 = t4[e2 + 5 - 32], c4 = t4[e2 + 6 - 32], u4 = t4[e2 + 7 - 32];
+      t4[e2 + 0 + 0] = r2 + n3 + 1 >> 1, t4[e2 + 1 + 0] = t4[e2 + 0 + 64] = n3 + i3 + 1 >> 1, t4[e2 + 2 + 0] = t4[e2 + 1 + 64] = i3 + a3 + 1 >> 1, t4[e2 + 3 + 0] = t4[e2 + 2 + 64] = a3 + o3 + 1 >> 1, t4[e2 + 0 + 32] = Ne2(r2, n3, i3), t4[e2 + 1 + 32] = t4[e2 + 0 + 96] = Ne2(n3, i3, a3), t4[e2 + 2 + 32] = t4[e2 + 1 + 96] = Ne2(i3, a3, o3), t4[e2 + 3 + 32] = t4[e2 + 2 + 96] = Ne2(a3, o3, s3), t4[e2 + 3 + 64] = Ne2(o3, s3, c4), t4[e2 + 3 + 96] = Ne2(s3, c4, u4);
+    }
+    function Ie(t4, e2) {
+      var r2 = t4[e2 - 1 + 0], n3 = t4[e2 - 1 + 32], i3 = t4[e2 - 1 + 64], a3 = t4[e2 - 1 + 96];
+      t4[e2 + 0 + 0] = r2 + n3 + 1 >> 1, t4[e2 + 2 + 0] = t4[e2 + 0 + 32] = n3 + i3 + 1 >> 1, t4[e2 + 2 + 32] = t4[e2 + 0 + 64] = i3 + a3 + 1 >> 1, t4[e2 + 1 + 0] = Ne2(r2, n3, i3), t4[e2 + 3 + 0] = t4[e2 + 1 + 32] = Ne2(n3, i3, a3), t4[e2 + 3 + 32] = t4[e2 + 1 + 64] = Ne2(i3, a3, a3), t4[e2 + 3 + 64] = t4[e2 + 2 + 64] = t4[e2 + 0 + 96] = t4[e2 + 1 + 96] = t4[e2 + 2 + 96] = t4[e2 + 3 + 96] = a3;
+    }
+    function Fe(t4, e2) {
+      var r2 = t4[e2 - 1 + 0], n3 = t4[e2 - 1 + 32], i3 = t4[e2 - 1 + 64], a3 = t4[e2 - 1 + 96], o3 = t4[e2 - 1 - 32], s3 = t4[e2 + 0 - 32], c4 = t4[e2 + 1 - 32], u4 = t4[e2 + 2 - 32];
+      t4[e2 + 0 + 0] = t4[e2 + 2 + 32] = r2 + o3 + 1 >> 1, t4[e2 + 0 + 32] = t4[e2 + 2 + 64] = n3 + r2 + 1 >> 1, t4[e2 + 0 + 64] = t4[e2 + 2 + 96] = i3 + n3 + 1 >> 1, t4[e2 + 0 + 96] = a3 + i3 + 1 >> 1, t4[e2 + 3 + 0] = Ne2(s3, c4, u4), t4[e2 + 2 + 0] = Ne2(o3, s3, c4), t4[e2 + 1 + 0] = t4[e2 + 3 + 32] = Ne2(r2, o3, s3), t4[e2 + 1 + 32] = t4[e2 + 3 + 64] = Ne2(n3, r2, o3), t4[e2 + 1 + 64] = t4[e2 + 3 + 96] = Ne2(i3, n3, r2), t4[e2 + 1 + 96] = Ne2(a3, i3, n3);
+    }
+    function Ce(t4, e2) {
+      var r2;
+      for (r2 = 0; 8 > r2; ++r2) n2(t4, e2 + 32 * r2, t4, e2 - 32, 8);
+    }
+    function je(t4, e2) {
+      var r2;
+      for (r2 = 0; 8 > r2; ++r2) i2(t4, e2, t4[e2 - 1], 8), e2 += 32;
+    }
+    function Oe(t4, e2, r2) {
+      var n3;
+      for (n3 = 0; 8 > n3; ++n3) i2(e2, r2 + 32 * n3, t4, 8);
+    }
+    function Be(t4, e2) {
+      var r2, n3 = 8;
+      for (r2 = 0; 8 > r2; ++r2) n3 += t4[e2 + r2 - 32] + t4[e2 - 1 + 32 * r2];
+      Oe(n3 >> 4, t4, e2);
+    }
+    function Me(t4, e2) {
+      var r2, n3 = 4;
+      for (r2 = 0; 8 > r2; ++r2) n3 += t4[e2 + r2 - 32];
+      Oe(n3 >> 3, t4, e2);
+    }
+    function Ee(t4, e2) {
+      var r2, n3 = 4;
+      for (r2 = 0; 8 > r2; ++r2) n3 += t4[e2 - 1 + 32 * r2];
+      Oe(n3 >> 3, t4, e2);
+    }
+    function qe(t4, e2) {
+      Oe(128, t4, e2);
+    }
+    function De(t4, e2, r2) {
+      var n3 = t4[e2 - r2], i3 = t4[e2 + 0], a3 = 3 * (i3 - n3) + jn[1020 + t4[e2 - 2 * r2] - t4[e2 + r2]], o3 = On[112 + (a3 + 4 >> 3)];
+      t4[e2 - r2] = Bn[255 + n3 + On[112 + (a3 + 3 >> 3)]], t4[e2 + 0] = Bn[255 + i3 - o3];
+    }
+    function Re(t4, e2, r2, n3) {
+      var i3 = t4[e2 + 0], a3 = t4[e2 + r2];
+      return Mn[255 + t4[e2 - 2 * r2] - t4[e2 - r2]] > n3 || Mn[255 + a3 - i3] > n3;
+    }
+    function Te(t4, e2, r2, n3) {
+      return 4 * Mn[255 + t4[e2 - r2] - t4[e2 + 0]] + Mn[255 + t4[e2 - 2 * r2] - t4[e2 + r2]] <= n3;
+    }
+    function Ue(t4, e2, r2, n3, i3) {
+      var a3 = t4[e2 - 3 * r2], o3 = t4[e2 - 2 * r2], s3 = t4[e2 - r2], c4 = t4[e2 + 0], u4 = t4[e2 + r2], h4 = t4[e2 + 2 * r2], l4 = t4[e2 + 3 * r2];
+      return 4 * Mn[255 + s3 - c4] + Mn[255 + o3 - u4] > n3 ? 0 : Mn[255 + t4[e2 - 4 * r2] - a3] <= i3 && Mn[255 + a3 - o3] <= i3 && Mn[255 + o3 - s3] <= i3 && Mn[255 + l4 - h4] <= i3 && Mn[255 + h4 - u4] <= i3 && Mn[255 + u4 - c4] <= i3;
+    }
+    function ze(t4, e2, r2, n3) {
+      var i3 = 2 * n3 + 1;
+      for (n3 = 0; 16 > n3; ++n3) Te(t4, e2 + n3, r2, i3) && De(t4, e2 + n3, r2);
+    }
+    function He(t4, e2, r2, n3) {
+      var i3 = 2 * n3 + 1;
+      for (n3 = 0; 16 > n3; ++n3) Te(t4, e2 + n3 * r2, 1, i3) && De(t4, e2 + n3 * r2, 1);
+    }
+    function We(t4, e2, r2, n3) {
+      var i3;
+      for (i3 = 3; 0 < i3; --i3) ze(t4, e2 += 4 * r2, r2, n3);
+    }
+    function Ve(t4, e2, r2, n3) {
+      var i3;
+      for (i3 = 3; 0 < i3; --i3) He(t4, e2 += 4, r2, n3);
+    }
+    function Ge(t4, e2, r2, n3, i3, a3, o3, s3) {
+      for (a3 = 2 * a3 + 1; 0 < i3--; ) {
+        if (Ue(t4, e2, r2, a3, o3)) if (Re(t4, e2, r2, s3)) De(t4, e2, r2);
+        else {
+          var c4 = t4, u4 = e2, h4 = r2, l4 = c4[u4 - 2 * h4], f4 = c4[u4 - h4], d4 = c4[u4 + 0], p4 = c4[u4 + h4], g4 = c4[u4 + 2 * h4], m4 = 27 * (b6 = jn[1020 + 3 * (d4 - f4) + jn[1020 + l4 - p4]]) + 63 >> 7, v4 = 18 * b6 + 63 >> 7, b6 = 9 * b6 + 63 >> 7;
+          c4[u4 - 3 * h4] = Bn[255 + c4[u4 - 3 * h4] + b6], c4[u4 - 2 * h4] = Bn[255 + l4 + v4], c4[u4 - h4] = Bn[255 + f4 + m4], c4[u4 + 0] = Bn[255 + d4 - m4], c4[u4 + h4] = Bn[255 + p4 - v4], c4[u4 + 2 * h4] = Bn[255 + g4 - b6];
+        }
+        e2 += n3;
+      }
+    }
+    function Ye(t4, e2, r2, n3, i3, a3, o3, s3) {
+      for (a3 = 2 * a3 + 1; 0 < i3--; ) {
+        if (Ue(t4, e2, r2, a3, o3)) if (Re(t4, e2, r2, s3)) De(t4, e2, r2);
+        else {
+          var c4 = t4, u4 = e2, h4 = r2, l4 = c4[u4 - h4], f4 = c4[u4 + 0], d4 = c4[u4 + h4], p4 = On[112 + ((g4 = 3 * (f4 - l4)) + 4 >> 3)], g4 = On[112 + (g4 + 3 >> 3)], m4 = p4 + 1 >> 1;
+          c4[u4 - 2 * h4] = Bn[255 + c4[u4 - 2 * h4] + m4], c4[u4 - h4] = Bn[255 + l4 + g4], c4[u4 + 0] = Bn[255 + f4 - p4], c4[u4 + h4] = Bn[255 + d4 - m4];
+        }
+        e2 += n3;
+      }
+    }
+    function Je(t4, e2, r2, n3, i3, a3) {
+      Ge(t4, e2, r2, 1, 16, n3, i3, a3);
+    }
+    function Xe(t4, e2, r2, n3, i3, a3) {
+      Ge(t4, e2, 1, r2, 16, n3, i3, a3);
+    }
+    function Ke(t4, e2, r2, n3, i3, a3) {
+      var o3;
+      for (o3 = 3; 0 < o3; --o3) Ye(t4, e2 += 4 * r2, r2, 1, 16, n3, i3, a3);
+    }
+    function Ze(t4, e2, r2, n3, i3, a3) {
+      var o3;
+      for (o3 = 3; 0 < o3; --o3) Ye(t4, e2 += 4, 1, r2, 16, n3, i3, a3);
+    }
+    function $e(t4, e2, r2, n3, i3, a3, o3, s3) {
+      Ge(t4, e2, i3, 1, 8, a3, o3, s3), Ge(r2, n3, i3, 1, 8, a3, o3, s3);
+    }
+    function Qe(t4, e2, r2, n3, i3, a3, o3, s3) {
+      Ge(t4, e2, 1, i3, 8, a3, o3, s3), Ge(r2, n3, 1, i3, 8, a3, o3, s3);
+    }
+    function tr(t4, e2, r2, n3, i3, a3, o3, s3) {
+      Ye(t4, e2 + 4 * i3, i3, 1, 8, a3, o3, s3), Ye(r2, n3 + 4 * i3, i3, 1, 8, a3, o3, s3);
+    }
+    function er(t4, e2, r2, n3, i3, a3, o3, s3) {
+      Ye(t4, e2 + 4, 1, i3, 8, a3, o3, s3), Ye(r2, n3 + 4, 1, i3, 8, a3, o3, s3);
+    }
+    function rr() {
+      this.ba = new ot2(), this.ec = [], this.cc = [], this.Mc = [], this.Dc = this.Nc = this.dc = this.fc = 0, this.Oa = new ct2(), this.memory = 0, this.Ib = "OutputFunc", this.Jb = "OutputAlphaFunc", this.Nd = "OutputRowFunc";
+    }
+    function nr() {
+      this.data = [], this.offset = this.kd = this.ha = this.w = 0, this.na = [], this.xa = this.gb = this.Ja = this.Sa = this.P = 0;
+    }
+    function ir() {
+      this.nc = this.Ea = this.b = this.hc = 0, this.K = [], this.w = 0;
+    }
+    function ar() {
+      this.ua = 0, this.Wa = new M2(), this.vb = new M2(), this.md = this.xc = this.wc = 0, this.vc = [], this.Wb = 0, this.Ya = new d3(), this.yc = new l3();
+    }
+    function or() {
+      this.xb = this.a = 0, this.l = new Gt2(), this.ca = new ot2(), this.V = [], this.Ba = 0, this.Ta = [], this.Ua = 0, this.m = new N3(), this.Pb = 0, this.wd = new N3(), this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0, this.s = new ar(), this.ab = 0, this.gc = o2(4, ir), this.Oc = 0;
+    }
+    function sr() {
+      this.Lc = this.Z = this.$a = this.i = this.c = 0, this.l = new Gt2(), this.ic = 0, this.ca = [], this.tb = 0, this.qd = null, this.rd = 0;
+    }
+    function cr(t4, e2, r2, n3, i3, a3, o3) {
+      for (t4 = null == t4 ? 0 : t4[e2 + 0], e2 = 0; e2 < o3; ++e2) i3[a3 + e2] = t4 + r2[n3 + e2] & 255, t4 = i3[a3 + e2];
+    }
+    function ur(t4, e2, r2, n3, i3, a3, o3) {
+      var s3;
+      if (null == t4) cr(null, null, r2, n3, i3, a3, o3);
+      else for (s3 = 0; s3 < o3; ++s3) i3[a3 + s3] = t4[e2 + s3] + r2[n3 + s3] & 255;
+    }
+    function hr(t4, e2, r2, n3, i3, a3, o3) {
+      if (null == t4) cr(null, null, r2, n3, i3, a3, o3);
+      else {
+        var s3, c4 = t4[e2 + 0], u4 = c4, h4 = c4;
+        for (s3 = 0; s3 < o3; ++s3) u4 = h4 + (c4 = t4[e2 + s3]) - u4, h4 = r2[n3 + s3] + (-256 & u4 ? 0 > u4 ? 0 : 255 : u4) & 255, u4 = c4, i3[a3 + s3] = h4;
+      }
+    }
+    function lr(t4, r2, i3, o3) {
+      var s3 = r2.width, c4 = r2.o;
+      if (e(null != t4 && null != r2), 0 > i3 || 0 >= o3 || i3 + o3 > c4) return null;
+      if (!t4.Cc) {
+        if (null == t4.ga) {
+          var u4;
+          if (t4.ga = new sr(), (u4 = null == t4.ga) || (u4 = r2.width * r2.o, e(0 == t4.Gb.length), t4.Gb = a2(u4), t4.Uc = 0, null == t4.Gb ? u4 = 0 : (t4.mb = t4.Gb, t4.nb = t4.Uc, t4.rc = null, u4 = 1), u4 = !u4), !u4) {
+            u4 = t4.ga;
+            var h4 = t4.Fa, l4 = t4.P, f4 = t4.qc, d4 = t4.mb, p4 = t4.nb, g4 = l4 + 1, m4 = f4 - 1, b6 = u4.l;
+            if (e(null != h4 && null != d4 && null != r2), mi[0] = null, mi[1] = cr, mi[2] = ur, mi[3] = hr, u4.ca = d4, u4.tb = p4, u4.c = r2.width, u4.i = r2.height, e(0 < u4.c && 0 < u4.i), 1 >= f4) r2 = 0;
+            else if (u4.$a = h4[l4 + 0] >> 0 & 3, u4.Z = h4[l4 + 0] >> 2 & 3, u4.Lc = h4[l4 + 0] >> 4 & 3, l4 = h4[l4 + 0] >> 6 & 3, 0 > u4.$a || 1 < u4.$a || 4 <= u4.Z || 1 < u4.Lc || l4) r2 = 0;
+            else if (b6.put = dt2, b6.ac = ft2, b6.bc = pt2, b6.ma = u4, b6.width = r2.width, b6.height = r2.height, b6.Da = r2.Da, b6.v = r2.v, b6.va = r2.va, b6.j = r2.j, b6.o = r2.o, u4.$a) t: {
+              e(1 == u4.$a), r2 = kt2();
+              e: for (; ; ) {
+                if (null == r2) {
+                  r2 = 0;
+                  break t;
+                }
+                if (e(null != u4), u4.mc = r2, r2.c = u4.c, r2.i = u4.i, r2.l = u4.l, r2.l.ma = u4, r2.l.width = u4.c, r2.l.height = u4.i, r2.a = 0, v3(r2.m, h4, g4, m4), !It2(u4.c, u4.i, 1, r2, null)) break e;
+                if (1 == r2.ab && 3 == r2.gc[0].hc && At2(r2.s) ? (u4.ic = 1, h4 = r2.c * r2.i, r2.Ta = null, r2.Ua = 0, r2.V = a2(h4), r2.Ba = 0, null == r2.V ? (r2.a = 1, r2 = 0) : r2 = 1) : (u4.ic = 0, r2 = Ft2(r2, u4.c)), !r2) break e;
+                r2 = 1;
+                break t;
+              }
+              u4.mc = null, r2 = 0;
+            }
+            else r2 = m4 >= u4.c * u4.i;
+            u4 = !r2;
+          }
+          if (u4) return null;
+          1 != t4.ga.Lc ? t4.Ga = 0 : o3 = c4 - i3;
+        }
+        e(null != t4.ga), e(i3 + o3 <= c4);
+        t: {
+          if (r2 = (h4 = t4.ga).c, c4 = h4.l.o, 0 == h4.$a) {
+            if (g4 = t4.rc, m4 = t4.Vc, b6 = t4.Fa, l4 = t4.P + 1 + i3 * r2, f4 = t4.mb, d4 = t4.nb + i3 * r2, e(l4 <= t4.P + t4.qc), 0 != h4.Z) for (e(null != mi[h4.Z]), u4 = 0; u4 < o3; ++u4) mi[h4.Z](g4, m4, b6, l4, f4, d4, r2), g4 = f4, m4 = d4, d4 += r2, l4 += r2;
+            else for (u4 = 0; u4 < o3; ++u4) n2(f4, d4, b6, l4, r2), g4 = f4, m4 = d4, d4 += r2, l4 += r2;
+            t4.rc = g4, t4.Vc = m4;
+          } else {
+            if (e(null != h4.mc), r2 = i3 + o3, e(null != (u4 = h4.mc)), e(r2 <= u4.i), u4.C >= r2) r2 = 1;
+            else if (h4.ic || mr(), h4.ic) {
+              h4 = u4.V, g4 = u4.Ba, m4 = u4.c;
+              var y4 = u4.i, w4 = (b6 = 1, l4 = u4.$ / m4, f4 = u4.$ % m4, d4 = u4.m, p4 = u4.s, u4.$), N4 = m4 * y4, L4 = m4 * r2, x3 = p4.wc, _3 = w4 < L4 ? wt2(p4, f4, l4) : null;
+              e(w4 <= N4), e(r2 <= y4), e(At2(p4));
+              e: for (; ; ) {
+                for (; !d4.h && w4 < L4; ) {
+                  if (f4 & x3 || (_3 = wt2(p4, f4, l4)), e(null != _3), S2(d4), 256 > (y4 = bt2(_3.G[0], _3.H[0], d4))) h4[g4 + w4] = y4, ++w4, ++f4 >= m4 && (f4 = 0, ++l4 <= r2 && !(l4 % 16) && St2(u4, l4));
+                  else {
+                    if (!(280 > y4)) {
+                      b6 = 0;
+                      break e;
+                    }
+                    y4 = mt2(y4 - 256, d4);
+                    var P3, k3 = bt2(_3.G[4], _3.H[4], d4);
+                    if (S2(d4), !(w4 >= (k3 = vt2(m4, k3 = mt2(k3, d4))) && N4 - w4 >= y4)) {
+                      b6 = 0;
+                      break e;
+                    }
+                    for (P3 = 0; P3 < y4; ++P3) h4[g4 + w4 + P3] = h4[g4 + w4 + P3 - k3];
+                    for (w4 += y4, f4 += y4; f4 >= m4; ) f4 -= m4, ++l4 <= r2 && !(l4 % 16) && St2(u4, l4);
+                    w4 < L4 && f4 & x3 && (_3 = wt2(p4, f4, l4));
+                  }
+                  e(d4.h == A3(d4));
+                }
+                St2(u4, l4 > r2 ? r2 : l4);
+                break e;
+              }
+              !b6 || d4.h && w4 < N4 ? (b6 = 0, u4.a = d4.h ? 5 : 3) : u4.$ = w4, r2 = b6;
+            } else r2 = _t2(u4, u4.V, u4.Ba, u4.c, u4.i, r2, Ct2);
+            if (!r2) {
+              o3 = 0;
+              break t;
+            }
+          }
+          i3 + o3 >= c4 && (t4.Cc = 1), o3 = 1;
+        }
+        if (!o3) return null;
+        if (t4.Cc && (null != (o3 = t4.ga) && (o3.mc = null), t4.ga = null, 0 < t4.Ga)) return alert("todo:WebPDequantizeLevels"), null;
+      }
+      return t4.nb + i3 * s3;
+    }
+    function fr(t4, e2, r2, n3, i3, a3) {
+      for (; 0 < i3--; ) {
+        var o3, s3 = t4, c4 = e2 + (r2 ? 1 : 0), u4 = t4, h4 = e2 + (r2 ? 0 : 3);
+        for (o3 = 0; o3 < n3; ++o3) {
+          var l4 = u4[h4 + 4 * o3];
+          255 != l4 && (l4 *= 32897, s3[c4 + 4 * o3 + 0] = s3[c4 + 4 * o3 + 0] * l4 >> 23, s3[c4 + 4 * o3 + 1] = s3[c4 + 4 * o3 + 1] * l4 >> 23, s3[c4 + 4 * o3 + 2] = s3[c4 + 4 * o3 + 2] * l4 >> 23);
+        }
+        e2 += a3;
+      }
+    }
+    function dr(t4, e2, r2, n3, i3) {
+      for (; 0 < n3--; ) {
+        var a3;
+        for (a3 = 0; a3 < r2; ++a3) {
+          var o3 = t4[e2 + 2 * a3 + 0], s3 = 15 & (u4 = t4[e2 + 2 * a3 + 1]), c4 = 4369 * s3, u4 = (240 & u4 | u4 >> 4) * c4 >> 16;
+          t4[e2 + 2 * a3 + 0] = (240 & o3 | o3 >> 4) * c4 >> 16 & 240 | (15 & o3 | o3 << 4) * c4 >> 16 >> 4 & 15, t4[e2 + 2 * a3 + 1] = 240 & u4 | s3;
+        }
+        e2 += i3;
+      }
+    }
+    function pr(t4, e2, r2, n3, i3, a3, o3, s3) {
+      var c4, u4, h4 = 255;
+      for (u4 = 0; u4 < i3; ++u4) {
+        for (c4 = 0; c4 < n3; ++c4) {
+          var l4 = t4[e2 + c4];
+          a3[o3 + 4 * c4] = l4, h4 &= l4;
+        }
+        e2 += r2, o3 += s3;
+      }
+      return 255 != h4;
+    }
+    function gr(t4, e2, r2, n3, i3) {
+      var a3;
+      for (a3 = 0; a3 < i3; ++a3) r2[n3 + a3] = t4[e2 + a3] >> 8;
+    }
+    function mr() {
+      An = fr, xn = dr, Sn = pr, _n = gr;
+    }
+    function vr(r2, n3, i3) {
+      t3[r2] = function(t4, r3, a3, o3, s3, c4, u4, h4, l4, f4, d4, p4, g4, m4, v4, b6, y4) {
+        var w4, N4 = y4 - 1 >> 1, L4 = s3[c4 + 0] | u4[h4 + 0] << 16, A4 = l4[f4 + 0] | d4[p4 + 0] << 16;
+        e(null != t4);
+        var x3 = 3 * L4 + A4 + 131074 >> 2;
+        for (n3(t4[r3 + 0], 255 & x3, x3 >> 16, g4, m4), null != a3 && (x3 = 3 * A4 + L4 + 131074 >> 2, n3(a3[o3 + 0], 255 & x3, x3 >> 16, v4, b6)), w4 = 1; w4 <= N4; ++w4) {
+          var S3 = s3[c4 + w4] | u4[h4 + w4] << 16, _3 = l4[f4 + w4] | d4[p4 + w4] << 16, P3 = L4 + S3 + A4 + _3 + 524296, k3 = P3 + 2 * (S3 + A4) >> 3;
+          x3 = k3 + L4 >> 1, L4 = (P3 = P3 + 2 * (L4 + _3) >> 3) + S3 >> 1, n3(t4[r3 + 2 * w4 - 1], 255 & x3, x3 >> 16, g4, m4 + (2 * w4 - 1) * i3), n3(t4[r3 + 2 * w4 - 0], 255 & L4, L4 >> 16, g4, m4 + (2 * w4 - 0) * i3), null != a3 && (x3 = P3 + A4 >> 1, L4 = k3 + _3 >> 1, n3(a3[o3 + 2 * w4 - 1], 255 & x3, x3 >> 16, v4, b6 + (2 * w4 - 1) * i3), n3(a3[o3 + 2 * w4 + 0], 255 & L4, L4 >> 16, v4, b6 + (2 * w4 + 0) * i3)), L4 = S3, A4 = _3;
+        }
+        1 & y4 || (x3 = 3 * L4 + A4 + 131074 >> 2, n3(t4[r3 + y4 - 1], 255 & x3, x3 >> 16, g4, m4 + (y4 - 1) * i3), null != a3 && (x3 = 3 * A4 + L4 + 131074 >> 2, n3(a3[o3 + y4 - 1], 255 & x3, x3 >> 16, v4, b6 + (y4 - 1) * i3)));
+      };
+    }
+    function br() {
+      vi[En] = bi, vi[qn] = wi, vi[Dn] = yi, vi[Rn] = Ni, vi[Tn] = Li, vi[Un] = Ai, vi[zn] = xi, vi[Hn] = wi, vi[Wn] = Ni, vi[Vn] = Li, vi[Gn] = Ai;
+    }
+    function yr(t4) {
+      return t4 & ~Fi ? 0 > t4 ? 0 : 255 : t4 >> Ii;
+    }
+    function wr(t4, e2) {
+      return yr((19077 * t4 >> 8) + (26149 * e2 >> 8) - 14234);
+    }
+    function Nr(t4, e2, r2) {
+      return yr((19077 * t4 >> 8) - (6419 * e2 >> 8) - (13320 * r2 >> 8) + 8708);
+    }
+    function Lr(t4, e2) {
+      return yr((19077 * t4 >> 8) + (33050 * e2 >> 8) - 17685);
+    }
+    function Ar(t4, e2, r2, n3, i3) {
+      n3[i3 + 0] = wr(t4, r2), n3[i3 + 1] = Nr(t4, e2, r2), n3[i3 + 2] = Lr(t4, e2);
+    }
+    function xr(t4, e2, r2, n3, i3) {
+      n3[i3 + 0] = Lr(t4, e2), n3[i3 + 1] = Nr(t4, e2, r2), n3[i3 + 2] = wr(t4, r2);
+    }
+    function Sr(t4, e2, r2, n3, i3) {
+      var a3 = Nr(t4, e2, r2);
+      e2 = a3 << 3 & 224 | Lr(t4, e2) >> 3, n3[i3 + 0] = 248 & wr(t4, r2) | a3 >> 5, n3[i3 + 1] = e2;
+    }
+    function _r(t4, e2, r2, n3, i3) {
+      var a3 = 240 & Lr(t4, e2) | 15;
+      n3[i3 + 0] = 240 & wr(t4, r2) | Nr(t4, e2, r2) >> 4, n3[i3 + 1] = a3;
+    }
+    function Pr(t4, e2, r2, n3, i3) {
+      n3[i3 + 0] = 255, Ar(t4, e2, r2, n3, i3 + 1);
+    }
+    function kr(t4, e2, r2, n3, i3) {
+      xr(t4, e2, r2, n3, i3), n3[i3 + 3] = 255;
+    }
+    function Ir(t4, e2, r2, n3, i3) {
+      Ar(t4, e2, r2, n3, i3), n3[i3 + 3] = 255;
+    }
+    function Vt2(t4, e2) {
+      return 0 > t4 ? 0 : t4 > e2 ? e2 : t4;
+    }
+    function Fr(e2, r2, n3) {
+      t3[e2] = function(t4, e3, i3, a3, o3, s3, c4, u4, h4) {
+        for (var l4 = u4 + (-2 & h4) * n3; u4 != l4; ) r2(t4[e3 + 0], i3[a3 + 0], o3[s3 + 0], c4, u4), r2(t4[e3 + 1], i3[a3 + 0], o3[s3 + 0], c4, u4 + n3), e3 += 2, ++a3, ++s3, u4 += 2 * n3;
+        1 & h4 && r2(t4[e3 + 0], i3[a3 + 0], o3[s3 + 0], c4, u4);
+      };
+    }
+    function Cr(t4, e2, r2) {
+      return 0 == r2 ? 0 == t4 ? 0 == e2 ? 6 : 5 : 0 == e2 ? 4 : 0 : r2;
+    }
+    function jr(t4, e2, r2, n3, i3) {
+      switch (t4 >>> 30) {
+        case 3:
+          on(e2, r2, n3, i3, 0);
+          break;
+        case 2:
+          sn(e2, r2, n3, i3);
+          break;
+        case 1:
+          un(e2, r2, n3, i3);
+      }
+    }
+    function Or(t4, e2) {
+      var r2, a3, o3 = e2.M, s3 = e2.Nb, c4 = t4.oc, u4 = t4.pc + 40, h4 = t4.oc, l4 = t4.pc + 584, f4 = t4.oc, d4 = t4.pc + 600;
+      for (r2 = 0; 16 > r2; ++r2) c4[u4 + 32 * r2 - 1] = 129;
+      for (r2 = 0; 8 > r2; ++r2) h4[l4 + 32 * r2 - 1] = 129, f4[d4 + 32 * r2 - 1] = 129;
+      for (0 < o3 ? c4[u4 - 1 - 32] = h4[l4 - 1 - 32] = f4[d4 - 1 - 32] = 129 : (i2(c4, u4 - 32 - 1, 127, 21), i2(h4, l4 - 32 - 1, 127, 9), i2(f4, d4 - 32 - 1, 127, 9)), a3 = 0; a3 < t4.za; ++a3) {
+        var p4 = e2.ya[e2.aa + a3];
+        if (0 < a3) {
+          for (r2 = -1; 16 > r2; ++r2) n2(c4, u4 + 32 * r2 - 4, c4, u4 + 32 * r2 + 12, 4);
+          for (r2 = -1; 8 > r2; ++r2) n2(h4, l4 + 32 * r2 - 4, h4, l4 + 32 * r2 + 4, 4), n2(f4, d4 + 32 * r2 - 4, f4, d4 + 32 * r2 + 4, 4);
+        }
+        var g4 = t4.Gd, m4 = t4.Hd + a3, v4 = p4.ad, b6 = p4.Hc;
+        if (0 < o3 && (n2(c4, u4 - 32, g4[m4].y, 0, 16), n2(h4, l4 - 32, g4[m4].f, 0, 8), n2(f4, d4 - 32, g4[m4].ea, 0, 8)), p4.Za) {
+          var y4 = c4, w4 = u4 - 32 + 16;
+          for (0 < o3 && (a3 >= t4.za - 1 ? i2(y4, w4, g4[m4].y[15], 4) : n2(y4, w4, g4[m4 + 1].y, 0, 4)), r2 = 0; 4 > r2; r2++) y4[w4 + 128 + r2] = y4[w4 + 256 + r2] = y4[w4 + 384 + r2] = y4[w4 + 0 + r2];
+          for (r2 = 0; 16 > r2; ++r2, b6 <<= 2) y4 = c4, w4 = u4 + Di[r2], fi[p4.Ob[r2]](y4, w4), jr(b6, v4, 16 * +r2, y4, w4);
+        } else if (y4 = Cr(a3, o3, p4.Ob[0]), li[y4](c4, u4), 0 != b6) for (r2 = 0; 16 > r2; ++r2, b6 <<= 2) jr(b6, v4, 16 * +r2, c4, u4 + Di[r2]);
+        for (r2 = p4.Gc, y4 = Cr(a3, o3, p4.Dd), di[y4](h4, l4), di[y4](f4, d4), b6 = v4, y4 = h4, w4 = l4, 255 & (p4 = r2 >> 0) && (170 & p4 ? cn(b6, 256, y4, w4) : hn(b6, 256, y4, w4)), p4 = f4, b6 = d4, 255 & (r2 >>= 8) && (170 & r2 ? cn(v4, 320, p4, b6) : hn(v4, 320, p4, b6)), o3 < t4.Ub - 1 && (n2(g4[m4].y, 0, c4, u4 + 480, 16), n2(g4[m4].f, 0, h4, l4 + 224, 8), n2(g4[m4].ea, 0, f4, d4 + 224, 8)), r2 = 8 * s3 * t4.B, g4 = t4.sa, m4 = t4.ta + 16 * a3 + 16 * s3 * t4.R, v4 = t4.qa, p4 = t4.ra + 8 * a3 + r2, b6 = t4.Ha, y4 = t4.Ia + 8 * a3 + r2, r2 = 0; 16 > r2; ++r2) n2(g4, m4 + r2 * t4.R, c4, u4 + 32 * r2, 16);
+        for (r2 = 0; 8 > r2; ++r2) n2(v4, p4 + r2 * t4.B, h4, l4 + 32 * r2, 8), n2(b6, y4 + r2 * t4.B, f4, d4 + 32 * r2, 8);
+      }
+    }
+    function Br(t4, n3, i3, a3, o3, s3, c4, u4, h4) {
+      var l4 = [0], f4 = [0], d4 = 0, p4 = null != h4 ? h4.kd : 0, g4 = null != h4 ? h4 : new nr();
+      if (null == t4 || 12 > i3) return 7;
+      g4.data = t4, g4.w = n3, g4.ha = i3, n3 = [n3], i3 = [i3], g4.gb = [g4.gb];
+      t: {
+        var m4 = n3, b6 = i3, y4 = g4.gb;
+        if (e(null != t4), e(null != b6), e(null != y4), y4[0] = 0, 12 <= b6[0] && !r(t4, m4[0], "RIFF")) {
+          if (r(t4, m4[0] + 8, "WEBP")) {
+            y4 = 3;
+            break t;
+          }
+          var w4 = j2(t4, m4[0] + 4);
+          if (12 > w4 || 4294967286 < w4) {
+            y4 = 3;
+            break t;
+          }
+          if (p4 && w4 > b6[0] - 8) {
+            y4 = 7;
+            break t;
+          }
+          y4[0] = w4, m4[0] += 12, b6[0] -= 12;
+        }
+        y4 = 0;
+      }
+      if (0 != y4) return y4;
+      for (w4 = 0 < g4.gb[0], i3 = i3[0]; ; ) {
+        t: {
+          var L4 = t4;
+          b6 = n3, y4 = i3;
+          var A4 = l4, x3 = f4, S3 = m4 = [0];
+          if ((k3 = d4 = [d4])[0] = 0, 8 > y4[0]) y4 = 7;
+          else {
+            if (!r(L4, b6[0], "VP8X")) {
+              if (10 != j2(L4, b6[0] + 4)) {
+                y4 = 3;
+                break t;
+              }
+              if (18 > y4[0]) {
+                y4 = 7;
+                break t;
+              }
+              var _3 = j2(L4, b6[0] + 8), P3 = 1 + C2(L4, b6[0] + 12);
+              if (2147483648 <= P3 * (L4 = 1 + C2(L4, b6[0] + 15))) {
+                y4 = 3;
+                break t;
+              }
+              null != S3 && (S3[0] = _3), null != A4 && (A4[0] = P3), null != x3 && (x3[0] = L4), b6[0] += 18, y4[0] -= 18, k3[0] = 1;
+            }
+            y4 = 0;
+          }
+        }
+        if (d4 = d4[0], m4 = m4[0], 0 != y4) return y4;
+        if (b6 = !!(2 & m4), !w4 && d4) return 3;
+        if (null != s3 && (s3[0] = !!(16 & m4)), null != c4 && (c4[0] = b6), null != u4 && (u4[0] = 0), c4 = l4[0], m4 = f4[0], d4 && b6 && null == h4) {
+          y4 = 0;
+          break;
+        }
+        if (4 > i3) {
+          y4 = 7;
+          break;
+        }
+        if (w4 && d4 || !w4 && !d4 && !r(t4, n3[0], "ALPH")) {
+          i3 = [i3], g4.na = [g4.na], g4.P = [g4.P], g4.Sa = [g4.Sa];
+          t: {
+            _3 = t4, y4 = n3, w4 = i3;
+            var k3 = g4.gb;
+            A4 = g4.na, x3 = g4.P, S3 = g4.Sa;
+            P3 = 22, e(null != _3), e(null != w4), L4 = y4[0];
+            var I3 = w4[0];
+            for (e(null != A4), e(null != S3), A4[0] = null, x3[0] = null, S3[0] = 0; ; ) {
+              if (y4[0] = L4, w4[0] = I3, 8 > I3) {
+                y4 = 7;
+                break t;
+              }
+              var F3 = j2(_3, L4 + 4);
+              if (4294967286 < F3) {
+                y4 = 3;
+                break t;
+              }
+              var O3 = 8 + F3 + 1 & -2;
+              if (P3 += O3, 0 < k3 && P3 > k3) {
+                y4 = 3;
+                break t;
+              }
+              if (!r(_3, L4, "VP8 ") || !r(_3, L4, "VP8L")) {
+                y4 = 0;
+                break t;
+              }
+              if (I3[0] < O3) {
+                y4 = 7;
+                break t;
+              }
+              r(_3, L4, "ALPH") || (A4[0] = _3, x3[0] = L4 + 8, S3[0] = F3), L4 += O3, I3 -= O3;
+            }
+          }
+          if (i3 = i3[0], g4.na = g4.na[0], g4.P = g4.P[0], g4.Sa = g4.Sa[0], 0 != y4) break;
+        }
+        i3 = [i3], g4.Ja = [g4.Ja], g4.xa = [g4.xa];
+        t: if (k3 = t4, y4 = n3, w4 = i3, A4 = g4.gb[0], x3 = g4.Ja, S3 = g4.xa, _3 = y4[0], L4 = !r(k3, _3, "VP8 "), P3 = !r(k3, _3, "VP8L"), e(null != k3), e(null != w4), e(null != x3), e(null != S3), 8 > w4[0]) y4 = 7;
+        else {
+          if (L4 || P3) {
+            if (k3 = j2(k3, _3 + 4), 12 <= A4 && k3 > A4 - 12) {
+              y4 = 3;
+              break t;
+            }
+            if (p4 && k3 > w4[0] - 8) {
+              y4 = 7;
+              break t;
+            }
+            x3[0] = k3, y4[0] += 8, w4[0] -= 8, S3[0] = P3;
+          } else S3[0] = 5 <= w4[0] && 47 == k3[_3 + 0] && !(k3[_3 + 4] >> 5), x3[0] = w4[0];
+          y4 = 0;
+        }
+        if (i3 = i3[0], g4.Ja = g4.Ja[0], g4.xa = g4.xa[0], n3 = n3[0], 0 != y4) break;
+        if (4294967286 < g4.Ja) return 3;
+        if (null == u4 || b6 || (u4[0] = g4.xa ? 2 : 1), c4 = [c4], m4 = [m4], g4.xa) {
+          if (5 > i3) {
+            y4 = 7;
+            break;
+          }
+          u4 = c4, p4 = m4, b6 = s3, null == t4 || 5 > i3 ? t4 = 0 : 5 <= i3 && 47 == t4[n3 + 0] && !(t4[n3 + 4] >> 5) ? (w4 = [0], k3 = [0], A4 = [0], v3(x3 = new N3(), t4, n3, i3), gt2(x3, w4, k3, A4) ? (null != u4 && (u4[0] = w4[0]), null != p4 && (p4[0] = k3[0]), null != b6 && (b6[0] = A4[0]), t4 = 1) : t4 = 0) : t4 = 0;
+        } else {
+          if (10 > i3) {
+            y4 = 7;
+            break;
+          }
+          u4 = m4, null == t4 || 10 > i3 || !Xt2(t4, n3 + 3, i3 - 3) ? t4 = 0 : (p4 = t4[n3 + 0] | t4[n3 + 1] << 8 | t4[n3 + 2] << 16, b6 = 16383 & (t4[n3 + 7] << 8 | t4[n3 + 6]), t4 = 16383 & (t4[n3 + 9] << 8 | t4[n3 + 8]), 1 & p4 || 3 < (p4 >> 1 & 7) || !(p4 >> 4 & 1) || p4 >> 5 >= g4.Ja || !b6 || !t4 ? t4 = 0 : (c4 && (c4[0] = b6), u4 && (u4[0] = t4), t4 = 1));
+        }
+        if (!t4) return 3;
+        if (c4 = c4[0], m4 = m4[0], d4 && (l4[0] != c4 || f4[0] != m4)) return 3;
+        null != h4 && (h4[0] = g4, h4.offset = n3 - h4.w, e(4294967286 > n3 - h4.w), e(h4.offset == h4.ha - i3));
+        break;
+      }
+      return 0 == y4 || 7 == y4 && d4 && null == h4 ? (null != s3 && (s3[0] |= null != g4.na && 0 < g4.na.length), null != a3 && (a3[0] = c4), null != o3 && (o3[0] = m4), 0) : y4;
+    }
+    function Mr(t4, e2, r2) {
+      var n3 = e2.width, i3 = e2.height, a3 = 0, o3 = 0, s3 = n3, c4 = i3;
+      if (e2.Da = null != t4 && 0 < t4.Da, e2.Da && (s3 = t4.cd, c4 = t4.bd, a3 = t4.v, o3 = t4.j, 11 > r2 || (a3 &= -2, o3 &= -2), 0 > a3 || 0 > o3 || 0 >= s3 || 0 >= c4 || a3 + s3 > n3 || o3 + c4 > i3)) return 0;
+      if (e2.v = a3, e2.j = o3, e2.va = a3 + s3, e2.o = o3 + c4, e2.U = s3, e2.T = c4, e2.da = null != t4 && 0 < t4.da, e2.da) {
+        if (!E2(s3, c4, r2 = [t4.ib], a3 = [t4.hb])) return 0;
+        e2.ib = r2[0], e2.hb = a3[0];
+      }
+      return e2.ob = null != t4 && t4.ob, e2.Kb = null == t4 || !t4.Sd, e2.da && (e2.ob = e2.ib < 3 * n3 / 4 && e2.hb < 3 * i3 / 4, e2.Kb = 0), 1;
+    }
+    function Er(t4) {
+      if (null == t4) return 2;
+      if (11 > t4.S) {
+        var e2 = t4.f.RGBA;
+        e2.fb += (t4.height - 1) * e2.A, e2.A = -e2.A;
+      } else e2 = t4.f.kb, t4 = t4.height, e2.O += (t4 - 1) * e2.fa, e2.fa = -e2.fa, e2.N += (t4 - 1 >> 1) * e2.Ab, e2.Ab = -e2.Ab, e2.W += (t4 - 1 >> 1) * e2.Db, e2.Db = -e2.Db, null != e2.F && (e2.J += (t4 - 1) * e2.lb, e2.lb = -e2.lb);
+      return 0;
+    }
+    function qr(t4, e2, r2, n3) {
+      if (null == n3 || 0 >= t4 || 0 >= e2) return 2;
+      if (null != r2) {
+        if (r2.Da) {
+          var i3 = r2.cd, o3 = r2.bd, s3 = -2 & r2.v, c4 = -2 & r2.j;
+          if (0 > s3 || 0 > c4 || 0 >= i3 || 0 >= o3 || s3 + i3 > t4 || c4 + o3 > e2) return 2;
+          t4 = i3, e2 = o3;
+        }
+        if (r2.da) {
+          if (!E2(t4, e2, i3 = [r2.ib], o3 = [r2.hb])) return 2;
+          t4 = i3[0], e2 = o3[0];
+        }
+      }
+      n3.width = t4, n3.height = e2;
+      t: {
+        var u4 = n3.width, h4 = n3.height;
+        if (t4 = n3.S, 0 >= u4 || 0 >= h4 || !(t4 >= En && 13 > t4)) t4 = 2;
+        else {
+          if (0 >= n3.Rd && null == n3.sd) {
+            s3 = o3 = i3 = e2 = 0;
+            var l4 = (c4 = u4 * zi[t4]) * h4;
+            if (11 > t4 || (o3 = (h4 + 1) / 2 * (e2 = (u4 + 1) / 2), 12 == t4 && (s3 = (i3 = u4) * h4)), null == (h4 = a2(l4 + 2 * o3 + s3))) {
+              t4 = 1;
+              break t;
+            }
+            n3.sd = h4, 11 > t4 ? ((u4 = n3.f.RGBA).eb = h4, u4.fb = 0, u4.A = c4, u4.size = l4) : ((u4 = n3.f.kb).y = h4, u4.O = 0, u4.fa = c4, u4.Fd = l4, u4.f = h4, u4.N = 0 + l4, u4.Ab = e2, u4.Cd = o3, u4.ea = h4, u4.W = 0 + l4 + o3, u4.Db = e2, u4.Ed = o3, 12 == t4 && (u4.F = h4, u4.J = 0 + l4 + 2 * o3), u4.Tc = s3, u4.lb = i3);
+          }
+          if (e2 = 1, i3 = n3.S, o3 = n3.width, s3 = n3.height, i3 >= En && 13 > i3) if (11 > i3) t4 = n3.f.RGBA, e2 &= (c4 = Math.abs(t4.A)) * (s3 - 1) + o3 <= t4.size, e2 &= c4 >= o3 * zi[i3], e2 &= null != t4.eb;
+          else {
+            t4 = n3.f.kb, c4 = (o3 + 1) / 2, l4 = (s3 + 1) / 2, u4 = Math.abs(t4.fa);
+            h4 = Math.abs(t4.Ab);
+            var f4 = Math.abs(t4.Db), d4 = Math.abs(t4.lb), p4 = d4 * (s3 - 1) + o3;
+            e2 &= u4 * (s3 - 1) + o3 <= t4.Fd, e2 &= h4 * (l4 - 1) + c4 <= t4.Cd, e2 = (e2 &= f4 * (l4 - 1) + c4 <= t4.Ed) & u4 >= o3 & h4 >= c4 & f4 >= c4, e2 &= null != t4.y, e2 &= null != t4.f, e2 &= null != t4.ea, 12 == i3 && (e2 &= d4 >= o3, e2 &= p4 <= t4.Tc, e2 &= null != t4.F);
+          }
+          else e2 = 0;
+          t4 = e2 ? 0 : 2;
+        }
+      }
+      return 0 != t4 || null != r2 && r2.fd && (t4 = Er(n3)), t4;
+    }
+    var Dr = 64, Rr = [0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215], Tr = 24, Ur = 32, zr = 8, Hr = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7];
+    R2("Predictor0", "PredictorAdd0"), t3.Predictor0 = function() {
+      return 4278190080;
+    }, t3.Predictor1 = function(t4) {
+      return t4;
+    }, t3.Predictor2 = function(t4, e2, r2) {
+      return e2[r2 + 0];
+    }, t3.Predictor3 = function(t4, e2, r2) {
+      return e2[r2 + 1];
+    }, t3.Predictor4 = function(t4, e2, r2) {
+      return e2[r2 - 1];
+    }, t3.Predictor5 = function(t4, e2, r2) {
+      return U2(U2(t4, e2[r2 + 1]), e2[r2 + 0]);
+    }, t3.Predictor6 = function(t4, e2, r2) {
+      return U2(t4, e2[r2 - 1]);
+    }, t3.Predictor7 = function(t4, e2, r2) {
+      return U2(t4, e2[r2 + 0]);
+    }, t3.Predictor8 = function(t4, e2, r2) {
+      return U2(e2[r2 - 1], e2[r2 + 0]);
+    }, t3.Predictor9 = function(t4, e2, r2) {
+      return U2(e2[r2 + 0], e2[r2 + 1]);
+    }, t3.Predictor10 = function(t4, e2, r2) {
+      return U2(U2(t4, e2[r2 - 1]), U2(e2[r2 + 0], e2[r2 + 1]));
+    }, t3.Predictor11 = function(t4, e2, r2) {
+      var n3 = e2[r2 + 0];
+      return 0 >= W2(n3 >> 24 & 255, t4 >> 24 & 255, (e2 = e2[r2 - 1]) >> 24 & 255) + W2(n3 >> 16 & 255, t4 >> 16 & 255, e2 >> 16 & 255) + W2(n3 >> 8 & 255, t4 >> 8 & 255, e2 >> 8 & 255) + W2(255 & n3, 255 & t4, 255 & e2) ? n3 : t4;
+    }, t3.Predictor12 = function(t4, e2, r2) {
+      var n3 = e2[r2 + 0];
+      return (z2((t4 >> 24 & 255) + (n3 >> 24 & 255) - ((e2 = e2[r2 - 1]) >> 24 & 255)) << 24 | z2((t4 >> 16 & 255) + (n3 >> 16 & 255) - (e2 >> 16 & 255)) << 16 | z2((t4 >> 8 & 255) + (n3 >> 8 & 255) - (e2 >> 8 & 255)) << 8 | z2((255 & t4) + (255 & n3) - (255 & e2))) >>> 0;
+    }, t3.Predictor13 = function(t4, e2, r2) {
+      var n3 = e2[r2 - 1];
+      return (H2((t4 = U2(t4, e2[r2 + 0])) >> 24 & 255, n3 >> 24 & 255) << 24 | H2(t4 >> 16 & 255, n3 >> 16 & 255) << 16 | H2(t4 >> 8 & 255, n3 >> 8 & 255) << 8 | H2(t4 >> 0 & 255, n3 >> 0 & 255)) >>> 0;
+    };
+    var Wr = t3.PredictorAdd0;
+    t3.PredictorAdd1 = V2, R2("Predictor2", "PredictorAdd2"), R2("Predictor3", "PredictorAdd3"), R2("Predictor4", "PredictorAdd4"), R2("Predictor5", "PredictorAdd5"), R2("Predictor6", "PredictorAdd6"), R2("Predictor7", "PredictorAdd7"), R2("Predictor8", "PredictorAdd8"), R2("Predictor9", "PredictorAdd9"), R2("Predictor10", "PredictorAdd10"), R2("Predictor11", "PredictorAdd11"), R2("Predictor12", "PredictorAdd12"), R2("Predictor13", "PredictorAdd13");
+    var Vr = t3.PredictorAdd2;
+    X2("ColorIndexInverseTransform", "MapARGB", "32b", function(t4) {
+      return t4 >> 8 & 255;
+    }, function(t4) {
+      return t4;
+    }), X2("VP8LColorIndexInverseTransformAlpha", "MapAlpha", "8b", function(t4) {
+      return t4;
+    }, function(t4) {
+      return t4 >> 8 & 255;
+    });
+    var Gr, Yr = t3.ColorIndexInverseTransform, Jr = t3.MapARGB, Xr = t3.VP8LColorIndexInverseTransformAlpha, Kr = t3.MapAlpha, Zr = t3.VP8LPredictorsAdd = [];
+    Zr.length = 16, (t3.VP8LPredictors = []).length = 16, (t3.VP8LPredictorsAdd_C = []).length = 16, (t3.VP8LPredictors_C = []).length = 16;
+    var $r, Qr, tn, en, rn, nn, an, on, sn, cn, un, hn, ln2, fn, dn, pn, gn, mn, vn, bn, yn, wn, Nn, Ln, An, xn, Sn, _n, Pn = a2(511), kn = a2(2041), In = a2(225), Fn = a2(767), Cn = 0, jn = kn, On = In, Bn = Fn, Mn = Pn, En = 0, qn = 1, Dn = 2, Rn = 3, Tn = 4, Un = 5, zn = 6, Hn = 7, Wn = 8, Vn = 9, Gn = 10, Yn = [2, 3, 7], Jn = [3, 3, 11], Xn = [280, 256, 256, 256, 40], Kn = [0, 1, 1, 1, 0], Zn = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], $n = [24, 7, 23, 25, 40, 6, 39, 41, 22, 26, 38, 42, 56, 5, 55, 57, 21, 27, 54, 58, 37, 43, 72, 4, 71, 73, 20, 28, 53, 59, 70, 74, 36, 44, 88, 69, 75, 52, 60, 3, 87, 89, 19, 29, 86, 90, 35, 45, 68, 76, 85, 91, 51, 61, 104, 2, 103, 105, 18, 30, 102, 106, 34, 46, 84, 92, 67, 77, 101, 107, 50, 62, 120, 1, 119, 121, 83, 93, 17, 31, 100, 108, 66, 78, 118, 122, 33, 47, 117, 123, 49, 63, 99, 109, 82, 94, 0, 116, 124, 65, 79, 16, 32, 98, 110, 48, 115, 125, 81, 95, 64, 114, 126, 97, 111, 80, 113, 127, 96, 112], Qn = [2954, 2956, 2958, 2962, 2970, 2986, 3018, 3082, 3212, 3468, 3980, 5004], ti = 8, ei = [4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157], ri = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284], ni = null, ii = [[173, 148, 140, 0], [176, 155, 140, 135, 0], [180, 157, 141, 134, 130, 0], [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]], ai = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15], oi = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9], si = [[[[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]], [[253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128], [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128], [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]], [[1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128], [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128], [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]], [[1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128], [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128], [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]], [[1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128], [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128], [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]], [[1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128], [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128], [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]], [[1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128], [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128], [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]], [[1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]]], [[[198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62], [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1], [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]], [[1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128], [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128], [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]], [[1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128], [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128], [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]], [[1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128], [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128], [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]], [[1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128], [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128], [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]], [[1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128], [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128], [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]], [[1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128], [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128], [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]], [[1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128], [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128], [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]]], [[[253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128], [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128], [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]], [[1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128], [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128], [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]], [[1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128], [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128], [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]], [[1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128], [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128], [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]], [[1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128], [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128], [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]], [[1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128], [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128], [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]], [[1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128], [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128], [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]], [[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]]], [[[202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255], [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128], [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]], [[1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128], [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128], [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]], [[1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128], [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128], [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]], [[1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128], [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128], [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]], [[1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128], [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128], [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]], [[1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128], [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128], [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]], [[1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128], [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128], [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]], [[1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]]]], ci = [[[231, 120, 48, 89, 115, 113, 120, 152, 112], [152, 179, 64, 126, 170, 118, 46, 70, 95], [175, 69, 143, 80, 85, 82, 72, 155, 103], [56, 58, 10, 171, 218, 189, 17, 13, 152], [114, 26, 17, 163, 44, 195, 21, 10, 173], [121, 24, 80, 195, 26, 62, 44, 64, 85], [144, 71, 10, 38, 171, 213, 144, 34, 26], [170, 46, 55, 19, 136, 160, 33, 206, 71], [63, 20, 8, 114, 114, 208, 12, 9, 226], [81, 40, 11, 96, 182, 84, 29, 16, 36]], [[134, 183, 89, 137, 98, 101, 106, 165, 148], [72, 187, 100, 130, 157, 111, 32, 75, 80], [66, 102, 167, 99, 74, 62, 40, 234, 128], [41, 53, 9, 178, 241, 141, 26, 8, 107], [74, 43, 26, 146, 73, 166, 49, 23, 157], [65, 38, 105, 160, 51, 52, 31, 115, 128], [104, 79, 12, 27, 217, 255, 87, 17, 7], [87, 68, 71, 44, 114, 51, 15, 186, 23], [47, 41, 14, 110, 182, 183, 21, 17, 194], [66, 45, 25, 102, 197, 189, 23, 18, 22]], [[88, 88, 147, 150, 42, 46, 45, 196, 205], [43, 97, 183, 117, 85, 38, 35, 179, 61], [39, 53, 200, 87, 26, 21, 43, 232, 171], [56, 34, 51, 104, 114, 102, 29, 93, 77], [39, 28, 85, 171, 58, 165, 90, 98, 64], [34, 22, 116, 206, 23, 34, 43, 166, 73], [107, 54, 32, 26, 51, 1, 81, 43, 31], [68, 25, 106, 22, 64, 171, 36, 225, 114], [34, 19, 21, 102, 132, 188, 16, 76, 124], [62, 18, 78, 95, 85, 57, 50, 48, 51]], [[193, 101, 35, 159, 215, 111, 89, 46, 111], [60, 148, 31, 172, 219, 228, 21, 18, 111], [112, 113, 77, 85, 179, 255, 38, 120, 114], [40, 42, 1, 196, 245, 209, 10, 25, 109], [88, 43, 29, 140, 166, 213, 37, 43, 154], [61, 63, 30, 155, 67, 45, 68, 1, 209], [100, 80, 8, 43, 154, 1, 51, 26, 71], [142, 78, 78, 16, 255, 128, 34, 197, 171], [41, 40, 5, 102, 211, 183, 4, 1, 221], [51, 50, 17, 168, 209, 192, 23, 25, 82]], [[138, 31, 36, 171, 27, 166, 38, 44, 229], [67, 87, 58, 169, 82, 115, 26, 59, 179], [63, 59, 90, 180, 59, 166, 93, 73, 154], [40, 40, 21, 116, 143, 209, 34, 39, 175], [47, 15, 16, 183, 34, 223, 49, 45, 183], [46, 17, 33, 183, 6, 98, 15, 32, 183], [57, 46, 22, 24, 128, 1, 54, 17, 37], [65, 32, 73, 115, 28, 128, 23, 128, 205], [40, 3, 9, 115, 51, 192, 18, 6, 223], [87, 37, 9, 115, 59, 77, 64, 21, 47]], [[104, 55, 44, 218, 9, 54, 53, 130, 226], [64, 90, 70, 205, 40, 41, 23, 26, 57], [54, 57, 112, 184, 5, 41, 38, 166, 213], [30, 34, 26, 133, 152, 116, 10, 32, 134], [39, 19, 53, 221, 26, 114, 32, 73, 255], [31, 9, 65, 234, 2, 15, 1, 118, 73], [75, 32, 12, 51, 192, 255, 160, 43, 51], [88, 31, 35, 67, 102, 85, 55, 186, 85], [56, 21, 23, 111, 59, 205, 45, 37, 192], [55, 38, 70, 124, 73, 102, 1, 34, 98]], [[125, 98, 42, 88, 104, 85, 117, 175, 82], [95, 84, 53, 89, 128, 100, 113, 101, 45], [75, 79, 123, 47, 51, 128, 81, 171, 1], [57, 17, 5, 71, 102, 57, 53, 41, 49], [38, 33, 13, 121, 57, 73, 26, 1, 85], [41, 10, 67, 138, 77, 110, 90, 47, 114], [115, 21, 2, 10, 102, 255, 166, 23, 6], [101, 29, 16, 10, 85, 128, 101, 196, 26], [57, 18, 10, 102, 102, 213, 34, 20, 43], [117, 20, 15, 36, 163, 128, 68, 1, 26]], [[102, 61, 71, 37, 34, 53, 31, 243, 192], [69, 60, 71, 38, 73, 119, 28, 222, 37], [68, 45, 128, 34, 1, 47, 11, 245, 171], [62, 17, 19, 70, 146, 85, 55, 62, 70], [37, 43, 37, 154, 100, 163, 85, 160, 1], [63, 9, 92, 136, 28, 64, 32, 201, 85], [75, 15, 9, 9, 64, 255, 184, 119, 16], [86, 6, 28, 5, 64, 255, 25, 248, 1], [56, 8, 17, 132, 137, 255, 55, 116, 128], [58, 15, 20, 82, 135, 57, 26, 121, 40]], [[164, 50, 31, 137, 154, 133, 25, 35, 218], [51, 103, 44, 131, 131, 123, 31, 6, 158], [86, 40, 64, 135, 148, 224, 45, 183, 128], [22, 26, 17, 131, 240, 154, 14, 1, 209], [45, 16, 21, 91, 64, 222, 7, 1, 197], [56, 21, 39, 155, 60, 138, 23, 102, 213], [83, 12, 13, 54, 192, 255, 68, 47, 28], [85, 26, 85, 85, 128, 128, 32, 146, 171], [18, 11, 7, 63, 144, 171, 4, 4, 246], [35, 27, 10, 146, 174, 171, 12, 26, 128]], [[190, 80, 35, 99, 180, 80, 126, 54, 45], [85, 126, 47, 87, 176, 51, 41, 20, 32], [101, 75, 128, 139, 118, 146, 116, 128, 85], [56, 41, 15, 176, 236, 85, 37, 9, 62], [71, 30, 17, 119, 118, 255, 17, 18, 138], [101, 38, 60, 138, 55, 70, 43, 26, 142], [146, 36, 19, 30, 171, 255, 97, 27, 20], [138, 45, 61, 62, 219, 1, 81, 188, 64], [32, 41, 20, 117, 151, 142, 20, 21, 163], [112, 19, 12, 61, 195, 128, 48, 4, 24]]], ui = [[[[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255], [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255], [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255], [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255], [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255], [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255], [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]], [[[217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255], [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]], [[255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]], [[255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255], [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255], [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255], [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]], [[[186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255], [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255], [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]], [[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]], [[255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]], [[[248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255], [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255], [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255], [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]], [[255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255], [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255], [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]], [[255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255], [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255], [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255], [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255], [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255], [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]]], hi = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0], li = [], fi = [], di = [], pi = 1, gi = 2, mi = [], vi = [];
+    vr("UpsampleRgbLinePair", Ar, 3), vr("UpsampleBgrLinePair", xr, 3), vr("UpsampleRgbaLinePair", Ir, 4), vr("UpsampleBgraLinePair", kr, 4), vr("UpsampleArgbLinePair", Pr, 4), vr("UpsampleRgba4444LinePair", _r, 2), vr("UpsampleRgb565LinePair", Sr, 2);
+    var bi = t3.UpsampleRgbLinePair, yi = t3.UpsampleBgrLinePair, wi = t3.UpsampleRgbaLinePair, Ni = t3.UpsampleBgraLinePair, Li = t3.UpsampleArgbLinePair, Ai = t3.UpsampleRgba4444LinePair, xi = t3.UpsampleRgb565LinePair, Si = 16, _i = 1 << Si - 1, Pi = -227, ki = 482, Ii = 6, Fi = (256 << Ii) - 1, Ci = 0, ji = a2(256), Oi = a2(256), Bi = a2(256), Mi = a2(256), Ei = a2(ki - Pi), qi = a2(ki - Pi);
+    Fr("YuvToRgbRow", Ar, 3), Fr("YuvToBgrRow", xr, 3), Fr("YuvToRgbaRow", Ir, 4), Fr("YuvToBgraRow", kr, 4), Fr("YuvToArgbRow", Pr, 4), Fr("YuvToRgba4444Row", _r, 2), Fr("YuvToRgb565Row", Sr, 2);
+    var Di = [0, 4, 8, 12, 128, 132, 136, 140, 256, 260, 264, 268, 384, 388, 392, 396], Ri = [0, 2, 8], Ti = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1], Ui = 1;
+    this.WebPDecodeRGBA = function(t4, r2, n3, i3, a3) {
+      var o3 = qn, s3 = new rr(), c4 = new ot2();
+      s3.ba = c4, c4.S = o3, c4.width = [c4.width], c4.height = [c4.height];
+      var u4 = c4.width, h4 = c4.height, l4 = new st2();
+      if (null == l4 || null == t4) var f4 = 2;
+      else e(null != l4), f4 = Br(t4, r2, n3, l4.width, l4.height, l4.Pd, l4.Qd, l4.format, null);
+      if (0 != f4 ? u4 = 0 : (null != u4 && (u4[0] = l4.width[0]), null != h4 && (h4[0] = l4.height[0]), u4 = 1), u4) {
+        c4.width = c4.width[0], c4.height = c4.height[0], null != i3 && (i3[0] = c4.width), null != a3 && (a3[0] = c4.height);
+        t: {
+          if (i3 = new Gt2(), (a3 = new nr()).data = t4, a3.w = r2, a3.ha = n3, a3.kd = 1, r2 = [0], e(null != a3), (0 == (t4 = Br(a3.data, a3.w, a3.ha, null, null, null, r2, null, a3)) || 7 == t4) && r2[0] && (t4 = 4), 0 == (r2 = t4)) {
+            if (e(null != s3), i3.data = a3.data, i3.w = a3.w + a3.offset, i3.ha = a3.ha - a3.offset, i3.put = dt2, i3.ac = ft2, i3.bc = pt2, i3.ma = s3, a3.xa) {
+              if (null == (t4 = kt2())) {
+                s3 = 1;
+                break t;
+              }
+              if (function(t5, r3) {
+                var n4 = [0], i4 = [0], a4 = [0];
+                e: for (; ; ) {
+                  if (null == t5) return 0;
+                  if (null == r3) return t5.a = 2, 0;
+                  if (t5.l = r3, t5.a = 0, v3(t5.m, r3.data, r3.w, r3.ha), !gt2(t5.m, n4, i4, a4)) {
+                    t5.a = 3;
+                    break e;
+                  }
+                  if (t5.xb = gi, r3.width = n4[0], r3.height = i4[0], !It2(n4[0], i4[0], 1, t5, null)) break e;
+                  return 1;
+                }
+                return e(0 != t5.a), 0;
+              }(t4, i3)) {
+                if (i3 = 0 == (r2 = qr(i3.width, i3.height, s3.Oa, s3.ba))) {
+                  e: {
+                    i3 = t4;
+                    r: for (; ; ) {
+                      if (null == i3) {
+                        i3 = 0;
+                        break e;
+                      }
+                      if (e(null != i3.s.yc), e(null != i3.s.Ya), e(0 < i3.s.Wb), e(null != (n3 = i3.l)), e(null != (a3 = n3.ma)), 0 != i3.xb) {
+                        if (i3.ca = a3.ba, i3.tb = a3.tb, e(null != i3.ca), !Mr(a3.Oa, n3, Rn)) {
+                          i3.a = 2;
+                          break r;
+                        }
+                        if (!Ft2(i3, n3.width)) break r;
+                        if (n3.da) break r;
+                        if ((n3.da || nt2(i3.ca.S)) && mr(), 11 > i3.ca.S || (alert("todo:WebPInitConvertARGBToYUV"), null != i3.ca.f.kb.F && mr()), i3.Pb && 0 < i3.s.ua && null == i3.s.vb.X && !O2(i3.s.vb, i3.s.Wa.Xa)) {
+                          i3.a = 1;
+                          break r;
+                        }
+                        i3.xb = 0;
+                      }
+                      if (!_t2(i3, i3.V, i3.Ba, i3.c, i3.i, n3.o, Lt2)) break r;
+                      a3.Dc = i3.Ma, i3 = 1;
+                      break e;
+                    }
+                    e(0 != i3.a), i3 = 0;
+                  }
+                  i3 = !i3;
+                }
+                i3 && (r2 = t4.a);
+              } else r2 = t4.a;
+            } else {
+              if (null == (t4 = new Yt2())) {
+                s3 = 1;
+                break t;
+              }
+              if (t4.Fa = a3.na, t4.P = a3.P, t4.qc = a3.Sa, Kt2(t4, i3)) {
+                if (0 == (r2 = qr(i3.width, i3.height, s3.Oa, s3.ba))) {
+                  if (t4.Aa = 0, n3 = s3.Oa, e(null != (a3 = t4)), null != n3) {
+                    if (0 < (u4 = 0 > (u4 = n3.Md) ? 0 : 100 < u4 ? 255 : 255 * u4 / 100)) {
+                      for (h4 = l4 = 0; 4 > h4; ++h4) 12 > (f4 = a3.pb[h4]).lc && (f4.ia = u4 * Ti[0 > f4.lc ? 0 : f4.lc] >> 3), l4 |= f4.ia;
+                      l4 && (alert("todo:VP8InitRandom"), a3.ia = 1);
+                    }
+                    a3.Ga = n3.Id, 100 < a3.Ga ? a3.Ga = 100 : 0 > a3.Ga && (a3.Ga = 0);
+                  }
+                  Qt2(t4, i3) || (r2 = t4.a);
+                }
+              } else r2 = t4.a;
+            }
+            0 == r2 && null != s3.Oa && s3.Oa.fd && (r2 = Er(s3.ba));
+          }
+          s3 = r2;
+        }
+        o3 = 0 != s3 ? null : 11 > o3 ? c4.f.RGBA.eb : c4.f.kb.y;
+      } else o3 = null;
+      return o3;
+    };
+    var zi = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];
+  };
+  function u2(t3, e2) {
+    for (var r2 = "", n3 = 0; n3 < 4; n3++) r2 += String.fromCharCode(t3[e2++]);
+    return r2;
+  }
+  function h2(t3, e2) {
+    return (t3[e2 + 0] << 0 | t3[e2 + 1] << 8 | t3[e2 + 2] << 16) >>> 0;
+  }
+  function l2(t3, e2) {
+    return (t3[e2 + 0] << 0 | t3[e2 + 1] << 8 | t3[e2 + 2] << 16 | t3[e2 + 3] << 24) >>> 0;
+  }
+  new c2();
+  var f2 = [0], d2 = [0], p2 = [], g2 = new c2(), m2 = t2, v2 = function(t3, e2) {
+    var r2 = {}, n3 = 0, i3 = false, a3 = 0, o3 = 0;
+    if (r2.frames = [], !/** @license
+       * Copyright (c) 2017 Dominik Homberger
+      Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+      The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+      https://webpjs.appspot.com
+      WebPRiffParser dominikhlbg@gmail.com
+      */
+    function(t4, e3, r3, n4) {
+      for (var i4 = 0; i4 < n4; i4++) if (t4[e3 + i4] != r3.charCodeAt(i4)) return true;
+      return false;
+    }(t3, e2, "RIFF", 4)) {
+      var s3, c3;
+      l2(t3, e2 += 4);
+      for (e2 += 8; e2 < t3.length; ) {
+        var f3 = u2(t3, e2), d3 = l2(t3, e2 += 4);
+        e2 += 4;
+        var p3 = d3 + (1 & d3);
+        switch (f3) {
+          case "VP8 ":
+          case "VP8L":
+            void 0 === r2.frames[n3] && (r2.frames[n3] = {});
+            (v3 = r2.frames[n3]).src_off = i3 ? o3 : e2 - 8, v3.src_size = a3 + d3 + 8, n3++, i3 && (i3 = false, a3 = 0, o3 = 0);
+            break;
+          case "VP8X":
+            (v3 = r2.header = {}).feature_flags = t3[e2];
+            var g3 = e2 + 4;
+            v3.canvas_width = 1 + h2(t3, g3);
+            g3 += 3;
+            v3.canvas_height = 1 + h2(t3, g3);
+            g3 += 3;
+            break;
+          case "ALPH":
+            i3 = true, a3 = p3 + 8, o3 = e2 - 8;
+            break;
+          case "ANIM":
+            (v3 = r2.header).bgcolor = l2(t3, e2);
+            g3 = e2 + 4;
+            v3.loop_count = (s3 = t3)[(c3 = g3) + 0] << 0 | s3[c3 + 1] << 8;
+            g3 += 2;
+            break;
+          case "ANMF":
+            var m3, v3;
+            (v3 = r2.frames[n3] = {}).offset_x = 2 * h2(t3, e2), e2 += 3, v3.offset_y = 2 * h2(t3, e2), e2 += 3, v3.width = 1 + h2(t3, e2), e2 += 3, v3.height = 1 + h2(t3, e2), e2 += 3, v3.duration = h2(t3, e2), e2 += 3, m3 = t3[e2++], v3.dispose = 1 & m3, v3.blend = m3 >> 1 & 1;
+        }
+        "ANMF" != f3 && (e2 += p3);
+      }
+      return r2;
+    }
+  }(m2, 0);
+  v2.response = m2, v2.rgbaoutput = true, v2.dataurl = false;
+  var b3 = v2.header ? v2.header : null, y2 = v2.frames ? v2.frames : null;
+  if (b3) {
+    b3.loop_counter = b3.loop_count, f2 = [b3.canvas_height], d2 = [b3.canvas_width];
+    for (var w2 = 0; w2 < y2.length && 0 != y2[w2].blend; w2++) ;
+  }
+  var N2 = y2[0], L2 = g2.WebPDecodeRGBA(m2, N2.src_off, N2.src_size, d2, f2);
+  N2.rgba = L2, N2.imgwidth = d2[0], N2.imgheight = f2[0];
+  for (var A2 = 0; A2 < d2[0] * f2[0] * 4; A2++) p2[A2] = L2[A2];
+  return this.width = d2, this.height = f2, this.data = p2, this;
+}
+!function(t2) {
+  var r = function() {
+    return "function" == typeof zlibSync;
+  }, n2 = function(r2, n3, a3, h3) {
+    var l3 = 4, f3 = s2;
+    switch (h3) {
+      case t2.image_compression.FAST:
+        l3 = 1, f3 = o2;
+        break;
+      case t2.image_compression.MEDIUM:
+        l3 = 6, f3 = c2;
+        break;
+      case t2.image_compression.SLOW:
+        l3 = 9, f3 = u2;
+    }
+    r2 = i2(r2, n3, a3, f3);
+    var d2 = zlibSync(r2, { level: l3 });
+    return t2.__addimage__.arrayBufferToBinaryString(d2);
+  }, i2 = function(t3, e, r2, n3) {
+    for (var i3, a3, o3, s3 = t3.length / e, c3 = new Uint8Array(t3.length + s3), u3 = l2(), h3 = 0; h3 < s3; h3 += 1) {
+      if (o3 = h3 * e, i3 = t3.subarray(o3, o3 + e), n3) c3.set(n3(i3, r2, a3), o3 + h3);
+      else {
+        for (var d2, p2 = u3.length, g2 = []; d2 < p2; d2 += 1) g2[d2] = u3[d2](i3, r2, a3);
+        var m2 = f2(g2.concat());
+        c3.set(g2[m2], o3 + h3);
+      }
+      a3 = i3;
+    }
+    return c3;
+  }, a2 = function(t3) {
+    var e = Array.apply([], t3);
+    return e.unshift(0), e;
+  }, o2 = function(t3, e) {
+    var r2, n3 = [], i3 = t3.length;
+    n3[0] = 1;
+    for (var a3 = 0; a3 < i3; a3 += 1) r2 = t3[a3 - e] || 0, n3[a3 + 1] = t3[a3] - r2 + 256 & 255;
+    return n3;
+  }, s2 = function(t3, e, r2) {
+    var n3, i3 = [], a3 = t3.length;
+    i3[0] = 2;
+    for (var o3 = 0; o3 < a3; o3 += 1) n3 = r2 && r2[o3] || 0, i3[o3 + 1] = t3[o3] - n3 + 256 & 255;
+    return i3;
+  }, c2 = function(t3, e, r2) {
+    var n3, i3, a3 = [], o3 = t3.length;
+    a3[0] = 3;
+    for (var s3 = 0; s3 < o3; s3 += 1) n3 = t3[s3 - e] || 0, i3 = r2 && r2[s3] || 0, a3[s3 + 1] = t3[s3] + 256 - (n3 + i3 >>> 1) & 255;
+    return a3;
+  }, u2 = function(t3, e, r2) {
+    var n3, i3, a3, o3, s3 = [], c3 = t3.length;
+    s3[0] = 4;
+    for (var u3 = 0; u3 < c3; u3 += 1) n3 = t3[u3 - e] || 0, i3 = r2 && r2[u3] || 0, a3 = r2 && r2[u3 - e] || 0, o3 = h2(n3, i3, a3), s3[u3 + 1] = t3[u3] - o3 + 256 & 255;
+    return s3;
+  }, h2 = function(t3, e, r2) {
+    if (t3 === e && e === r2) return t3;
+    var n3 = Math.abs(e - r2), i3 = Math.abs(t3 - r2), a3 = Math.abs(t3 + e - r2 - r2);
+    return n3 <= i3 && n3 <= a3 ? t3 : i3 <= a3 ? e : r2;
+  }, l2 = function() {
+    return [a2, o2, s2, c2, u2];
+  }, f2 = function(t3) {
+    var e = t3.map(function(t4) {
+      return t4.reduce(function(t5, e2) {
+        return t5 + Math.abs(e2);
+      }, 0);
+    });
+    return e.indexOf(Math.min.apply(null, e));
+  };
+  t2.processPNG = function(e, i3, a3, o3) {
+    var s3, c3, u3, h3, l3, f3, d2, p2, g2, m2, v2, b3, y2, w2, N2, L2 = this.decode.FLATE_DECODE, A2 = "";
+    if (this.__addimage__.isArrayBuffer(e) && (e = new Uint8Array(e)), this.__addimage__.isArrayBufferView(e)) {
+      if (e = (u3 = new Kt(e)).imgData, c3 = u3.bits, s3 = u3.colorSpace, l3 = u3.colors, -1 !== [4, 6].indexOf(u3.colorType)) {
+        if (8 === u3.bits) {
+          g2 = (p2 = 32 == u3.pixelBitlength ? new Uint32Array(u3.decodePixels().buffer) : 16 == u3.pixelBitlength ? new Uint16Array(u3.decodePixels().buffer) : new Uint8Array(u3.decodePixels().buffer)).length, v2 = new Uint8Array(g2 * u3.colors), m2 = new Uint8Array(g2);
+          var x2, S2 = u3.pixelBitlength - u3.bits;
+          for (w2 = 0, N2 = 0; w2 < g2; w2++) {
+            for (y2 = p2[w2], x2 = 0; x2 < S2; ) v2[N2++] = y2 >>> x2 & 255, x2 += u3.bits;
+            m2[w2] = y2 >>> x2 & 255;
+          }
+        }
+        if (16 === u3.bits) {
+          g2 = (p2 = new Uint32Array(u3.decodePixels().buffer)).length, v2 = new Uint8Array(g2 * (32 / u3.pixelBitlength) * u3.colors), m2 = new Uint8Array(g2 * (32 / u3.pixelBitlength)), b3 = u3.colors > 1, w2 = 0, N2 = 0;
+          for (var _2 = 0; w2 < g2; ) y2 = p2[w2++], v2[N2++] = y2 >>> 0 & 255, b3 && (v2[N2++] = y2 >>> 16 & 255, y2 = p2[w2++], v2[N2++] = y2 >>> 0 & 255), m2[_2++] = y2 >>> 16 & 255;
+          c3 = 8;
+        }
+        o3 !== t2.image_compression.NONE && r() ? (e = n2(v2, u3.width * u3.colors, u3.colors, o3), d2 = n2(m2, u3.width, 1, o3)) : (e = v2, d2 = m2, L2 = void 0);
+      }
+      if (3 === u3.colorType && (s3 = this.color_spaces.INDEXED, f3 = u3.palette, u3.transparency.indexed)) {
+        var P2 = u3.transparency.indexed, k2 = 0;
+        for (w2 = 0, g2 = P2.length; w2 < g2; ++w2) k2 += P2[w2];
+        if ((k2 /= 255) === g2 - 1 && -1 !== P2.indexOf(0)) h3 = [P2.indexOf(0)];
+        else if (k2 !== g2) {
+          for (p2 = u3.decodePixels(), m2 = new Uint8Array(p2.length), w2 = 0, g2 = p2.length; w2 < g2; w2++) m2[w2] = P2[p2[w2]];
+          d2 = n2(m2, u3.width, 1);
+        }
+      }
+      var I2 = function(e2) {
+        var r2;
+        switch (e2) {
+          case t2.image_compression.FAST:
+            r2 = 11;
+            break;
+          case t2.image_compression.MEDIUM:
+            r2 = 13;
+            break;
+          case t2.image_compression.SLOW:
+            r2 = 14;
+            break;
+          default:
+            r2 = 12;
+        }
+        return r2;
+      }(o3);
+      return L2 === this.decode.FLATE_DECODE && (A2 = "/Predictor " + I2 + " "), A2 += "/Colors " + l3 + " /BitsPerComponent " + c3 + " /Columns " + u3.width, (this.__addimage__.isArrayBuffer(e) || this.__addimage__.isArrayBufferView(e)) && (e = this.__addimage__.arrayBufferToBinaryString(e)), (d2 && this.__addimage__.isArrayBuffer(d2) || this.__addimage__.isArrayBufferView(d2)) && (d2 = this.__addimage__.arrayBufferToBinaryString(d2)), { alias: a3, data: e, index: i3, filter: L2, decodeParameters: A2, transparency: h3, palette: f3, sMask: d2, predictor: I2, width: u3.width, height: u3.height, bitsPerComponent: c3, colorSpace: s3 };
+    }
+  };
+}(E.API), function(t2) {
+  t2.processGIF89A = function(e, r, n2, i2) {
+    var a2 = new Zt(e), o2 = a2.width, s2 = a2.height, c2 = [];
+    a2.decodeAndBlitFrameRGBA(0, c2);
+    var u2 = { data: c2, width: o2, height: s2 }, h2 = new Qt(100).encode(u2, 100);
+    return t2.processJPEG.call(this, h2, r, n2, i2);
+  }, t2.processGIF87A = t2.processGIF89A;
+}(E.API), te2.prototype.parseHeader = function() {
+  if (this.fileSize = this.datav.getUint32(this.pos, true), this.pos += 4, this.reserved = this.datav.getUint32(this.pos, true), this.pos += 4, this.offset = this.datav.getUint32(this.pos, true), this.pos += 4, this.headerSize = this.datav.getUint32(this.pos, true), this.pos += 4, this.width = this.datav.getUint32(this.pos, true), this.pos += 4, this.height = this.datav.getInt32(this.pos, true), this.pos += 4, this.planes = this.datav.getUint16(this.pos, true), this.pos += 2, this.bitPP = this.datav.getUint16(this.pos, true), this.pos += 2, this.compress = this.datav.getUint32(this.pos, true), this.pos += 4, this.rawSize = this.datav.getUint32(this.pos, true), this.pos += 4, this.hr = this.datav.getUint32(this.pos, true), this.pos += 4, this.vr = this.datav.getUint32(this.pos, true), this.pos += 4, this.colors = this.datav.getUint32(this.pos, true), this.pos += 4, this.importantColors = this.datav.getUint32(this.pos, true), this.pos += 4, 16 === this.bitPP && this.is_with_alpha && (this.bitPP = 15), this.bitPP < 15) {
+    var t2 = 0 === this.colors ? 1 << this.bitPP : this.colors;
+    this.palette = new Array(t2);
+    for (var e = 0; e < t2; e++) {
+      var r = this.datav.getUint8(this.pos++, true), n2 = this.datav.getUint8(this.pos++, true), i2 = this.datav.getUint8(this.pos++, true), a2 = this.datav.getUint8(this.pos++, true);
+      this.palette[e] = { red: i2, green: n2, blue: r, quad: a2 };
+    }
+  }
+  this.height < 0 && (this.height *= -1, this.bottom_up = false);
+}, te2.prototype.parseBGR = function() {
+  this.pos = this.offset;
+  try {
+    var t2 = "bit" + this.bitPP, e = this.width * this.height * 4;
+    this.data = new Uint8Array(e), this[t2]();
+  } catch (t3) {
+    a.log("bit decode error:" + t3);
+  }
+}, te2.prototype.bit1 = function() {
+  var t2, e = Math.ceil(this.width / 8), r = e % 4;
+  for (t2 = this.height - 1; t2 >= 0; t2--) {
+    for (var n2 = this.bottom_up ? t2 : this.height - 1 - t2, i2 = 0; i2 < e; i2++) for (var a2 = this.datav.getUint8(this.pos++, true), o2 = n2 * this.width * 4 + 8 * i2 * 4, s2 = 0; s2 < 8 && 8 * i2 + s2 < this.width; s2++) {
+      var c2 = this.palette[a2 >> 7 - s2 & 1];
+      this.data[o2 + 4 * s2] = c2.blue, this.data[o2 + 4 * s2 + 1] = c2.green, this.data[o2 + 4 * s2 + 2] = c2.red, this.data[o2 + 4 * s2 + 3] = 255;
+    }
+    0 !== r && (this.pos += 4 - r);
+  }
+}, te2.prototype.bit4 = function() {
+  for (var t2 = Math.ceil(this.width / 2), e = t2 % 4, r = this.height - 1; r >= 0; r--) {
+    for (var n2 = this.bottom_up ? r : this.height - 1 - r, i2 = 0; i2 < t2; i2++) {
+      var a2 = this.datav.getUint8(this.pos++, true), o2 = n2 * this.width * 4 + 2 * i2 * 4, s2 = a2 >> 4, c2 = 15 & a2, u2 = this.palette[s2];
+      if (this.data[o2] = u2.blue, this.data[o2 + 1] = u2.green, this.data[o2 + 2] = u2.red, this.data[o2 + 3] = 255, 2 * i2 + 1 >= this.width) break;
+      u2 = this.palette[c2], this.data[o2 + 4] = u2.blue, this.data[o2 + 4 + 1] = u2.green, this.data[o2 + 4 + 2] = u2.red, this.data[o2 + 4 + 3] = 255;
+    }
+    0 !== e && (this.pos += 4 - e);
+  }
+}, te2.prototype.bit8 = function() {
+  for (var t2 = this.width % 4, e = this.height - 1; e >= 0; e--) {
+    for (var r = this.bottom_up ? e : this.height - 1 - e, n2 = 0; n2 < this.width; n2++) {
+      var i2 = this.datav.getUint8(this.pos++, true), a2 = r * this.width * 4 + 4 * n2;
+      if (i2 < this.palette.length) {
+        var o2 = this.palette[i2];
+        this.data[a2] = o2.red, this.data[a2 + 1] = o2.green, this.data[a2 + 2] = o2.blue, this.data[a2 + 3] = 255;
+      } else this.data[a2] = 255, this.data[a2 + 1] = 255, this.data[a2 + 2] = 255, this.data[a2 + 3] = 255;
+    }
+    0 !== t2 && (this.pos += 4 - t2);
+  }
+}, te2.prototype.bit15 = function() {
+  for (var t2 = this.width % 3, e = parseInt("11111", 2), r = this.height - 1; r >= 0; r--) {
+    for (var n2 = this.bottom_up ? r : this.height - 1 - r, i2 = 0; i2 < this.width; i2++) {
+      var a2 = this.datav.getUint16(this.pos, true);
+      this.pos += 2;
+      var o2 = (a2 & e) / e * 255 | 0, s2 = (a2 >> 5 & e) / e * 255 | 0, c2 = (a2 >> 10 & e) / e * 255 | 0, u2 = a2 >> 15 ? 255 : 0, h2 = n2 * this.width * 4 + 4 * i2;
+      this.data[h2] = c2, this.data[h2 + 1] = s2, this.data[h2 + 2] = o2, this.data[h2 + 3] = u2;
+    }
+    this.pos += t2;
+  }
+}, te2.prototype.bit16 = function() {
+  for (var t2 = this.width % 3, e = parseInt("11111", 2), r = parseInt("111111", 2), n2 = this.height - 1; n2 >= 0; n2--) {
+    for (var i2 = this.bottom_up ? n2 : this.height - 1 - n2, a2 = 0; a2 < this.width; a2++) {
+      var o2 = this.datav.getUint16(this.pos, true);
+      this.pos += 2;
+      var s2 = (o2 & e) / e * 255 | 0, c2 = (o2 >> 5 & r) / r * 255 | 0, u2 = (o2 >> 11) / e * 255 | 0, h2 = i2 * this.width * 4 + 4 * a2;
+      this.data[h2] = u2, this.data[h2 + 1] = c2, this.data[h2 + 2] = s2, this.data[h2 + 3] = 255;
+    }
+    this.pos += t2;
+  }
+}, te2.prototype.bit24 = function() {
+  for (var t2 = this.height - 1; t2 >= 0; t2--) {
+    for (var e = this.bottom_up ? t2 : this.height - 1 - t2, r = 0; r < this.width; r++) {
+      var n2 = this.datav.getUint8(this.pos++, true), i2 = this.datav.getUint8(this.pos++, true), a2 = this.datav.getUint8(this.pos++, true), o2 = e * this.width * 4 + 4 * r;
+      this.data[o2] = a2, this.data[o2 + 1] = i2, this.data[o2 + 2] = n2, this.data[o2 + 3] = 255;
+    }
+    this.pos += this.width % 4;
+  }
+}, te2.prototype.bit32 = function() {
+  for (var t2 = this.height - 1; t2 >= 0; t2--) for (var e = this.bottom_up ? t2 : this.height - 1 - t2, r = 0; r < this.width; r++) {
+    var n2 = this.datav.getUint8(this.pos++, true), i2 = this.datav.getUint8(this.pos++, true), a2 = this.datav.getUint8(this.pos++, true), o2 = this.datav.getUint8(this.pos++, true), s2 = e * this.width * 4 + 4 * r;
+    this.data[s2] = a2, this.data[s2 + 1] = i2, this.data[s2 + 2] = n2, this.data[s2 + 3] = o2;
+  }
+}, te2.prototype.getData = function() {
+  return this.data;
+}, /**
+ * @license
+ * Copyright (c) 2018 Aras Abbasi
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  t2.processBMP = function(e, r, n2, i2) {
+    var a2 = new te2(e, false), o2 = a2.width, s2 = a2.height, c2 = { data: a2.getData(), width: o2, height: s2 }, u2 = new Qt(100).encode(c2, 100);
+    return t2.processJPEG.call(this, u2, r, n2, i2);
+  };
+}(E.API), ee.prototype.getData = function() {
+  return this.data;
+}, /**
+ * @license
+ * Copyright (c) 2019 Aras Abbasi
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  t2.processWEBP = function(e, r, n2, i2) {
+    var a2 = new ee(e, false), o2 = a2.width, s2 = a2.height, c2 = { data: a2.getData(), width: o2, height: s2 }, u2 = new Qt(100).encode(c2, 100);
+    return t2.processJPEG.call(this, u2, r, n2, i2);
+  };
+}(E.API), E.API.processRGBA = function(t2, e, r) {
+  for (var n2 = t2.data, i2 = n2.length, a2 = new Uint8Array(i2 / 4 * 3), o2 = new Uint8Array(i2 / 4), s2 = 0, c2 = 0, u2 = 0; u2 < i2; u2 += 4) {
+    var h2 = n2[u2], l2 = n2[u2 + 1], f2 = n2[u2 + 2], d2 = n2[u2 + 3];
+    a2[s2++] = h2, a2[s2++] = l2, a2[s2++] = f2, o2[c2++] = d2;
+  }
+  var p2 = this.__addimage__.arrayBufferToBinaryString(a2);
+  return { alpha: this.__addimage__.arrayBufferToBinaryString(o2), data: p2, index: e, alias: r, colorSpace: "DeviceRGB", bitsPerComponent: 8, width: t2.width, height: t2.height };
+}, E.API.setLanguage = function(t2) {
+  return void 0 === this.internal.languageSettings && (this.internal.languageSettings = {}, this.internal.languageSettings.isSubscribed = false), void 0 !== { af: "Afrikaans", sq: "Albanian", ar: "Arabic (Standard)", "ar-DZ": "Arabic (Algeria)", "ar-BH": "Arabic (Bahrain)", "ar-EG": "Arabic (Egypt)", "ar-IQ": "Arabic (Iraq)", "ar-JO": "Arabic (Jordan)", "ar-KW": "Arabic (Kuwait)", "ar-LB": "Arabic (Lebanon)", "ar-LY": "Arabic (Libya)", "ar-MA": "Arabic (Morocco)", "ar-OM": "Arabic (Oman)", "ar-QA": "Arabic (Qatar)", "ar-SA": "Arabic (Saudi Arabia)", "ar-SY": "Arabic (Syria)", "ar-TN": "Arabic (Tunisia)", "ar-AE": "Arabic (U.A.E.)", "ar-YE": "Arabic (Yemen)", an: "Aragonese", hy: "Armenian", as: "Assamese", ast: "Asturian", az: "Azerbaijani", eu: "Basque", be: "Belarusian", bn: "Bengali", bs: "Bosnian", br: "Breton", bg: "Bulgarian", my: "Burmese", ca: "Catalan", ch: "Chamorro", ce: "Chechen", zh: "Chinese", "zh-HK": "Chinese (Hong Kong)", "zh-CN": "Chinese (PRC)", "zh-SG": "Chinese (Singapore)", "zh-TW": "Chinese (Taiwan)", cv: "Chuvash", co: "Corsican", cr: "Cree", hr: "Croatian", cs: "Czech", da: "Danish", nl: "Dutch (Standard)", "nl-BE": "Dutch (Belgian)", en: "English", "en-AU": "English (Australia)", "en-BZ": "English (Belize)", "en-CA": "English (Canada)", "en-IE": "English (Ireland)", "en-JM": "English (Jamaica)", "en-NZ": "English (New Zealand)", "en-PH": "English (Philippines)", "en-ZA": "English (South Africa)", "en-TT": "English (Trinidad & Tobago)", "en-GB": "English (United Kingdom)", "en-US": "English (United States)", "en-ZW": "English (Zimbabwe)", eo: "Esperanto", et: "Estonian", fo: "Faeroese", fj: "Fijian", fi: "Finnish", fr: "French (Standard)", "fr-BE": "French (Belgium)", "fr-CA": "French (Canada)", "fr-FR": "French (France)", "fr-LU": "French (Luxembourg)", "fr-MC": "French (Monaco)", "fr-CH": "French (Switzerland)", fy: "Frisian", fur: "Friulian", gd: "Gaelic (Scots)", "gd-IE": "Gaelic (Irish)", gl: "Galacian", ka: "Georgian", de: "German (Standard)", "de-AT": "German (Austria)", "de-DE": "German (Germany)", "de-LI": "German (Liechtenstein)", "de-LU": "German (Luxembourg)", "de-CH": "German (Switzerland)", el: "Greek", gu: "Gujurati", ht: "Haitian", he: "Hebrew", hi: "Hindi", hu: "Hungarian", is: "Icelandic", id: "Indonesian", iu: "Inuktitut", ga: "Irish", it: "Italian (Standard)", "it-CH": "Italian (Switzerland)", ja: "Japanese", kn: "Kannada", ks: "Kashmiri", kk: "Kazakh", km: "Khmer", ky: "Kirghiz", tlh: "Klingon", ko: "Korean", "ko-KP": "Korean (North Korea)", "ko-KR": "Korean (South Korea)", la: "Latin", lv: "Latvian", lt: "Lithuanian", lb: "Luxembourgish", mk: "North Macedonia", ms: "Malay", ml: "Malayalam", mt: "Maltese", mi: "Maori", mr: "Marathi", mo: "Moldavian", nv: "Navajo", ng: "Ndonga", ne: "Nepali", no: "Norwegian", nb: "Norwegian (Bokmal)", nn: "Norwegian (Nynorsk)", oc: "Occitan", or: "Oriya", om: "Oromo", fa: "Persian", "fa-IR": "Persian/Iran", pl: "Polish", pt: "Portuguese", "pt-BR": "Portuguese (Brazil)", pa: "Punjabi", "pa-IN": "Punjabi (India)", "pa-PK": "Punjabi (Pakistan)", qu: "Quechua", rm: "Rhaeto-Romanic", ro: "Romanian", "ro-MO": "Romanian (Moldavia)", ru: "Russian", "ru-MO": "Russian (Moldavia)", sz: "Sami (Lappish)", sg: "Sango", sa: "Sanskrit", sc: "Sardinian", sd: "Sindhi", si: "Singhalese", sr: "Serbian", sk: "Slovak", sl: "Slovenian", so: "Somani", sb: "Sorbian", es: "Spanish", "es-AR": "Spanish (Argentina)", "es-BO": "Spanish (Bolivia)", "es-CL": "Spanish (Chile)", "es-CO": "Spanish (Colombia)", "es-CR": "Spanish (Costa Rica)", "es-DO": "Spanish (Dominican Republic)", "es-EC": "Spanish (Ecuador)", "es-SV": "Spanish (El Salvador)", "es-GT": "Spanish (Guatemala)", "es-HN": "Spanish (Honduras)", "es-MX": "Spanish (Mexico)", "es-NI": "Spanish (Nicaragua)", "es-PA": "Spanish (Panama)", "es-PY": "Spanish (Paraguay)", "es-PE": "Spanish (Peru)", "es-PR": "Spanish (Puerto Rico)", "es-ES": "Spanish (Spain)", "es-UY": "Spanish (Uruguay)", "es-VE": "Spanish (Venezuela)", sx: "Sutu", sw: "Swahili", sv: "Swedish", "sv-FI": "Swedish (Finland)", "sv-SV": "Swedish (Sweden)", ta: "Tamil", tt: "Tatar", te: "Teluga", th: "Thai", tig: "Tigre", ts: "Tsonga", tn: "Tswana", tr: "Turkish", tk: "Turkmen", uk: "Ukrainian", hsb: "Upper Sorbian", ur: "Urdu", ve: "Venda", vi: "Vietnamese", vo: "Volapuk", wa: "Walloon", cy: "Welsh", xh: "Xhosa", ji: "Yiddish", zu: "Zulu" }[t2] && (this.internal.languageSettings.languageCode = t2, false === this.internal.languageSettings.isSubscribed && (this.internal.events.subscribe("putCatalog", function() {
+    this.internal.write("/Lang (" + this.internal.languageSettings.languageCode + ")");
+  }), this.internal.languageSettings.isSubscribed = true)), this;
+}, Vt = E.API, Gt = Vt.getCharWidthsArray = function(e, r) {
+  var n2, i2, a2 = (r = r || {}).font || this.internal.getFont(), o2 = r.fontSize || this.internal.getFontSize(), s2 = r.charSpace || this.internal.getCharSpace(), c2 = r.widths ? r.widths : a2.metadata.Unicode.widths, u2 = c2.fof ? c2.fof : 1, h2 = r.kerning ? r.kerning : a2.metadata.Unicode.kerning, l2 = h2.fof ? h2.fof : 1, f2 = false !== r.doKerning, d2 = 0, p2 = e.length, g2 = 0, m2 = c2[0] || u2, v2 = [];
+  for (n2 = 0; n2 < p2; n2++) i2 = e.charCodeAt(n2), "function" == typeof a2.metadata.widthOfString ? v2.push((a2.metadata.widthOfGlyph(a2.metadata.characterToGlyph(i2)) + s2 * (1e3 / o2) || 0) / 1e3) : (d2 = f2 && "object" === _typeof(h2[i2]) && !isNaN(parseInt(h2[i2][g2], 10)) ? h2[i2][g2] / l2 : 0, v2.push((c2[i2] || m2) / u2 + d2)), g2 = i2;
+  return v2;
+}, Yt = Vt.getStringUnitWidth = function(t2, e) {
+  var r = (e = e || {}).fontSize || this.internal.getFontSize(), n2 = e.font || this.internal.getFont(), i2 = e.charSpace || this.internal.getCharSpace();
+  return Vt.processArabic && (t2 = Vt.processArabic(t2)), "function" == typeof n2.metadata.widthOfString ? n2.metadata.widthOfString(t2, r, i2) / r : Gt.apply(this, arguments).reduce(function(t3, e2) {
+    return t3 + e2;
+  }, 0);
+}, Jt = function(t2, e, r, n2) {
+  for (var i2 = [], a2 = 0, o2 = t2.length, s2 = 0; a2 !== o2 && s2 + e[a2] < r; ) s2 += e[a2], a2++;
+  i2.push(t2.slice(0, a2));
+  var c2 = a2;
+  for (s2 = 0; a2 !== o2; ) s2 + e[a2] > n2 && (i2.push(t2.slice(c2, a2)), s2 = 0, c2 = a2), s2 += e[a2], a2++;
+  return c2 !== a2 && i2.push(t2.slice(c2, a2)), i2;
+}, Xt = function(t2, e, r) {
+  r || (r = {});
+  var n2, i2, a2, o2, s2, c2, u2, h2 = [], l2 = [h2], f2 = r.textIndent || 0, d2 = 0, p2 = 0, g2 = t2.split(" "), m2 = Gt.apply(this, [" ", r])[0];
+  if (c2 = -1 === r.lineIndent ? g2[0].length + 2 : r.lineIndent || 0) {
+    var v2 = Array(c2).join(" "), b3 = [];
+    g2.map(function(t3) {
+      (t3 = t3.split(/\s*\n/)).length > 1 ? b3 = b3.concat(t3.map(function(t4, e2) {
+        return (e2 && t4.length ? "\n" : "") + t4;
+      })) : b3.push(t3[0]);
+    }), g2 = b3, c2 = Yt.apply(this, [v2, r]);
+  }
+  for (a2 = 0, o2 = g2.length; a2 < o2; a2++) {
+    var y2 = 0;
+    if (n2 = g2[a2], c2 && "\n" == n2[0] && (n2 = n2.substr(1), y2 = 1), f2 + d2 + (p2 = (i2 = Gt.apply(this, [n2, r])).reduce(function(t3, e2) {
+      return t3 + e2;
+    }, 0)) > e || y2) {
+      if (p2 > e) {
+        for (s2 = Jt.apply(this, [n2, i2, e - (f2 + d2), e]), h2.push(s2.shift()), h2 = [s2.pop()]; s2.length; ) l2.push([s2.shift()]);
+        p2 = i2.slice(n2.length - (h2[0] ? h2[0].length : 0)).reduce(function(t3, e2) {
+          return t3 + e2;
+        }, 0);
+      } else h2 = [n2];
+      l2.push(h2), f2 = p2 + c2, d2 = m2;
+    } else h2.push(n2), f2 += d2 + p2, d2 = m2;
+  }
+  return u2 = c2 ? function(t3, e2) {
+    return (e2 ? v2 : "") + t3.join(" ");
+  } : function(t3) {
+    return t3.join(" ");
+  }, l2.map(u2);
+}, Vt.splitTextToSize = function(t2, e, r) {
+  var n2, i2 = (r = r || {}).fontSize || this.internal.getFontSize(), a2 = (function(t3) {
+    if (t3.widths && t3.kerning) return { widths: t3.widths, kerning: t3.kerning };
+    var e2 = this.internal.getFont(t3.fontName, t3.fontStyle);
+    return e2.metadata.Unicode ? { widths: e2.metadata.Unicode.widths || { 0: 1 }, kerning: e2.metadata.Unicode.kerning || {} } : { font: e2.metadata, fontSize: this.internal.getFontSize(), charSpace: this.internal.getCharSpace() };
+  }).call(this, r);
+  n2 = Array.isArray(t2) ? t2 : String(t2).split(/\r?\n/);
+  var o2 = 1 * this.internal.scaleFactor * e / i2;
+  a2.textIndent = r.textIndent ? 1 * r.textIndent * this.internal.scaleFactor / i2 : 0, a2.lineIndent = r.lineIndent;
+  var s2, c2, u2 = [];
+  for (s2 = 0, c2 = n2.length; s2 < c2; s2++) u2 = u2.concat(Xt.apply(this, [n2[s2], o2, a2]));
+  return u2;
+}, function(e) {
+  e.__fontmetrics__ = e.__fontmetrics__ || {};
+  for (var r = "klmnopqrstuvwxyz", n2 = {}, i2 = {}, a2 = 0; a2 < r.length; a2++) n2[r[a2]] = "0123456789abcdef"[a2], i2["0123456789abcdef"[a2]] = r[a2];
+  var o2 = function(t2) {
+    return "0x" + parseInt(t2, 10).toString(16);
+  }, s2 = e.__fontmetrics__.compress = function(e2) {
+    var r2, n3, a3, c3, u3 = ["{"];
+    for (var h3 in e2) {
+      if (r2 = e2[h3], isNaN(parseInt(h3, 10)) ? n3 = "'" + h3 + "'" : (h3 = parseInt(h3, 10), n3 = (n3 = o2(h3).slice(2)).slice(0, -1) + i2[n3.slice(-1)]), "number" == typeof r2) r2 < 0 ? (a3 = o2(r2).slice(3), c3 = "-") : (a3 = o2(r2).slice(2), c3 = ""), a3 = c3 + a3.slice(0, -1) + i2[a3.slice(-1)];
+      else {
+        if ("object" !== _typeof(r2)) throw new Error("Don't know what to do with value type " + _typeof(r2) + ".");
+        a3 = s2(r2);
+      }
+      u3.push(n3 + a3);
+    }
+    return u3.push("}"), u3.join("");
+  }, c2 = e.__fontmetrics__.uncompress = function(t2) {
+    if ("string" != typeof t2) throw new Error("Invalid argument passed to uncompress.");
+    for (var e2, r2, i3, a3, o3 = {}, s3 = 1, c3 = o3, u3 = [], h3 = "", l3 = "", f2 = t2.length - 1, d2 = 1; d2 < f2; d2 += 1) "'" == (a3 = t2[d2]) ? e2 ? (i3 = e2.join(""), e2 = void 0) : e2 = [] : e2 ? e2.push(a3) : "{" == a3 ? (u3.push([c3, i3]), c3 = {}, i3 = void 0) : "}" == a3 ? ((r2 = u3.pop())[0][r2[1]] = c3, i3 = void 0, c3 = r2[0]) : "-" == a3 ? s3 = -1 : void 0 === i3 ? n2.hasOwnProperty(a3) ? (h3 += n2[a3], i3 = parseInt(h3, 16) * s3, s3 = 1, h3 = "") : h3 += a3 : n2.hasOwnProperty(a3) ? (l3 += n2[a3], c3[i3] = parseInt(l3, 16) * s3, s3 = 1, i3 = void 0, l3 = "") : l3 += a3;
+    return o3;
+  }, u2 = { codePages: ["WinAnsiEncoding"], WinAnsiEncoding: c2("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}") }, h2 = { Unicode: { Courier: u2, "Courier-Bold": u2, "Courier-BoldOblique": u2, "Courier-Oblique": u2, Helvetica: u2, "Helvetica-Bold": u2, "Helvetica-BoldOblique": u2, "Helvetica-Oblique": u2, "Times-Roman": u2, "Times-Bold": u2, "Times-BoldItalic": u2, "Times-Italic": u2 } }, l2 = { Unicode: { "Courier-Oblique": c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-BoldItalic": c2("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"), "Helvetica-Bold": c2("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), Courier: c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Courier-BoldOblique": c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Bold": c2("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"), Symbol: c2("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"), Helvetica: c2("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"), "Helvetica-BoldOblique": c2("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), ZapfDingbats: c2("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"), "Courier-Bold": c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Italic": c2("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"), "Times-Roman": c2("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"), "Helvetica-Oblique": c2("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}") } };
+  e.events.push(["addFont", function(t2) {
+    var e2 = t2.font, r2 = l2.Unicode[e2.postScriptName];
+    r2 && (e2.metadata.Unicode = {}, e2.metadata.Unicode.widths = r2.widths, e2.metadata.Unicode.kerning = r2.kerning);
+    var n3 = h2.Unicode[e2.postScriptName];
+    n3 && (e2.metadata.Unicode.encoding = n3, e2.encoding = n3.codePages[0]);
+  }]);
+}(E.API), /**
+ * @license
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var e = function(t3) {
+    for (var e2 = t3.length, r = new Uint8Array(e2), n2 = 0; n2 < e2; n2++) r[n2] = t3.charCodeAt(n2);
+    return r;
+  };
+  t2.API.events.push(["addFont", function(r) {
+    var n2 = void 0, i2 = r.font, a2 = r.instance;
+    if (!i2.isStandardFont) {
+      if (void 0 === a2) throw new Error("Font does not exist in vFS, import fonts or remove declaration doc.addFont('" + i2.postScriptName + "').");
+      if ("string" != typeof (n2 = false === a2.existsFileInVFS(i2.postScriptName) ? a2.loadFile(i2.postScriptName) : a2.getFileFromVFS(i2.postScriptName))) throw new Error("Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('" + i2.postScriptName + "').");
+      !function(r2, n3) {
+        n3 = /^\x00\x01\x00\x00/.test(n3) ? e(n3) : e(u(n3)), r2.metadata = t2.API.TTFFont.open(n3), r2.metadata.Unicode = r2.metadata.Unicode || { encoding: {}, kerning: {}, widths: [] }, r2.metadata.glyIdsUsed = [0];
+      }(i2, n2);
+    }
+  }]);
+}(E), /** @license
+ * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * ====================================================================
+ */
+function(t2) {
+  function e() {
+    return (n.canvg ? Promise.resolve(n.canvg) : import("./index.es-7XNKQPVZ.js")).catch(function(t3) {
+      return Promise.reject(new Error("Could not load canvg: " + t3));
+    }).then(function(t3) {
+      return t3.default ? t3.default : t3;
+    });
+  }
+  E.API.addSvgAsImage = function(t3, r, n2, i2, o2, s2, c2, u2) {
+    if (isNaN(r) || isNaN(n2)) throw a.error("jsPDF.addSvgAsImage: Invalid coordinates", arguments), new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");
+    if (isNaN(i2) || isNaN(o2)) throw a.error("jsPDF.addSvgAsImage: Invalid measurements", arguments), new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");
+    var h2 = document.createElement("canvas");
+    h2.width = i2, h2.height = o2;
+    var l2 = h2.getContext("2d");
+    l2.fillStyle = "#fff", l2.fillRect(0, 0, h2.width, h2.height);
+    var f2 = { ignoreMouse: true, ignoreAnimation: true, ignoreDimensions: true }, d2 = this;
+    return e().then(function(e2) {
+      return e2.fromString(l2, t3, f2);
+    }, function() {
+      return Promise.reject(new Error("Could not load canvg."));
+    }).then(function(t4) {
+      return t4.render(f2);
+    }).then(function() {
+      d2.addImage(h2.toDataURL("image/jpeg", 1), r, n2, i2, o2, c2, u2);
+    });
+  };
+}(), E.API.putTotalPages = function(t2) {
+  var e, r = 0;
+  parseInt(this.internal.getFont().id.substr(1), 10) < 15 ? (e = new RegExp(t2, "g"), r = this.internal.getNumberOfPages()) : (e = new RegExp(this.pdfEscape16(t2, this.internal.getFont()), "g"), r = this.pdfEscape16(this.internal.getNumberOfPages() + "", this.internal.getFont()));
+  for (var n2 = 1; n2 <= this.internal.getNumberOfPages(); n2++) for (var i2 = 0; i2 < this.internal.pages[n2].length; i2++) this.internal.pages[n2][i2] = this.internal.pages[n2][i2].replace(e, r);
+  return this;
+}, E.API.viewerPreferences = function(e, r) {
+  var n2;
+  e = e || {}, r = r || false;
+  var i2, a2, o2, s2 = { HideToolbar: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, HideMenubar: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, HideWindowUI: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, FitWindow: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, CenterWindow: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, DisplayDocTitle: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.4 }, NonFullScreenPageMode: { defaultValue: "UseNone", value: "UseNone", type: "name", explicitSet: false, valueSet: ["UseNone", "UseOutlines", "UseThumbs", "UseOC"], pdfVersion: 1.3 }, Direction: { defaultValue: "L2R", value: "L2R", type: "name", explicitSet: false, valueSet: ["L2R", "R2L"], pdfVersion: 1.3 }, ViewArea: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, ViewClip: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, PrintArea: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, PrintClip: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, PrintScaling: { defaultValue: "AppDefault", value: "AppDefault", type: "name", explicitSet: false, valueSet: ["AppDefault", "None"], pdfVersion: 1.6 }, Duplex: { defaultValue: "", value: "none", type: "name", explicitSet: false, valueSet: ["Simplex", "DuplexFlipShortEdge", "DuplexFlipLongEdge", "none"], pdfVersion: 1.7 }, PickTrayByPDFSize: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.7 }, PrintPageRange: { defaultValue: "", value: "", type: "array", explicitSet: false, valueSet: null, pdfVersion: 1.7 }, NumCopies: { defaultValue: 1, value: 1, type: "integer", explicitSet: false, valueSet: null, pdfVersion: 1.7 } }, c2 = Object.keys(s2), u2 = [], h2 = 0, l2 = 0, f2 = 0;
+  function d2(t2, e2) {
+    var r2, n3 = false;
+    for (r2 = 0; r2 < t2.length; r2 += 1) t2[r2] === e2 && (n3 = true);
+    return n3;
+  }
+  if (void 0 === this.internal.viewerpreferences && (this.internal.viewerpreferences = {}, this.internal.viewerpreferences.configuration = JSON.parse(JSON.stringify(s2)), this.internal.viewerpreferences.isSubscribed = false), n2 = this.internal.viewerpreferences.configuration, "reset" === e || true === r) {
+    var p2 = c2.length;
+    for (f2 = 0; f2 < p2; f2 += 1) n2[c2[f2]].value = n2[c2[f2]].defaultValue, n2[c2[f2]].explicitSet = false;
+  }
+  if ("object" === _typeof(e)) {
+    for (a2 in e) if (o2 = e[a2], d2(c2, a2) && void 0 !== o2) {
+      if ("boolean" === n2[a2].type && "boolean" == typeof o2) n2[a2].value = o2;
+      else if ("name" === n2[a2].type && d2(n2[a2].valueSet, o2)) n2[a2].value = o2;
+      else if ("integer" === n2[a2].type && Number.isInteger(o2)) n2[a2].value = o2;
+      else if ("array" === n2[a2].type) {
+        for (h2 = 0; h2 < o2.length; h2 += 1) if (i2 = true, 1 === o2[h2].length && "number" == typeof o2[h2][0]) u2.push(String(o2[h2] - 1));
+        else if (o2[h2].length > 1) {
+          for (l2 = 0; l2 < o2[h2].length; l2 += 1) "number" != typeof o2[h2][l2] && (i2 = false);
+          true === i2 && u2.push([o2[h2][0] - 1, o2[h2][1] - 1].join(" "));
+        }
+        n2[a2].value = "[" + u2.join(" ") + "]";
+      } else n2[a2].value = n2[a2].defaultValue;
+      n2[a2].explicitSet = true;
+    }
+  }
+  return false === this.internal.viewerpreferences.isSubscribed && (this.internal.events.subscribe("putCatalog", function() {
+    var t2, e2 = [];
+    for (t2 in n2) true === n2[t2].explicitSet && ("name" === n2[t2].type ? e2.push("/" + t2 + " /" + n2[t2].value) : e2.push("/" + t2 + " " + n2[t2].value));
+    0 !== e2.length && this.internal.write("/ViewerPreferences\n<<\n" + e2.join("\n") + "\n>>");
+  }), this.internal.viewerpreferences.isSubscribed = true), this.internal.viewerpreferences.configuration = n2, this;
+}, /** ====================================================================
+ * @license
+ * jsPDF XMP metadata plugin
+ * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * ====================================================================
+ */
+function(t2) {
+  var e = function() {
+    var t3 = '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="' + this.internal.__metadata__.namespaceuri + '"><jspdf:metadata>', e2 = unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">')), r2 = unescape(encodeURIComponent(t3)), n2 = unescape(encodeURIComponent(this.internal.__metadata__.metadata)), i2 = unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>")), a2 = unescape(encodeURIComponent("</x:xmpmeta>")), o2 = r2.length + n2.length + i2.length + e2.length + a2.length;
+    this.internal.__metadata__.metadata_object_number = this.internal.newObject(), this.internal.write("<< /Type /Metadata /Subtype /XML /Length " + o2 + " >>"), this.internal.write("stream"), this.internal.write(e2 + r2 + n2 + i2 + a2), this.internal.write("endstream"), this.internal.write("endobj");
+  }, r = function() {
+    this.internal.__metadata__.metadata_object_number && this.internal.write("/Metadata " + this.internal.__metadata__.metadata_object_number + " 0 R");
+  };
+  t2.addMetadata = function(t3, n2) {
+    return void 0 === this.internal.__metadata__ && (this.internal.__metadata__ = { metadata: t3, namespaceuri: n2 || "http://jspdf.default.namespaceuri/" }, this.internal.events.subscribe("putCatalog", r), this.internal.events.subscribe("postPutResources", e)), this;
+  };
+}(E.API), function(t2) {
+  var e = t2.API, r = e.pdfEscape16 = function(t3, e2) {
+    for (var r2, n3 = e2.metadata.Unicode.widths, i3 = ["", "0", "00", "000", "0000"], a2 = [""], o2 = 0, s2 = t3.length; o2 < s2; ++o2) {
+      if (r2 = e2.metadata.characterToGlyph(t3.charCodeAt(o2)), e2.metadata.glyIdsUsed.push(r2), e2.metadata.toUnicode[r2] = t3.charCodeAt(o2), -1 == n3.indexOf(r2) && (n3.push(r2), n3.push([parseInt(e2.metadata.widthOfGlyph(r2), 10)])), "0" == r2) return a2.join("");
+      r2 = r2.toString(16), a2.push(i3[4 - r2.length], r2);
+    }
+    return a2.join("");
+  }, n2 = function(t3) {
+    var e2, r2, n3, i3, a2, o2, s2;
+    for (a2 = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange", n3 = [], o2 = 0, s2 = (r2 = Object.keys(t3).sort(function(t4, e3) {
+      return t4 - e3;
+    })).length; o2 < s2; o2++) e2 = r2[o2], n3.length >= 100 && (a2 += "\n" + n3.length + " beginbfchar\n" + n3.join("\n") + "\nendbfchar", n3 = []), void 0 !== t3[e2] && null !== t3[e2] && "function" == typeof t3[e2].toString && (i3 = ("0000" + t3[e2].toString(16)).slice(-4), e2 = ("0000" + (+e2).toString(16)).slice(-4), n3.push("<" + e2 + "><" + i3 + ">"));
+    return n3.length && (a2 += "\n" + n3.length + " beginbfchar\n" + n3.join("\n") + "\nendbfchar\n"), a2 += "endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend";
+  };
+  e.events.push(["putFont", function(e2) {
+    !function(e3) {
+      var r2 = e3.font, i3 = e3.out, a2 = e3.newObject, o2 = e3.putStream;
+      if (r2.metadata instanceof t2.API.TTFFont && "Identity-H" === r2.encoding) {
+        for (var s2 = r2.metadata.Unicode.widths, c2 = r2.metadata.subset.encode(r2.metadata.glyIdsUsed, 1), u2 = "", h2 = 0; h2 < c2.length; h2++) u2 += String.fromCharCode(c2[h2]);
+        var l2 = a2();
+        o2({ data: u2, addLength1: true, objectId: l2 }), i3("endobj");
+        var f2 = a2();
+        o2({ data: n2(r2.metadata.toUnicode), addLength1: true, objectId: f2 }), i3("endobj");
+        var d2 = a2();
+        i3("<<"), i3("/Type /FontDescriptor"), i3("/FontName /" + F(r2.fontName)), i3("/FontFile2 " + l2 + " 0 R"), i3("/FontBBox " + t2.API.PDFObject.convert(r2.metadata.bbox)), i3("/Flags " + r2.metadata.flags), i3("/StemV " + r2.metadata.stemV), i3("/ItalicAngle " + r2.metadata.italicAngle), i3("/Ascent " + r2.metadata.ascender), i3("/Descent " + r2.metadata.decender), i3("/CapHeight " + r2.metadata.capHeight), i3(">>"), i3("endobj");
+        var p2 = a2();
+        i3("<<"), i3("/Type /Font"), i3("/BaseFont /" + F(r2.fontName)), i3("/FontDescriptor " + d2 + " 0 R"), i3("/W " + t2.API.PDFObject.convert(s2)), i3("/CIDToGIDMap /Identity"), i3("/DW 1000"), i3("/Subtype /CIDFontType2"), i3("/CIDSystemInfo"), i3("<<"), i3("/Supplement 0"), i3("/Registry (Adobe)"), i3("/Ordering (" + r2.encoding + ")"), i3(">>"), i3(">>"), i3("endobj"), r2.objectNumber = a2(), i3("<<"), i3("/Type /Font"), i3("/Subtype /Type0"), i3("/ToUnicode " + f2 + " 0 R"), i3("/BaseFont /" + F(r2.fontName)), i3("/Encoding /" + r2.encoding), i3("/DescendantFonts [" + p2 + " 0 R]"), i3(">>"), i3("endobj"), r2.isAlreadyPutted = true;
+      }
+    }(e2);
+  }]);
+  e.events.push(["putFont", function(e2) {
+    !function(e3) {
+      var r2 = e3.font, i3 = e3.out, a2 = e3.newObject, o2 = e3.putStream;
+      if (r2.metadata instanceof t2.API.TTFFont && "WinAnsiEncoding" === r2.encoding) {
+        for (var s2 = r2.metadata.rawData, c2 = "", u2 = 0; u2 < s2.length; u2++) c2 += String.fromCharCode(s2[u2]);
+        var h2 = a2();
+        o2({ data: c2, addLength1: true, objectId: h2 }), i3("endobj");
+        var l2 = a2();
+        o2({ data: n2(r2.metadata.toUnicode), addLength1: true, objectId: l2 }), i3("endobj");
+        var f2 = a2();
+        i3("<<"), i3("/Descent " + r2.metadata.decender), i3("/CapHeight " + r2.metadata.capHeight), i3("/StemV " + r2.metadata.stemV), i3("/Type /FontDescriptor"), i3("/FontFile2 " + h2 + " 0 R"), i3("/Flags 96"), i3("/FontBBox " + t2.API.PDFObject.convert(r2.metadata.bbox)), i3("/FontName /" + F(r2.fontName)), i3("/ItalicAngle " + r2.metadata.italicAngle), i3("/Ascent " + r2.metadata.ascender), i3(">>"), i3("endobj"), r2.objectNumber = a2();
+        for (var d2 = 0; d2 < r2.metadata.hmtx.widths.length; d2++) r2.metadata.hmtx.widths[d2] = parseInt(r2.metadata.hmtx.widths[d2] * (1e3 / r2.metadata.head.unitsPerEm));
+        i3("<</Subtype/TrueType/Type/Font/ToUnicode " + l2 + " 0 R/BaseFont/" + F(r2.fontName) + "/FontDescriptor " + f2 + " 0 R/Encoding/" + r2.encoding + " /FirstChar 29 /LastChar 255 /Widths " + t2.API.PDFObject.convert(r2.metadata.hmtx.widths) + ">>"), i3("endobj"), r2.isAlreadyPutted = true;
+      }
+    }(e2);
+  }]);
+  var i2 = function(t3) {
+    var e2, n3 = t3.text || "", i3 = t3.x, a2 = t3.y, o2 = t3.options || {}, s2 = t3.mutex || {}, c2 = s2.pdfEscape, u2 = s2.activeFontKey, h2 = s2.fonts, l2 = u2, f2 = "", d2 = 0, p2 = "", g2 = h2[l2].encoding;
+    if ("Identity-H" !== h2[l2].encoding) return { text: n3, x: i3, y: a2, options: o2, mutex: s2 };
+    for (p2 = n3, l2 = u2, Array.isArray(n3) && (p2 = n3[0]), d2 = 0; d2 < p2.length; d2 += 1) h2[l2].metadata.hasOwnProperty("cmap") && (e2 = h2[l2].metadata.cmap.unicode.codeMap[p2[d2].charCodeAt(0)]), e2 || p2[d2].charCodeAt(0) < 256 && h2[l2].metadata.hasOwnProperty("Unicode") ? f2 += p2[d2] : f2 += "";
+    var m2 = "";
+    return parseInt(l2.slice(1)) < 14 || "WinAnsiEncoding" === g2 ? m2 = c2(f2, l2).split("").map(function(t4) {
+      return t4.charCodeAt(0).toString(16);
+    }).join("") : "Identity-H" === g2 && (m2 = r(f2, h2[l2])), s2.isHex = true, { text: m2, x: i3, y: a2, options: o2, mutex: s2 };
+  };
+  e.events.push(["postProcessText", function(t3) {
+    var e2 = t3.text || "", r2 = [], n3 = { text: e2, x: t3.x, y: t3.y, options: t3.options, mutex: t3.mutex };
+    if (Array.isArray(e2)) {
+      var a2 = 0;
+      for (a2 = 0; a2 < e2.length; a2 += 1) Array.isArray(e2[a2]) && 3 === e2[a2].length ? r2.push([i2(Object.assign({}, n3, { text: e2[a2][0] })).text, e2[a2][1], e2[a2][2]]) : r2.push(i2(Object.assign({}, n3, { text: e2[a2] })).text);
+      t3.text = r2;
+    } else t3.text = i2(Object.assign({}, n3, { text: e2 })).text;
+  }]);
+}(E), /**
+ * @license
+ * jsPDF virtual FileSystem functionality
+ *
+ * Licensed under the MIT License.
+ * http://opensource.org/licenses/mit-license
+ */
+function(t2) {
+  var e = function() {
+    return void 0 === this.internal.vFS && (this.internal.vFS = {}), true;
+  };
+  t2.existsFileInVFS = function(t3) {
+    return e.call(this), void 0 !== this.internal.vFS[t3];
+  }, t2.addFileToVFS = function(t3, r) {
+    return e.call(this), this.internal.vFS[t3] = r, this;
+  }, t2.getFileFromVFS = function(t3) {
+    return e.call(this), void 0 !== this.internal.vFS[t3] ? this.internal.vFS[t3] : null;
+  };
+}(E.API), /**
+ * @license
+ * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)
+ * MIT License
+ */
+function(t2) {
+  t2.__bidiEngine__ = t2.prototype.__bidiEngine__ = function(t3) {
+    var r2, n2, i2, a2, o2, s2, c2, u2 = e, h2 = [[0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 17, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 21, 21, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]], l2 = [[2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 33, 3, 1, 1]], f2 = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 }, d2 = { 0: 0, 5: 1, 6: 2, 7: 3, 32: 4, 251: 5, 254: 6, 255: 7 }, p2 = ["(", ")", "(", "<", ">", "<", "[", "]", "[", "{", "}", "{", "«", "»", "«", "‹", "›", "‹", "⁅", "⁆", "⁅", "⁽", "⁾", "⁽", "₍", "₎", "₍", "≤", "≥", "≤", "〈", "〉", "〈", "﹙", "﹚", "﹙", "﹛", "﹜", "﹛", "﹝", "﹞", "﹝", "﹤", "﹥", "﹤"], g2 = new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/), m2 = false, v2 = 0;
+    this.__bidiEngine__ = {};
+    var b3 = function(t4) {
+      var e2 = t4.charCodeAt(), r3 = e2 >> 8, n3 = d2[r3];
+      return void 0 !== n3 ? u2[256 * n3 + (255 & e2)] : 252 === r3 || 253 === r3 ? "AL" : g2.test(r3) ? "L" : 8 === r3 ? "R" : "N";
+    }, y2 = function(t4) {
+      for (var e2, r3 = 0; r3 < t4.length; r3++) {
+        if ("L" === (e2 = b3(t4.charAt(r3)))) return false;
+        if ("R" === e2) return true;
+      }
+      return false;
+    }, w2 = function(t4, e2, o3, s3) {
+      var c3, u3, h3, l3, f3 = e2[s3];
+      switch (f3) {
+        case "L":
+        case "R":
+          m2 = false;
+          break;
+        case "N":
+        case "AN":
+          break;
+        case "EN":
+          m2 && (f3 = "AN");
+          break;
+        case "AL":
+          m2 = true, f3 = "R";
+          break;
+        case "WS":
+          f3 = "N";
+          break;
+        case "CS":
+          s3 < 1 || s3 + 1 >= e2.length || "EN" !== (c3 = o3[s3 - 1]) && "AN" !== c3 || "EN" !== (u3 = e2[s3 + 1]) && "AN" !== u3 ? f3 = "N" : m2 && (u3 = "AN"), f3 = u3 === c3 ? u3 : "N";
+          break;
+        case "ES":
+          f3 = "EN" === (c3 = s3 > 0 ? o3[s3 - 1] : "B") && s3 + 1 < e2.length && "EN" === e2[s3 + 1] ? "EN" : "N";
+          break;
+        case "ET":
+          if (s3 > 0 && "EN" === o3[s3 - 1]) {
+            f3 = "EN";
+            break;
+          }
+          if (m2) {
+            f3 = "N";
+            break;
+          }
+          for (h3 = s3 + 1, l3 = e2.length; h3 < l3 && "ET" === e2[h3]; ) h3++;
+          f3 = h3 < l3 && "EN" === e2[h3] ? "EN" : "N";
+          break;
+        case "NSM":
+          if (i2 && !a2) {
+            for (l3 = e2.length, h3 = s3 + 1; h3 < l3 && "NSM" === e2[h3]; ) h3++;
+            if (h3 < l3) {
+              var d3 = t4[s3], p3 = d3 >= 1425 && d3 <= 2303 || 64286 === d3;
+              if (c3 = e2[h3], p3 && ("R" === c3 || "AL" === c3)) {
+                f3 = "R";
+                break;
+              }
+            }
+          }
+          f3 = s3 < 1 || "B" === (c3 = e2[s3 - 1]) ? "N" : o3[s3 - 1];
+          break;
+        case "B":
+          m2 = false, r2 = true, f3 = v2;
+          break;
+        case "S":
+          n2 = true, f3 = "N";
+          break;
+        case "LRE":
+        case "RLE":
+        case "LRO":
+        case "RLO":
+        case "PDF":
+          m2 = false;
+          break;
+        case "BN":
+          f3 = "N";
+      }
+      return f3;
+    }, N2 = function(t4, e2, r3) {
+      var n3 = t4.split("");
+      return r3 && L2(n3, r3, { hiLevel: v2 }), n3.reverse(), e2 && e2.reverse(), n3.join("");
+    }, L2 = function(t4, e2, i3) {
+      var a3, o3, s3, c3, u3, d3 = -1, p3 = t4.length, g3 = 0, y3 = [], N3 = v2 ? l2 : h2, L3 = [];
+      for (m2 = false, r2 = false, n2 = false, o3 = 0; o3 < p3; o3++) L3[o3] = b3(t4[o3]);
+      for (s3 = 0; s3 < p3; s3++) {
+        if (u3 = g3, y3[s3] = w2(t4, L3, y3, s3), a3 = 240 & (g3 = N3[u3][f2[y3[s3]]]), g3 &= 15, e2[s3] = c3 = N3[g3][5], a3 > 0) if (16 === a3) {
+          for (o3 = d3; o3 < s3; o3++) e2[o3] = 1;
+          d3 = -1;
+        } else d3 = -1;
+        if (N3[g3][6]) -1 === d3 && (d3 = s3);
+        else if (d3 > -1) {
+          for (o3 = d3; o3 < s3; o3++) e2[o3] = c3;
+          d3 = -1;
+        }
+        "B" === L3[s3] && (e2[s3] = 0), i3.hiLevel |= c3;
+      }
+      n2 && function(t5, e3, r3) {
+        for (var n3 = 0; n3 < r3; n3++) if ("S" === t5[n3]) {
+          e3[n3] = v2;
+          for (var i4 = n3 - 1; i4 >= 0 && "WS" === t5[i4]; i4--) e3[i4] = v2;
+        }
+      }(L3, e2, p3);
+    }, A2 = function(t4, e2, n3, i3, a3) {
+      if (!(a3.hiLevel < t4)) {
+        if (1 === t4 && 1 === v2 && !r2) return e2.reverse(), void (n3 && n3.reverse());
+        for (var o3, s3, c3, u3, h3 = e2.length, l3 = 0; l3 < h3; ) {
+          if (i3[l3] >= t4) {
+            for (c3 = l3 + 1; c3 < h3 && i3[c3] >= t4; ) c3++;
+            for (u3 = l3, s3 = c3 - 1; u3 < s3; u3++, s3--) o3 = e2[u3], e2[u3] = e2[s3], e2[s3] = o3, n3 && (o3 = n3[u3], n3[u3] = n3[s3], n3[s3] = o3);
+            l3 = c3;
+          }
+          l3++;
+        }
+      }
+    }, x2 = function(t4, e2, r3) {
+      var n3 = t4.split(""), i3 = { hiLevel: v2 };
+      return r3 || (r3 = []), L2(n3, r3, i3), function(t5, e3, r4) {
+        if (0 !== r4.hiLevel && c2) for (var n4, i4 = 0; i4 < t5.length; i4++) 1 === e3[i4] && (n4 = p2.indexOf(t5[i4])) >= 0 && (t5[i4] = p2[n4 + 1]);
+      }(n3, r3, i3), A2(2, n3, e2, r3, i3), A2(1, n3, e2, r3, i3), n3.join("");
+    };
+    return this.__bidiEngine__.doBidiReorder = function(t4, e2, r3) {
+      if (function(t5, e3) {
+        if (e3) for (var r4 = 0; r4 < t5.length; r4++) e3[r4] = r4;
+        void 0 === a2 && (a2 = y2(t5)), void 0 === s2 && (s2 = y2(t5));
+      }(t4, e2), i2 || !o2 || s2) if (i2 && o2 && a2 ^ s2) v2 = a2 ? 1 : 0, t4 = N2(t4, e2, r3);
+      else if (!i2 && o2 && s2) v2 = a2 ? 1 : 0, t4 = x2(t4, e2, r3), t4 = N2(t4, e2);
+      else if (!i2 || a2 || o2 || s2) {
+        if (i2 && !o2 && a2 ^ s2) t4 = N2(t4, e2), a2 ? (v2 = 0, t4 = x2(t4, e2, r3)) : (v2 = 1, t4 = x2(t4, e2, r3), t4 = N2(t4, e2));
+        else if (i2 && a2 && !o2 && s2) v2 = 1, t4 = x2(t4, e2, r3), t4 = N2(t4, e2);
+        else if (!i2 && !o2 && a2 ^ s2) {
+          var n3 = c2;
+          a2 ? (v2 = 1, t4 = x2(t4, e2, r3), v2 = 0, c2 = false, t4 = x2(t4, e2, r3), c2 = n3) : (v2 = 0, t4 = x2(t4, e2, r3), t4 = N2(t4, e2), v2 = 1, c2 = false, t4 = x2(t4, e2, r3), c2 = n3, t4 = N2(t4, e2));
+        }
+      } else v2 = 0, t4 = x2(t4, e2, r3);
+      else v2 = a2 ? 1 : 0, t4 = x2(t4, e2, r3);
+      return t4;
+    }, this.__bidiEngine__.setOptions = function(t4) {
+      t4 && (i2 = t4.isInputVisual, o2 = t4.isOutputVisual, a2 = t4.isInputRtl, s2 = t4.isOutputRtl, c2 = t4.isSymmetricSwapping);
+    }, this.__bidiEngine__.setOptions(t3), this.__bidiEngine__;
+  };
+  var e = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "N", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "L", "N", "N", "BN", "N", "N", "ET", "ET", "EN", "EN", "N", "L", "N", "N", "N", "EN", "L", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "N", "N", "N", "N", "N", "ET", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "NSM", "R", "NSM", "NSM", "R", "NSM", "NSM", "R", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AN", "AN", "AN", "AN", "AN", "AN", "N", "N", "AL", "ET", "ET", "AL", "CS", "AL", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "N", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "R", "N", "N", "N", "N", "R", "N", "N", "N", "N", "N", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "BN", "BN", "BN", "L", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "B", "LRE", "RLE", "PDF", "LRO", "RLO", "CS", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "BN", "BN", "BN", "BN", "BN", "N", "LRI", "RLI", "FSI", "PDI", "BN", "BN", "BN", "BN", "BN", "BN", "EN", "L", "N", "N", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "L", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "R", "NSM", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "ES", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "R", "R", "R", "R", "R", "N", "R", "N", "R", "R", "N", "R", "R", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "CS", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "ET", "N", "N", "ES", "ES", "N", "N", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "BN", "N", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "N", "N", "N", "ET", "ET", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N"], r = new t2.__bidiEngine__({ isInputVisual: true });
+  t2.API.events.push(["postProcessText", function(t3) {
+    var e2 = t3.text, n2 = (t3.x, t3.y, t3.options || {}), i2 = (t3.mutex, n2.lang, []);
+    if (n2.isInputVisual = "boolean" != typeof n2.isInputVisual || n2.isInputVisual, r.setOptions(n2), "[object Array]" === Object.prototype.toString.call(e2)) {
+      var a2 = 0;
+      for (i2 = [], a2 = 0; a2 < e2.length; a2 += 1) "[object Array]" === Object.prototype.toString.call(e2[a2]) ? i2.push([r.doBidiReorder(e2[a2][0]), e2[a2][1], e2[a2][2]]) : i2.push([r.doBidiReorder(e2[a2])]);
+      t3.text = i2;
+    } else t3.text = r.doBidiReorder(e2);
+    r.setOptions({ isInputVisual: true });
+  }]);
+}(E), E.API.TTFFont = function() {
+  function t2(t3) {
+    var e;
+    if (this.rawData = t3, e = this.contents = new ne(t3), this.contents.pos = 4, "ttcf" === e.readString(4)) throw new Error("TTCF not supported.");
+    e.pos = 0, this.parse(), this.subset = new Le(this), this.registerTTF();
+  }
+  return t2.open = function(e) {
+    return new t2(e);
+  }, t2.prototype.parse = function() {
+    return this.directory = new ie(this.contents), this.head = new se(this), this.name = new pe(this), this.cmap = new ue(this), this.toUnicode = {}, this.hhea = new he(this), this.maxp = new ge(this), this.hmtx = new me(this), this.post = new fe(this), this.os2 = new le(this), this.loca = new Ne(this), this.glyf = new be(this), this.ascender = this.os2.exists && this.os2.ascender || this.hhea.ascender, this.decender = this.os2.exists && this.os2.decender || this.hhea.decender, this.lineGap = this.os2.exists && this.os2.lineGap || this.hhea.lineGap, this.bbox = [this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax];
+  }, t2.prototype.registerTTF = function() {
+    var t3, e, r, n2, i2;
+    if (this.scaleFactor = 1e3 / this.head.unitsPerEm, this.bbox = (function() {
+      var e2, r2, n3, i3;
+      for (i3 = [], e2 = 0, r2 = (n3 = this.bbox).length; e2 < r2; e2++) t3 = n3[e2], i3.push(Math.round(t3 * this.scaleFactor));
+      return i3;
+    }).call(this), this.stemV = 0, this.post.exists ? (r = 255 & (n2 = this.post.italic_angle), 0 != (32768 & (e = n2 >> 16)) && (e = -(1 + (65535 ^ e))), this.italicAngle = +(e + "." + r)) : this.italicAngle = 0, this.ascender = Math.round(this.ascender * this.scaleFactor), this.decender = Math.round(this.decender * this.scaleFactor), this.lineGap = Math.round(this.lineGap * this.scaleFactor), this.capHeight = this.os2.exists && this.os2.capHeight || this.ascender, this.xHeight = this.os2.exists && this.os2.xHeight || 0, this.familyClass = (this.os2.exists && this.os2.familyClass || 0) >> 8, this.isSerif = 1 === (i2 = this.familyClass) || 2 === i2 || 3 === i2 || 4 === i2 || 5 === i2 || 7 === i2, this.isScript = 10 === this.familyClass, this.flags = 0, this.post.isFixedPitch && (this.flags |= 1), this.isSerif && (this.flags |= 2), this.isScript && (this.flags |= 8), 0 !== this.italicAngle && (this.flags |= 64), this.flags |= 32, !this.cmap.unicode) throw new Error("No unicode cmap for font");
+  }, t2.prototype.characterToGlyph = function(t3) {
+    var e;
+    return (null != (e = this.cmap.unicode) ? e.codeMap[t3] : void 0) || 0;
+  }, t2.prototype.widthOfGlyph = function(t3) {
+    var e;
+    return e = 1e3 / this.head.unitsPerEm, this.hmtx.forGlyph(t3).advance * e;
+  }, t2.prototype.widthOfString = function(t3, e, r) {
+    var n2, i2, a2, o2;
+    for (a2 = 0, i2 = 0, o2 = (t3 = "" + t3).length; 0 <= o2 ? i2 < o2 : i2 > o2; i2 = 0 <= o2 ? ++i2 : --i2) n2 = t3.charCodeAt(i2), a2 += this.widthOfGlyph(this.characterToGlyph(n2)) + r * (1e3 / e) || 0;
+    return a2 * (e / 1e3);
+  }, t2.prototype.lineHeight = function(t3, e) {
+    var r;
+    return null == e && (e = false), r = e ? this.lineGap : 0, (this.ascender + r - this.decender) / 1e3 * t3;
+  }, t2;
+}();
+var re;
+var ne = function() {
+  function t2(t3) {
+    this.data = null != t3 ? t3 : [], this.pos = 0, this.length = this.data.length;
+  }
+  return t2.prototype.readByte = function() {
+    return this.data[this.pos++];
+  }, t2.prototype.writeByte = function(t3) {
+    return this.data[this.pos++] = t3;
+  }, t2.prototype.readUInt32 = function() {
+    return 16777216 * this.readByte() + (this.readByte() << 16) + (this.readByte() << 8) + this.readByte();
+  }, t2.prototype.writeUInt32 = function(t3) {
+    return this.writeByte(t3 >>> 24 & 255), this.writeByte(t3 >> 16 & 255), this.writeByte(t3 >> 8 & 255), this.writeByte(255 & t3);
+  }, t2.prototype.readInt32 = function() {
+    var t3;
+    return (t3 = this.readUInt32()) >= 2147483648 ? t3 - 4294967296 : t3;
+  }, t2.prototype.writeInt32 = function(t3) {
+    return t3 < 0 && (t3 += 4294967296), this.writeUInt32(t3);
+  }, t2.prototype.readUInt16 = function() {
+    return this.readByte() << 8 | this.readByte();
+  }, t2.prototype.writeUInt16 = function(t3) {
+    return this.writeByte(t3 >> 8 & 255), this.writeByte(255 & t3);
+  }, t2.prototype.readInt16 = function() {
+    var t3;
+    return (t3 = this.readUInt16()) >= 32768 ? t3 - 65536 : t3;
+  }, t2.prototype.writeInt16 = function(t3) {
+    return t3 < 0 && (t3 += 65536), this.writeUInt16(t3);
+  }, t2.prototype.readString = function(t3) {
+    var e, r;
+    for (r = [], e = 0; 0 <= t3 ? e < t3 : e > t3; e = 0 <= t3 ? ++e : --e) r[e] = String.fromCharCode(this.readByte());
+    return r.join("");
+  }, t2.prototype.writeString = function(t3) {
+    var e, r, n2;
+    for (n2 = [], e = 0, r = t3.length; 0 <= r ? e < r : e > r; e = 0 <= r ? ++e : --e) n2.push(this.writeByte(t3.charCodeAt(e)));
+    return n2;
+  }, t2.prototype.readShort = function() {
+    return this.readInt16();
+  }, t2.prototype.writeShort = function(t3) {
+    return this.writeInt16(t3);
+  }, t2.prototype.readLongLong = function() {
+    var t3, e, r, n2, i2, a2, o2, s2;
+    return t3 = this.readByte(), e = this.readByte(), r = this.readByte(), n2 = this.readByte(), i2 = this.readByte(), a2 = this.readByte(), o2 = this.readByte(), s2 = this.readByte(), 128 & t3 ? -1 * (72057594037927940 * (255 ^ t3) + 281474976710656 * (255 ^ e) + 1099511627776 * (255 ^ r) + 4294967296 * (255 ^ n2) + 16777216 * (255 ^ i2) + 65536 * (255 ^ a2) + 256 * (255 ^ o2) + (255 ^ s2) + 1) : 72057594037927940 * t3 + 281474976710656 * e + 1099511627776 * r + 4294967296 * n2 + 16777216 * i2 + 65536 * a2 + 256 * o2 + s2;
+  }, t2.prototype.writeLongLong = function(t3) {
+    var e, r;
+    return e = Math.floor(t3 / 4294967296), r = 4294967295 & t3, this.writeByte(e >> 24 & 255), this.writeByte(e >> 16 & 255), this.writeByte(e >> 8 & 255), this.writeByte(255 & e), this.writeByte(r >> 24 & 255), this.writeByte(r >> 16 & 255), this.writeByte(r >> 8 & 255), this.writeByte(255 & r);
+  }, t2.prototype.readInt = function() {
+    return this.readInt32();
+  }, t2.prototype.writeInt = function(t3) {
+    return this.writeInt32(t3);
+  }, t2.prototype.read = function(t3) {
+    var e, r;
+    for (e = [], r = 0; 0 <= t3 ? r < t3 : r > t3; r = 0 <= t3 ? ++r : --r) e.push(this.readByte());
+    return e;
+  }, t2.prototype.write = function(t3) {
+    var e, r, n2, i2;
+    for (i2 = [], r = 0, n2 = t3.length; r < n2; r++) e = t3[r], i2.push(this.writeByte(e));
+    return i2;
+  }, t2;
+}();
+var ie = function() {
+  var t2;
+  function e(t3) {
+    var e2, r, n2;
+    for (this.scalarType = t3.readInt(), this.tableCount = t3.readShort(), this.searchRange = t3.readShort(), this.entrySelector = t3.readShort(), this.rangeShift = t3.readShort(), this.tables = {}, r = 0, n2 = this.tableCount; 0 <= n2 ? r < n2 : r > n2; r = 0 <= n2 ? ++r : --r) e2 = { tag: t3.readString(4), checksum: t3.readInt(), offset: t3.readInt(), length: t3.readInt() }, this.tables[e2.tag] = e2;
+  }
+  return e.prototype.encode = function(e2) {
+    var r, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2;
+    for (p2 in f2 = Object.keys(e2).length, s2 = Math.log(2), h2 = 16 * Math.floor(Math.log(f2) / s2), a2 = Math.floor(h2 / s2), u2 = 16 * f2 - h2, (n2 = new ne()).writeInt(this.scalarType), n2.writeShort(f2), n2.writeShort(h2), n2.writeShort(a2), n2.writeShort(u2), i2 = 16 * f2, c2 = n2.pos + i2, o2 = null, d2 = [], e2) for (l2 = e2[p2], n2.writeString(p2), n2.writeInt(t2(l2)), n2.writeInt(c2), n2.writeInt(l2.length), d2 = d2.concat(l2), "head" === p2 && (o2 = c2), c2 += l2.length; c2 % 4; ) d2.push(0), c2++;
+    return n2.write(d2), r = 2981146554 - t2(n2.data), n2.pos = o2 + 8, n2.writeUInt32(r), n2.data;
+  }, t2 = function(t3) {
+    var e2, r, n2, i2;
+    for (t3 = ve.call(t3); t3.length % 4; ) t3.push(0);
+    for (n2 = new ne(t3), r = 0, e2 = 0, i2 = t3.length; e2 < i2; e2 = e2 += 4) r += n2.readUInt32();
+    return 4294967295 & r;
+  }, e;
+}();
+var ae = {}.hasOwnProperty;
+var oe = function(t2, e) {
+  for (var r in e) ae.call(e, r) && (t2[r] = e[r]);
+  function n2() {
+    this.constructor = t2;
+  }
+  return n2.prototype = e.prototype, t2.prototype = new n2(), t2.__super__ = e.prototype, t2;
+};
+re = function() {
+  function t2(t3) {
+    var e;
+    this.file = t3, e = this.file.directory.tables[this.tag], this.exists = !!e, e && (this.offset = e.offset, this.length = e.length, this.parse(this.file.contents));
+  }
+  return t2.prototype.parse = function() {
+  }, t2.prototype.encode = function() {
+  }, t2.prototype.raw = function() {
+    return this.exists ? (this.file.contents.pos = this.offset, this.file.contents.read(this.length)) : null;
+  }, t2;
+}();
+var se = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "head", e.prototype.parse = function(t3) {
+    return t3.pos = this.offset, this.version = t3.readInt(), this.revision = t3.readInt(), this.checkSumAdjustment = t3.readInt(), this.magicNumber = t3.readInt(), this.flags = t3.readShort(), this.unitsPerEm = t3.readShort(), this.created = t3.readLongLong(), this.modified = t3.readLongLong(), this.xMin = t3.readShort(), this.yMin = t3.readShort(), this.xMax = t3.readShort(), this.yMax = t3.readShort(), this.macStyle = t3.readShort(), this.lowestRecPPEM = t3.readShort(), this.fontDirectionHint = t3.readShort(), this.indexToLocFormat = t3.readShort(), this.glyphDataFormat = t3.readShort();
+  }, e.prototype.encode = function(t3) {
+    var e2;
+    return (e2 = new ne()).writeInt(this.version), e2.writeInt(this.revision), e2.writeInt(this.checkSumAdjustment), e2.writeInt(this.magicNumber), e2.writeShort(this.flags), e2.writeShort(this.unitsPerEm), e2.writeLongLong(this.created), e2.writeLongLong(this.modified), e2.writeShort(this.xMin), e2.writeShort(this.yMin), e2.writeShort(this.xMax), e2.writeShort(this.yMax), e2.writeShort(this.macStyle), e2.writeShort(this.lowestRecPPEM), e2.writeShort(this.fontDirectionHint), e2.writeShort(t3), e2.writeShort(this.glyphDataFormat), e2.data;
+  }, e;
+}();
+var ce = function() {
+  function t2(t3, e) {
+    var r, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2, g2, m2, v2, b3;
+    switch (this.platformID = t3.readUInt16(), this.encodingID = t3.readShort(), this.offset = e + t3.readInt(), h2 = t3.pos, t3.pos = this.offset, this.format = t3.readUInt16(), this.length = t3.readUInt16(), this.language = t3.readUInt16(), this.isUnicode = 3 === this.platformID && 1 === this.encodingID && 4 === this.format || 0 === this.platformID && 4 === this.format, this.codeMap = {}, this.format) {
+      case 0:
+        for (s2 = 0; s2 < 256; ++s2) this.codeMap[s2] = t3.readByte();
+        break;
+      case 4:
+        for (f2 = t3.readUInt16(), l2 = f2 / 2, t3.pos += 6, i2 = function() {
+          var e2, r2;
+          for (r2 = [], s2 = e2 = 0; 0 <= l2 ? e2 < l2 : e2 > l2; s2 = 0 <= l2 ? ++e2 : --e2) r2.push(t3.readUInt16());
+          return r2;
+        }(), t3.pos += 2, p2 = function() {
+          var e2, r2;
+          for (r2 = [], s2 = e2 = 0; 0 <= l2 ? e2 < l2 : e2 > l2; s2 = 0 <= l2 ? ++e2 : --e2) r2.push(t3.readUInt16());
+          return r2;
+        }(), c2 = function() {
+          var e2, r2;
+          for (r2 = [], s2 = e2 = 0; 0 <= l2 ? e2 < l2 : e2 > l2; s2 = 0 <= l2 ? ++e2 : --e2) r2.push(t3.readUInt16());
+          return r2;
+        }(), u2 = function() {
+          var e2, r2;
+          for (r2 = [], s2 = e2 = 0; 0 <= l2 ? e2 < l2 : e2 > l2; s2 = 0 <= l2 ? ++e2 : --e2) r2.push(t3.readUInt16());
+          return r2;
+        }(), n2 = (this.length - t3.pos + this.offset) / 2, o2 = function() {
+          var e2, r2;
+          for (r2 = [], s2 = e2 = 0; 0 <= n2 ? e2 < n2 : e2 > n2; s2 = 0 <= n2 ? ++e2 : --e2) r2.push(t3.readUInt16());
+          return r2;
+        }(), s2 = m2 = 0, b3 = i2.length; m2 < b3; s2 = ++m2) for (g2 = i2[s2], r = v2 = d2 = p2[s2]; d2 <= g2 ? v2 <= g2 : v2 >= g2; r = d2 <= g2 ? ++v2 : --v2) 0 === u2[s2] ? a2 = r + c2[s2] : 0 !== (a2 = o2[u2[s2] / 2 + (r - d2) - (l2 - s2)] || 0) && (a2 += c2[s2]), this.codeMap[r] = 65535 & a2;
+    }
+    t3.pos = h2;
+  }
+  return t2.encode = function(t3, e) {
+    var r, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2, g2, m2, v2, b3, y2, w2, N2, L2, A2, x2, S2, _2, P2, k2, I2, F2, C2, j2, O2, B2, M2, E2, q2, D2, R2, T2, U2, z2, H2, W2, V2, G2, Y2;
+    switch (I2 = new ne(), a2 = Object.keys(t3).sort(function(t4, e2) {
+      return t4 - e2;
+    }), e) {
+      case "macroman":
+        for (p2 = 0, g2 = function() {
+          var t4 = [];
+          for (d2 = 0; d2 < 256; ++d2) t4.push(0);
+          return t4;
+        }(), v2 = { 0: 0 }, i2 = {}, F2 = 0, B2 = a2.length; F2 < B2; F2++) null == v2[W2 = t3[n2 = a2[F2]]] && (v2[W2] = ++p2), i2[n2] = { old: t3[n2], new: v2[t3[n2]] }, g2[n2] = v2[t3[n2]];
+        return I2.writeUInt16(1), I2.writeUInt16(0), I2.writeUInt32(12), I2.writeUInt16(0), I2.writeUInt16(262), I2.writeUInt16(0), I2.write(g2), { charMap: i2, subtable: I2.data, maxGlyphID: p2 + 1 };
+      case "unicode":
+        for (P2 = [], h2 = [], b3 = 0, v2 = {}, r = {}, m2 = c2 = null, C2 = 0, M2 = a2.length; C2 < M2; C2++) null == v2[w2 = t3[n2 = a2[C2]]] && (v2[w2] = ++b3), r[n2] = { old: w2, new: v2[w2] }, o2 = v2[w2] - n2, null != m2 && o2 === c2 || (m2 && h2.push(m2), P2.push(n2), c2 = o2), m2 = n2;
+        for (m2 && h2.push(m2), h2.push(65535), P2.push(65535), S2 = 2 * (x2 = P2.length), A2 = 2 * Math.pow(Math.log(x2) / Math.LN2, 2), l2 = Math.log(A2 / 2) / Math.LN2, L2 = 2 * x2 - A2, s2 = [], N2 = [], f2 = [], d2 = j2 = 0, E2 = P2.length; j2 < E2; d2 = ++j2) {
+          if (_2 = P2[d2], u2 = h2[d2], 65535 === _2) {
+            s2.push(0), N2.push(0);
+            break;
+          }
+          if (_2 - (k2 = r[_2].new) >= 32768) for (s2.push(0), N2.push(2 * (f2.length + x2 - d2)), n2 = O2 = _2; _2 <= u2 ? O2 <= u2 : O2 >= u2; n2 = _2 <= u2 ? ++O2 : --O2) f2.push(r[n2].new);
+          else s2.push(k2 - _2), N2.push(0);
+        }
+        for (I2.writeUInt16(3), I2.writeUInt16(1), I2.writeUInt32(12), I2.writeUInt16(4), I2.writeUInt16(16 + 8 * x2 + 2 * f2.length), I2.writeUInt16(0), I2.writeUInt16(S2), I2.writeUInt16(A2), I2.writeUInt16(l2), I2.writeUInt16(L2), z2 = 0, q2 = h2.length; z2 < q2; z2++) n2 = h2[z2], I2.writeUInt16(n2);
+        for (I2.writeUInt16(0), H2 = 0, D2 = P2.length; H2 < D2; H2++) n2 = P2[H2], I2.writeUInt16(n2);
+        for (V2 = 0, R2 = s2.length; V2 < R2; V2++) o2 = s2[V2], I2.writeUInt16(o2);
+        for (G2 = 0, T2 = N2.length; G2 < T2; G2++) y2 = N2[G2], I2.writeUInt16(y2);
+        for (Y2 = 0, U2 = f2.length; Y2 < U2; Y2++) p2 = f2[Y2], I2.writeUInt16(p2);
+        return { charMap: r, subtable: I2.data, maxGlyphID: b3 + 1 };
+    }
+  }, t2;
+}();
+var ue = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "cmap", e.prototype.parse = function(t3) {
+    var e2, r, n2;
+    for (t3.pos = this.offset, this.version = t3.readUInt16(), n2 = t3.readUInt16(), this.tables = [], this.unicode = null, r = 0; 0 <= n2 ? r < n2 : r > n2; r = 0 <= n2 ? ++r : --r) e2 = new ce(t3, this.offset), this.tables.push(e2), e2.isUnicode && null == this.unicode && (this.unicode = e2);
+    return true;
+  }, e.encode = function(t3, e2) {
+    var r, n2;
+    return null == e2 && (e2 = "macroman"), r = ce.encode(t3, e2), (n2 = new ne()).writeUInt16(0), n2.writeUInt16(1), r.table = n2.data.concat(r.subtable), r;
+  }, e;
+}();
+var he = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "hhea", e.prototype.parse = function(t3) {
+    return t3.pos = this.offset, this.version = t3.readInt(), this.ascender = t3.readShort(), this.decender = t3.readShort(), this.lineGap = t3.readShort(), this.advanceWidthMax = t3.readShort(), this.minLeftSideBearing = t3.readShort(), this.minRightSideBearing = t3.readShort(), this.xMaxExtent = t3.readShort(), this.caretSlopeRise = t3.readShort(), this.caretSlopeRun = t3.readShort(), this.caretOffset = t3.readShort(), t3.pos += 8, this.metricDataFormat = t3.readShort(), this.numberOfMetrics = t3.readUInt16();
+  }, e;
+}();
+var le = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "OS/2", e.prototype.parse = function(t3) {
+    if (t3.pos = this.offset, this.version = t3.readUInt16(), this.averageCharWidth = t3.readShort(), this.weightClass = t3.readUInt16(), this.widthClass = t3.readUInt16(), this.type = t3.readShort(), this.ySubscriptXSize = t3.readShort(), this.ySubscriptYSize = t3.readShort(), this.ySubscriptXOffset = t3.readShort(), this.ySubscriptYOffset = t3.readShort(), this.ySuperscriptXSize = t3.readShort(), this.ySuperscriptYSize = t3.readShort(), this.ySuperscriptXOffset = t3.readShort(), this.ySuperscriptYOffset = t3.readShort(), this.yStrikeoutSize = t3.readShort(), this.yStrikeoutPosition = t3.readShort(), this.familyClass = t3.readShort(), this.panose = function() {
+      var e2, r;
+      for (r = [], e2 = 0; e2 < 10; ++e2) r.push(t3.readByte());
+      return r;
+    }(), this.charRange = function() {
+      var e2, r;
+      for (r = [], e2 = 0; e2 < 4; ++e2) r.push(t3.readInt());
+      return r;
+    }(), this.vendorID = t3.readString(4), this.selection = t3.readShort(), this.firstCharIndex = t3.readShort(), this.lastCharIndex = t3.readShort(), this.version > 0 && (this.ascent = t3.readShort(), this.descent = t3.readShort(), this.lineGap = t3.readShort(), this.winAscent = t3.readShort(), this.winDescent = t3.readShort(), this.codePageRange = function() {
+      var e2, r;
+      for (r = [], e2 = 0; e2 < 2; e2 = ++e2) r.push(t3.readInt());
+      return r;
+    }(), this.version > 1)) return this.xHeight = t3.readShort(), this.capHeight = t3.readShort(), this.defaultChar = t3.readShort(), this.breakChar = t3.readShort(), this.maxContext = t3.readShort();
+  }, e;
+}();
+var fe = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "post", e.prototype.parse = function(t3) {
+    var e2, r, n2;
+    switch (t3.pos = this.offset, this.format = t3.readInt(), this.italicAngle = t3.readInt(), this.underlinePosition = t3.readShort(), this.underlineThickness = t3.readShort(), this.isFixedPitch = t3.readInt(), this.minMemType42 = t3.readInt(), this.maxMemType42 = t3.readInt(), this.minMemType1 = t3.readInt(), this.maxMemType1 = t3.readInt(), this.format) {
+      case 65536:
+        break;
+      case 131072:
+        var i2;
+        for (r = t3.readUInt16(), this.glyphNameIndex = [], i2 = 0; 0 <= r ? i2 < r : i2 > r; i2 = 0 <= r ? ++i2 : --i2) this.glyphNameIndex.push(t3.readUInt16());
+        for (this.names = [], n2 = []; t3.pos < this.offset + this.length; ) e2 = t3.readByte(), n2.push(this.names.push(t3.readString(e2)));
+        return n2;
+      case 151552:
+        return r = t3.readUInt16(), this.offsets = t3.read(r);
+      case 196608:
+        break;
+      case 262144:
+        return this.map = (function() {
+          var e3, r2, n3;
+          for (n3 = [], i2 = e3 = 0, r2 = this.file.maxp.numGlyphs; 0 <= r2 ? e3 < r2 : e3 > r2; i2 = 0 <= r2 ? ++e3 : --e3) n3.push(t3.readUInt32());
+          return n3;
+        }).call(this);
+    }
+  }, e;
+}();
+var de = function(t2, e) {
+  this.raw = t2, this.length = t2.length, this.platformID = e.platformID, this.encodingID = e.encodingID, this.languageID = e.languageID;
+};
+var pe = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "name", e.prototype.parse = function(t3) {
+    var e2, r, n2, i2, a2, o2, s2, c2, u2, h2, l2;
+    for (t3.pos = this.offset, t3.readShort(), e2 = t3.readShort(), o2 = t3.readShort(), r = [], i2 = 0; 0 <= e2 ? i2 < e2 : i2 > e2; i2 = 0 <= e2 ? ++i2 : --i2) r.push({ platformID: t3.readShort(), encodingID: t3.readShort(), languageID: t3.readShort(), nameID: t3.readShort(), length: t3.readShort(), offset: this.offset + o2 + t3.readShort() });
+    for (s2 = {}, i2 = u2 = 0, h2 = r.length; u2 < h2; i2 = ++u2) n2 = r[i2], t3.pos = n2.offset, c2 = t3.readString(n2.length), a2 = new de(c2, n2), null == s2[l2 = n2.nameID] && (s2[l2] = []), s2[n2.nameID].push(a2);
+    this.strings = s2, this.copyright = s2[0], this.fontFamily = s2[1], this.fontSubfamily = s2[2], this.uniqueSubfamily = s2[3], this.fontName = s2[4], this.version = s2[5];
+    try {
+      this.postscriptName = s2[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "");
+    } catch (t4) {
+      this.postscriptName = s2[4][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "");
+    }
+    return this.trademark = s2[7], this.manufacturer = s2[8], this.designer = s2[9], this.description = s2[10], this.vendorUrl = s2[11], this.designerUrl = s2[12], this.license = s2[13], this.licenseUrl = s2[14], this.preferredFamily = s2[15], this.preferredSubfamily = s2[17], this.compatibleFull = s2[18], this.sampleText = s2[19];
+  }, e;
+}();
+var ge = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "maxp", e.prototype.parse = function(t3) {
+    return t3.pos = this.offset, this.version = t3.readInt(), this.numGlyphs = t3.readUInt16(), this.maxPoints = t3.readUInt16(), this.maxContours = t3.readUInt16(), this.maxCompositePoints = t3.readUInt16(), this.maxComponentContours = t3.readUInt16(), this.maxZones = t3.readUInt16(), this.maxTwilightPoints = t3.readUInt16(), this.maxStorage = t3.readUInt16(), this.maxFunctionDefs = t3.readUInt16(), this.maxInstructionDefs = t3.readUInt16(), this.maxStackElements = t3.readUInt16(), this.maxSizeOfInstructions = t3.readUInt16(), this.maxComponentElements = t3.readUInt16(), this.maxComponentDepth = t3.readUInt16();
+  }, e;
+}();
+var me = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "hmtx", e.prototype.parse = function(t3) {
+    var e2, r, n2, i2, a2, o2, s2;
+    for (t3.pos = this.offset, this.metrics = [], e2 = 0, o2 = this.file.hhea.numberOfMetrics; 0 <= o2 ? e2 < o2 : e2 > o2; e2 = 0 <= o2 ? ++e2 : --e2) this.metrics.push({ advance: t3.readUInt16(), lsb: t3.readInt16() });
+    for (n2 = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics, this.leftSideBearings = function() {
+      var r2, i3;
+      for (i3 = [], e2 = r2 = 0; 0 <= n2 ? r2 < n2 : r2 > n2; e2 = 0 <= n2 ? ++r2 : --r2) i3.push(t3.readInt16());
+      return i3;
+    }(), this.widths = (function() {
+      var t4, e3, r2, n3;
+      for (n3 = [], t4 = 0, e3 = (r2 = this.metrics).length; t4 < e3; t4++) i2 = r2[t4], n3.push(i2.advance);
+      return n3;
+    }).call(this), r = this.widths[this.widths.length - 1], s2 = [], e2 = a2 = 0; 0 <= n2 ? a2 < n2 : a2 > n2; e2 = 0 <= n2 ? ++a2 : --a2) s2.push(this.widths.push(r));
+    return s2;
+  }, e.prototype.forGlyph = function(t3) {
+    return t3 in this.metrics ? this.metrics[t3] : { advance: this.metrics[this.metrics.length - 1].advance, lsb: this.leftSideBearings[t3 - this.metrics.length] };
+  }, e;
+}();
+var ve = [].slice;
+var be = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "glyf", e.prototype.parse = function() {
+    return this.cache = {};
+  }, e.prototype.glyphFor = function(t3) {
+    var e2, r, n2, i2, a2, o2, s2, c2, u2, h2;
+    return t3 in this.cache ? this.cache[t3] : (i2 = this.file.loca, e2 = this.file.contents, r = i2.indexOf(t3), 0 === (n2 = i2.lengthOf(t3)) ? this.cache[t3] = null : (e2.pos = this.offset + r, a2 = (o2 = new ne(e2.read(n2))).readShort(), c2 = o2.readShort(), h2 = o2.readShort(), s2 = o2.readShort(), u2 = o2.readShort(), this.cache[t3] = -1 === a2 ? new we(o2, c2, h2, s2, u2) : new ye(o2, a2, c2, h2, s2, u2), this.cache[t3]));
+  }, e.prototype.encode = function(t3, e2, r) {
+    var n2, i2, a2, o2, s2;
+    for (a2 = [], i2 = [], o2 = 0, s2 = e2.length; o2 < s2; o2++) n2 = t3[e2[o2]], i2.push(a2.length), n2 && (a2 = a2.concat(n2.encode(r)));
+    return i2.push(a2.length), { table: a2, offsets: i2 };
+  }, e;
+}();
+var ye = function() {
+  function t2(t3, e, r, n2, i2, a2) {
+    this.raw = t3, this.numberOfContours = e, this.xMin = r, this.yMin = n2, this.xMax = i2, this.yMax = a2, this.compound = false;
+  }
+  return t2.prototype.encode = function() {
+    return this.raw.data;
+  }, t2;
+}();
+var we = function() {
+  function t2(t3, e, r, n2, i2) {
+    var a2, o2;
+    for (this.raw = t3, this.xMin = e, this.yMin = r, this.xMax = n2, this.yMax = i2, this.compound = true, this.glyphIDs = [], this.glyphOffsets = [], a2 = this.raw; o2 = a2.readShort(), this.glyphOffsets.push(a2.pos), this.glyphIDs.push(a2.readUInt16()), 32 & o2; ) a2.pos += 1 & o2 ? 4 : 2, 128 & o2 ? a2.pos += 8 : 64 & o2 ? a2.pos += 4 : 8 & o2 && (a2.pos += 2);
+  }
+  return 1, 8, 32, 64, 128, t2.prototype.encode = function() {
+    var t3, e, r;
+    for (e = new ne(ve.call(this.raw.data)), t3 = 0, r = this.glyphIDs.length; t3 < r; ++t3) e.pos = this.glyphOffsets[t3];
+    return e.data;
+  }, t2;
+}();
+var Ne = function(t2) {
+  function e() {
+    return e.__super__.constructor.apply(this, arguments);
+  }
+  return oe(e, re), e.prototype.tag = "loca", e.prototype.parse = function(t3) {
+    var e2, r;
+    return t3.pos = this.offset, e2 = this.file.head.indexToLocFormat, this.offsets = 0 === e2 ? (function() {
+      var e3, n2;
+      for (n2 = [], r = 0, e3 = this.length; r < e3; r += 2) n2.push(2 * t3.readUInt16());
+      return n2;
+    }).call(this) : (function() {
+      var e3, n2;
+      for (n2 = [], r = 0, e3 = this.length; r < e3; r += 4) n2.push(t3.readUInt32());
+      return n2;
+    }).call(this);
+  }, e.prototype.indexOf = function(t3) {
+    return this.offsets[t3];
+  }, e.prototype.lengthOf = function(t3) {
+    return this.offsets[t3 + 1] - this.offsets[t3];
+  }, e.prototype.encode = function(t3, e2) {
+    for (var r = new Uint32Array(this.offsets.length), n2 = 0, i2 = 0, a2 = 0; a2 < r.length; ++a2) if (r[a2] = n2, i2 < e2.length && e2[i2] == a2) {
+      ++i2, r[a2] = n2;
+      var o2 = this.offsets[a2], s2 = this.offsets[a2 + 1] - o2;
+      s2 > 0 && (n2 += s2);
+    }
+    for (var c2 = new Array(4 * r.length), u2 = 0; u2 < r.length; ++u2) c2[4 * u2 + 3] = 255 & r[u2], c2[4 * u2 + 2] = (65280 & r[u2]) >> 8, c2[4 * u2 + 1] = (16711680 & r[u2]) >> 16, c2[4 * u2] = (4278190080 & r[u2]) >> 24;
+    return c2;
+  }, e;
+}();
+var Le = function() {
+  function t2(t3) {
+    this.font = t3, this.subset = {}, this.unicodes = {}, this.next = 33;
+  }
+  return t2.prototype.generateCmap = function() {
+    var t3, e, r, n2, i2;
+    for (e in n2 = this.font.cmap.tables[0].codeMap, t3 = {}, i2 = this.subset) r = i2[e], t3[e] = n2[r];
+    return t3;
+  }, t2.prototype.glyphsFor = function(t3) {
+    var e, r, n2, i2, a2, o2, s2;
+    for (n2 = {}, a2 = 0, o2 = t3.length; a2 < o2; a2++) n2[i2 = t3[a2]] = this.font.glyf.glyphFor(i2);
+    for (i2 in e = [], n2) (null != (r = n2[i2]) ? r.compound : void 0) && e.push.apply(e, r.glyphIDs);
+    if (e.length > 0) for (i2 in s2 = this.glyphsFor(e)) r = s2[i2], n2[i2] = r;
+    return n2;
+  }, t2.prototype.encode = function(t3, e) {
+    var r, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2, g2, m2;
+    for (n2 in r = ue.encode(this.generateCmap(), "unicode"), a2 = this.glyphsFor(t3), f2 = { 0: 0 }, m2 = r.charMap) f2[(s2 = m2[n2]).old] = s2.new;
+    for (d2 in l2 = r.maxGlyphID, a2) d2 in f2 || (f2[d2] = l2++);
+    return u2 = function(t4) {
+      var e2, r2;
+      for (e2 in r2 = {}, t4) r2[t4[e2]] = e2;
+      return r2;
+    }(f2), h2 = Object.keys(u2).sort(function(t4, e2) {
+      return t4 - e2;
+    }), p2 = function() {
+      var t4, e2, r2;
+      for (r2 = [], t4 = 0, e2 = h2.length; t4 < e2; t4++) o2 = h2[t4], r2.push(u2[o2]);
+      return r2;
+    }(), i2 = this.font.glyf.encode(a2, p2, f2), c2 = this.font.loca.encode(i2.offsets, p2), g2 = { cmap: this.font.cmap.raw(), glyf: i2.table, loca: c2, hmtx: this.font.hmtx.raw(), hhea: this.font.hhea.raw(), maxp: this.font.maxp.raw(), post: this.font.post.raw(), name: this.font.name.raw(), head: this.font.head.encode(e) }, this.font.os2.exists && (g2["OS/2"] = this.font.os2.raw()), this.font.directory.encode(g2);
+  }, t2;
+}();
+E.API.PDFObject = function() {
+  var t2;
+  function e() {
+  }
+  return t2 = function(t3, e2) {
+    return (Array(e2 + 1).join("0") + t3).slice(-e2);
+  }, e.convert = function(r) {
+    var n2, i2, a2, o2;
+    if (Array.isArray(r)) return "[" + function() {
+      var t3, i3, a3;
+      for (a3 = [], t3 = 0, i3 = r.length; t3 < i3; t3++) n2 = r[t3], a3.push(e.convert(n2));
+      return a3;
+    }().join(" ") + "]";
+    if ("string" == typeof r) return "/" + r;
+    if (null != r ? r.isString : void 0) return "(" + r + ")";
+    if (r instanceof Date) return "(D:" + t2(r.getUTCFullYear(), 4) + t2(r.getUTCMonth(), 2) + t2(r.getUTCDate(), 2) + t2(r.getUTCHours(), 2) + t2(r.getUTCMinutes(), 2) + t2(r.getUTCSeconds(), 2) + "Z)";
+    if ("[object Object]" === {}.toString.call(r)) {
+      for (i2 in a2 = ["<<"], r) o2 = r[i2], a2.push("/" + i2 + " " + e.convert(o2));
+      return a2.push(">>"), a2.join("\n");
+    }
+    return "" + r;
+  }, e;
+}();
+var jspdf_es_min_default = E;
+export {
+  St as AcroForm,
+  At as AcroFormAppearance,
+  mt as AcroFormButton,
+  wt as AcroFormCheckBox,
+  ft as AcroFormChoiceField,
+  pt as AcroFormComboBox,
+  gt as AcroFormEditBox,
+  dt as AcroFormListBox,
+  Lt as AcroFormPasswordField,
+  vt as AcroFormPushButton,
+  bt as AcroFormRadioButton,
+  Nt as AcroFormTextField,
+  j as GState,
+  B as ShadingPattern,
+  M as TilingPattern,
+  jspdf_es_min_default as default,
+  E as jsPDF
+};
+/*! Bundled license information:
+
+jspdf/dist/jspdf.es.min.js:
+  (** @license
+   *
+   * jsPDF - PDF Document creation from JavaScript
+   * Version 2.5.2 Built on 2024-09-17T13:29:57.859Z
+   *                      CommitID 00000000
+   *
+   * Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
+   *               2015-2021 yWorks GmbH, http://www.yworks.com
+   *               2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX
+   *               2016-2018 Aras Abbasi <aras.abbasi@gmail.com>
+   *               2010 Aaron Spike, https://github.com/acspike
+   *               2012 Willow Systems Corporation, https://github.com/willowsystems
+   *               2012 Pablo Hess, https://github.com/pablohess
+   *               2012 Florian Jenett, https://github.com/fjenett
+   *               2013 Warren Weckesser, https://github.com/warrenweckesser
+   *               2013 Youssef Beddad, https://github.com/lifof
+   *               2013 Lee Driscoll, https://github.com/lsdriscoll
+   *               2013 Stefan Slonevskiy, https://github.com/stefslon
+   *               2013 Jeremy Morel, https://github.com/jmorel
+   *               2013 Christoph Hartmann, https://github.com/chris-rock
+   *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
+   *               2014 James Makes, https://github.com/dollaruw
+   *               2014 Diego Casorran, https://github.com/diegocr
+   *               2014 Steven Spungin, https://github.com/Flamenco
+   *               2014 Kenneth Glassey, https://github.com/Gavvers
+   *
+   * Permission is hereby granted, free of charge, to any person obtaining
+   * a copy of this software and associated documentation files (the
+   * "Software"), to deal in the Software without restriction, including
+   * without limitation the rights to use, copy, modify, merge, publish,
+   * distribute, sublicense, and/or sell copies of the Software, and to
+   * permit persons to whom the Software is furnished to do so, subject to
+   * the following conditions:
+   *
+   * The above copyright notice and this permission notice shall be
+   * included in all copies or substantial portions of the Software.
+   *
+   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+   *
+   * Contributor(s):
+   *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
+   *    kim3er, mfo, alnorth, Flamenco
+   *)
+  (**
+   * A class to parse color values
+   * @author Stoyan Stefanov <sstoo@gmail.com>
+   * {@link   http://www.phpied.com/rgb-color-parser-in-javascript/}
+   * @license Use it if you like it
+   *)
+  (**
+   * @license
+   * Joseph Myers does not specify a particular license for his work.
+   *
+   * Author: Joseph Myers
+   * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js
+   *
+   * Modified by: Owen Leong
+   *)
+  (**
+   * @license
+   * FPDF is released under a permissive license: there is no usage restriction.
+   * You may embed it freely in your application (commercial or not), with or
+   * without modifications.
+   *
+   * Reference: http://www.fpdf.org/en/script/script37.php
+   *)
+  (**
+   * @license
+   * Licensed under the MIT License.
+   * http://opensource.org/licenses/mit-license
+   * Author: Owen Leong (@owenl131)
+   * Date: 15 Oct 2020
+   * References:
+   * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt
+   * https://github.com/foliojs/pdfkit/blob/master/lib/security.js
+   * http://www.fpdf.org/en/script/script37.php
+   *)
+  (**
+   * @license
+   *
+   * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
+   *
+   * Permission is hereby granted, free of charge, to any person obtaining
+   * a copy of this software and associated documentation files (the
+   * "Software"), to deal in the Software without restriction, including
+   * without limitation the rights to use, copy, modify, merge, publish,
+   * distribute, sublicense, and/or sell copies of the Software, and to
+   * permit persons to whom the Software is furnished to do so, subject to
+   * the following conditions:
+   *
+   * The above copyright notice and this permission notice shall be
+   * included in all copies or substantial portions of the Software.
+   *
+   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+   * ====================================================================
+   *)
+  (**
+   * @license
+   * (c) Dean McNamee <dean@gmail.com>, 2013.
+   *
+   * https://github.com/deanm/omggif
+   *
+   * Permission is hereby granted, free of charge, to any person obtaining a copy
+   * of this software and associated documentation files (the "Software"), to
+   * deal in the Software without restriction, including without limitation the
+   * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+   * sell copies of the Software, and to permit persons to whom the Software is
+   * furnished to do so, subject to the following conditions:
+   *
+   * The above copyright notice and this permission notice shall be included in
+   * all copies or substantial portions of the Software.
+   *
+   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+   * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+   * IN THE SOFTWARE.
+   *
+   * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,
+   * including animation and compression.  It does not rely on any specific
+   * underlying system, so should run in the browser, Node, or Plask.
+   *)
+  (**
+   * @license
+    Copyright (c) 2008, Adobe Systems Incorporated
+    All rights reserved.
+  
+    Redistribution and use in source and binary forms, with or without 
+    modification, are permitted provided that the following conditions are
+    met:
+  
+    * Redistributions of source code must retain the above copyright notice, 
+      this list of conditions and the following disclaimer.
+    
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the 
+      documentation and/or other materials provided with the distribution.
+    
+    * Neither the name of Adobe Systems Incorporated nor the names of its 
+      contributors may be used to endorse or promote products derived from 
+      this software without specific prior written permission.
+  
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *)
+  (**
+   * @license
+   * Copyright (c) 2017 Aras Abbasi
+   *
+   * Licensed under the MIT License.
+   * http://opensource.org/licenses/mit-license
+   *)
+*/
+//# sourceMappingURL=jspdf.js.map
Index: imaps-frontend/node_modules/.vite/deps/jspdf.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/jspdf.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/jspdf.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": ["../../fflate/esm/browser.js", "../../jspdf/src/libs/globalObject.js", "../../jspdf/src/libs/console.js", "../../jspdf/src/libs/FileSaver.js", "../../jspdf/src/libs/AtobBtoa.js", "../../jspdf/src/libs/rgbcolor.js", "../../jspdf/src/libs/md5.js", "../../jspdf/src/libs/rc4.js", "../../jspdf/src/libs/pdfsecurity.js", "../../jspdf/src/libs/pdfname.js", "../../jspdf/src/jspdf.js", "../../jspdf/src/modules/acroform.js", "../../jspdf/src/libs/fontFace.js", "../../jspdf/src/modules/addimage.js", "../../jspdf/src/modules/annotations.js", "../../jspdf/src/modules/arabic.js", "../../jspdf/src/modules/autoprint.js", "../../jspdf/src/modules/canvas.js", "../../jspdf/src/modules/cell.js", "../../jspdf/src/modules/javascript.js", "../../jspdf/src/modules/context2d.js", "../../jspdf/src/modules/filters.js", "../../jspdf/src/modules/fileloading.js", "../../jspdf/src/modules/html.js", "../../jspdf/src/modules/outline.js", "../../jspdf/src/modules/jpeg_support.js", "../../jspdf/src/libs/png.js", "../../jspdf/src/modules/split_text_to_size.js", "../../jspdf/src/libs/omggif.js", "../../jspdf/src/libs/JPEGEncoder.js", "../../jspdf/src/libs/BMPDecoder.js", "../../jspdf/src/libs/WebPDecoder.js", "../../jspdf/src/modules/png_support.js", "../../jspdf/src/modules/gif_support.js", "../../jspdf/src/modules/bmp_support.js", "../../jspdf/src/modules/webp_support.js", "../../jspdf/src/modules/rgba_support.js", "../../jspdf/src/modules/setlanguage.js", "../../jspdf/src/modules/standard_fonts_metrics.js", "../../jspdf/src/modules/ttfsupport.js", "../../jspdf/src/modules/svg.js", "../../jspdf/src/modules/total_pages.js", "../../jspdf/src/modules/viewerpreferences.js", "../../jspdf/src/modules/xmp_metadata.js", "../../jspdf/src/modules/utf8.js", "../../jspdf/src/modules/vfs.js", "../../jspdf/src/libs/bidiEngine.js", "../../jspdf/src/libs/ttffont.js"],
+  "sourcesContent": ["// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n        c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n    ], { type: 'text/javascript' }))));\n    w.onmessage = function (e) {\n        var d = e.data, ed = d.$e$;\n        if (ed) {\n            var err = new Error(ed[0]);\n            err['code'] = ed[1];\n            err.stack = ed[2];\n            cb(err, null);\n        }\n        else\n            cb(null, d);\n    };\n    w.postMessage(msg, transfer);\n    return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n        b[i] = start += 1 << eb[i - 1];\n    }\n    // numbers here are at max 18 bits\n    var r = new i32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n        for (var j = b[i]; j < b[i + 1]; ++j) {\n            r[j] = ((j - b[i]) << 5) | i;\n        }\n    }\n    return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n    // reverse table algorithm from SO\n    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n    var s = cd.length;\n    // index\n    var i = 0;\n    // u16 \"map\": index -> # of codes with bit length = index\n    var l = new u16(mb);\n    // length of cd must be 288 (total # of codes)\n    for (; i < s; ++i) {\n        if (cd[i])\n            ++l[cd[i] - 1];\n    }\n    // u16 \"map\": index -> minimum code for bit length = index\n    var le = new u16(mb);\n    for (i = 1; i < mb; ++i) {\n        le[i] = (le[i - 1] + l[i - 1]) << 1;\n    }\n    var co;\n    if (r) {\n        // u16 \"map\": index -> number of actual bits, symbol for code\n        co = new u16(1 << mb);\n        // bits to remove for reverser\n        var rvb = 15 - mb;\n        for (i = 0; i < s; ++i) {\n            // ignore 0 lengths\n            if (cd[i]) {\n                // num encoding both symbol and bits read\n                var sv = (i << 4) | cd[i];\n                // free bits\n                var r_1 = mb - cd[i];\n                // start value\n                var v = le[cd[i] - 1]++ << r_1;\n                // m is end value\n                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n                    // every 16 bit value starting with the code yields the same result\n                    co[rev[v] >> rvb] = sv;\n                }\n            }\n        }\n    }\n    else {\n        co = new u16(s);\n        for (i = 0; i < s; ++i) {\n            if (cd[i]) {\n                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n            }\n        }\n    }\n    return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n    flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n    flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n    flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n    flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n    fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n        if (a[i] > m)\n            m = a[i];\n    }\n    return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n    if (s == null || s < 0)\n        s = 0;\n    if (e == null || e > v.length)\n        e = v.length;\n    // can't use .constructor in case user-supplied\n    return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n    UnexpectedEOF: 0,\n    InvalidBlockType: 1,\n    InvalidLengthLiteral: 2,\n    InvalidDistance: 3,\n    StreamFinished: 4,\n    NoStreamHandler: 5,\n    InvalidHeader: 6,\n    NoCallback: 7,\n    InvalidUTF8: 8,\n    ExtraFieldTooLong: 9,\n    InvalidDate: 10,\n    FilenameTooLong: 11,\n    StreamFinishing: 12,\n    InvalidZipData: 13,\n    UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n    'unexpected EOF',\n    'invalid block type',\n    'invalid length/literal',\n    'invalid distance',\n    'stream finished',\n    'no stream handler',\n    ,\n    'no callback',\n    'invalid UTF-8 data',\n    'extra field too long',\n    'date not in range 1980-2099',\n    'filename too long',\n    'stream finishing',\n    'invalid zip data'\n    // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n    var e = new Error(msg || ec[ind]);\n    e.code = ind;\n    if (Error.captureStackTrace)\n        Error.captureStackTrace(e, err);\n    if (!nt)\n        throw e;\n    return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n    // source length       dict length\n    var sl = dat.length, dl = dict ? dict.length : 0;\n    if (!sl || st.f && !st.l)\n        return buf || new u8(0);\n    var noBuf = !buf;\n    // have to estimate size\n    var resize = noBuf || st.i != 2;\n    // no state\n    var noSt = st.i;\n    // Assumes roughly 33% compression ratio average\n    if (noBuf)\n        buf = new u8(sl * 3);\n    // ensure buffer can fit at least l elements\n    var cbuf = function (l) {\n        var bl = buf.length;\n        // need to increase size to fit\n        if (l > bl) {\n            // Double or set to necessary, whichever is greater\n            var nbuf = new u8(Math.max(bl * 2, l));\n            nbuf.set(buf);\n            buf = nbuf;\n        }\n    };\n    //  last chunk         bitpos           bytes\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    // total bits\n    var tbts = sl * 8;\n    do {\n        if (!lm) {\n            // BFINAL - this is only 1 when last chunk is next\n            final = bits(dat, pos, 1);\n            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n            var type = bits(dat, pos + 1, 3);\n            pos += 3;\n            if (!type) {\n                // go to end of byte boundary\n                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n                if (t > sl) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                // ensure size\n                if (resize)\n                    cbuf(bt + l);\n                // Copy over uncompressed data\n                buf.set(dat.subarray(s, t), bt);\n                // Get new bitpos, update byte count\n                st.b = bt += l, st.p = pos = t * 8, st.f = final;\n                continue;\n            }\n            else if (type == 1)\n                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n            else if (type == 2) {\n                //  literal                            lengths\n                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n                var tl = hLit + bits(dat, pos + 5, 31) + 1;\n                pos += 14;\n                // length+distance tree\n                var ldt = new u8(tl);\n                // code length tree\n                var clt = new u8(19);\n                for (var i = 0; i < hcLen; ++i) {\n                    // use index map to get real code\n                    clt[clim[i]] = bits(dat, pos + i * 3, 7);\n                }\n                pos += hcLen * 3;\n                // code lengths bits\n                var clb = max(clt), clbmsk = (1 << clb) - 1;\n                // code lengths map\n                var clm = hMap(clt, clb, 1);\n                for (var i = 0; i < tl;) {\n                    var r = clm[bits(dat, pos, clbmsk)];\n                    // bits read\n                    pos += r & 15;\n                    // symbol\n                    var s = r >> 4;\n                    // code length to copy\n                    if (s < 16) {\n                        ldt[i++] = s;\n                    }\n                    else {\n                        //  copy   count\n                        var c = 0, n = 0;\n                        if (s == 16)\n                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n                        else if (s == 17)\n                            n = 3 + bits(dat, pos, 7), pos += 3;\n                        else if (s == 18)\n                            n = 11 + bits(dat, pos, 127), pos += 7;\n                        while (n--)\n                            ldt[i++] = c;\n                    }\n                }\n                //    length tree                 distance tree\n                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n                // max length bits\n                lbt = max(lt);\n                // max dist bits\n                dbt = max(dt);\n                lm = hMap(lt, lbt, 1);\n                dm = hMap(dt, dbt, 1);\n            }\n            else\n                err(1);\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n        }\n        // Make sure the buffer can hold this + the largest possible addition\n        // Maximum chunk size (practically, theoretically infinite) is 2^17\n        if (resize)\n            cbuf(bt + 131072);\n        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n        var lpos = pos;\n        for (;; lpos = pos) {\n            // bits read, code\n            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n            pos += c & 15;\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n            if (!c)\n                err(2);\n            if (sym < 256)\n                buf[bt++] = sym;\n            else if (sym == 256) {\n                lpos = pos, lm = null;\n                break;\n            }\n            else {\n                var add = sym - 254;\n                // no extra bits needed if less\n                if (sym > 264) {\n                    // index\n                    var i = sym - 257, b = fleb[i];\n                    add = bits(dat, pos, (1 << b) - 1) + fl[i];\n                    pos += b;\n                }\n                // dist\n                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n                if (!d)\n                    err(3);\n                pos += d & 15;\n                var dt = fd[dsym];\n                if (dsym > 3) {\n                    var b = fdeb[dsym];\n                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n                }\n                if (pos > tbts) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                if (resize)\n                    cbuf(bt + 131072);\n                var end = bt + add;\n                if (bt < dt) {\n                    var shift = dl - dt, dend = Math.min(dt, end);\n                    if (shift + bt < 0)\n                        err(3);\n                    for (; bt < dend; ++bt)\n                        buf[bt] = dict[shift + bt];\n                }\n                for (; bt < end; ++bt)\n                    buf[bt] = buf[bt - dt];\n            }\n        }\n        st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n        if (lm)\n            final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    // don't reallocate for streams or user buffers\n    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n    d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n    // Need extra info to make a tree\n    var t = [];\n    for (var i = 0; i < d.length; ++i) {\n        if (d[i])\n            t.push({ s: i, f: d[i] });\n    }\n    var s = t.length;\n    var t2 = t.slice();\n    if (!s)\n        return { t: et, l: 0 };\n    if (s == 1) {\n        var v = new u8(t[0].s + 1);\n        v[t[0].s] = 1;\n        return { t: v, l: 1 };\n    }\n    t.sort(function (a, b) { return a.f - b.f; });\n    // after i2 reaches last ind, will be stopped\n    // freq must be greater than largest possible number of symbols\n    t.push({ s: -1, f: 25001 });\n    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n    // efficient algorithm from UZIP.js\n    // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n    // symbols that combined have high freq, will start processing i2 (high-freq,\n    // non-composite) symbols instead\n    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n    while (i1 != s - 1) {\n        l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n    }\n    var maxSym = t2[0].s;\n    for (var i = 1; i < s; ++i) {\n        if (t2[i].s > maxSym)\n            maxSym = t2[i].s;\n    }\n    // code lengths\n    var tr = new u16(maxSym + 1);\n    // max bits in tree\n    var mbt = ln(t[i1 - 1], tr, 0);\n    if (mbt > mb) {\n        // more algorithms from UZIP.js\n        // TODO: find out how this code works (debt)\n        //  ind    debt\n        var i = 0, dt = 0;\n        //    left            cost\n        var lft = mbt - mb, cst = 1 << lft;\n        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n        for (; i < s; ++i) {\n            var i2_1 = t2[i].s;\n            if (tr[i2_1] > mb) {\n                dt += cst - (1 << (mbt - tr[i2_1]));\n                tr[i2_1] = mb;\n            }\n            else\n                break;\n        }\n        dt >>= lft;\n        while (dt > 0) {\n            var i2_2 = t2[i].s;\n            if (tr[i2_2] < mb)\n                dt -= 1 << (mb - tr[i2_2]++ - 1);\n            else\n                ++i;\n        }\n        for (; i >= 0 && dt; --i) {\n            var i2_3 = t2[i].s;\n            if (tr[i2_3] == mb) {\n                --tr[i2_3];\n                ++dt;\n            }\n        }\n        mbt = mb;\n    }\n    return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n    return n.s == -1\n        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n        : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n    var s = c.length;\n    // Note that the semicolon was intentional\n    while (s && !c[--s])\n        ;\n    var cl = new u16(++s);\n    //  ind      num         streak\n    var cli = 0, cln = c[0], cls = 1;\n    var w = function (v) { cl[cli++] = v; };\n    for (var i = 1; i <= s; ++i) {\n        if (c[i] == cln && i != s)\n            ++cls;\n        else {\n            if (!cln && cls > 2) {\n                for (; cls > 138; cls -= 138)\n                    w(32754);\n                if (cls > 2) {\n                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n                    cls = 0;\n                }\n            }\n            else if (cls > 3) {\n                w(cln), --cls;\n                for (; cls > 6; cls -= 6)\n                    w(8304);\n                if (cls > 2)\n                    w(((cls - 3) << 5) | 8208), cls = 0;\n            }\n            while (cls--)\n                w(cln);\n            cls = 1;\n            cln = c[i];\n        }\n    }\n    return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n    var l = 0;\n    for (var i = 0; i < cl.length; ++i)\n        l += cf[i] * cl[i];\n    return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n    // no need to write 00 as type: TypedArray defaults to 0\n    var s = dat.length;\n    var o = shft(pos + 2);\n    out[o] = s & 255;\n    out[o + 1] = s >> 8;\n    out[o + 2] = out[o] ^ 255;\n    out[o + 3] = out[o + 1] ^ 255;\n    for (var i = 0; i < s; ++i)\n        out[o + i + 4] = dat[i];\n    return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n    wbits(out, p++, final);\n    ++lf[256];\n    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n    var lcfreq = new u16(19);\n    for (var i = 0; i < lclt.length; ++i)\n        ++lcfreq[lclt[i] & 31];\n    for (var i = 0; i < lcdt.length; ++i)\n        ++lcfreq[lcdt[i] & 31];\n    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n    var nlcc = 19;\n    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n        ;\n    var flen = (bl + 5) << 3;\n    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n    if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n        return wfblk(out, p, dat.subarray(bs, bs + bl));\n    var lm, ll, dm, dl;\n    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n    if (dtlen < ftlen) {\n        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n        var llm = hMap(lct, mlcb, 0);\n        wbits(out, p, nlc - 257);\n        wbits(out, p + 5, ndc - 1);\n        wbits(out, p + 10, nlcc - 4);\n        p += 14;\n        for (var i = 0; i < nlcc; ++i)\n            wbits(out, p + 3 * i, lct[clim[i]]);\n        p += 3 * nlcc;\n        var lcts = [lclt, lcdt];\n        for (var it = 0; it < 2; ++it) {\n            var clct = lcts[it];\n            for (var i = 0; i < clct.length; ++i) {\n                var len = clct[i] & 31;\n                wbits(out, p, llm[len]), p += lct[len];\n                if (len > 15)\n                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n            }\n        }\n    }\n    else {\n        lm = flm, ll = flt, dm = fdm, dl = fdt;\n    }\n    for (var i = 0; i < li; ++i) {\n        var sym = syms[i];\n        if (sym > 255) {\n            var len = (sym >> 18) & 31;\n            wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n            if (len > 7)\n                wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n            var dst = sym & 31;\n            wbits16(out, p, dm[dst]), p += dl[dst];\n            if (dst > 3)\n                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n        }\n        else {\n            wbits16(out, p, lm[sym]), p += ll[sym];\n        }\n    }\n    wbits16(out, p, lm[256]);\n    return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n    var s = st.z || dat.length;\n    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n    // writing to this writes to the output buffer\n    var w = o.subarray(pre, o.length - post);\n    var lst = st.l;\n    var pos = (st.r || 0) & 7;\n    if (lvl) {\n        if (pos)\n            w[0] = st.r >> 3;\n        var opt = deo[lvl - 1];\n        var n = opt >> 13, c = opt & 8191;\n        var msk_1 = (1 << plvl) - 1;\n        //    prev 2-byte val map    curr 2-byte val map\n        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n        // 24576 is an arbitrary number of maximum symbols per block\n        // 424 buffer for last block\n        var syms = new i32(25000);\n        // length/literal freq   distance freq\n        var lf = new u16(288), df = new u16(32);\n        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos\n        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n        for (; i + 2 < s; ++i) {\n            // hash value\n            var hv = hsh(i);\n            // index mod 32768    previous index mod\n            var imod = i & 32767, pimod = head[hv];\n            prev[imod] = pimod;\n            head[hv] = imod;\n            // We always should modify head and prev, but only add symbols if\n            // this data is not yet processed (\"wait\" for wait index)\n            if (wi <= i) {\n                // bytes remaining\n                var rem = s - i;\n                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n                    li = lc_1 = eb = 0, bs = i;\n                    for (var j = 0; j < 286; ++j)\n                        lf[j] = 0;\n                    for (var j = 0; j < 30; ++j)\n                        df[j] = 0;\n                }\n                //  len    dist   chain\n                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n                if (rem > 2 && hv == hsh(i - dif)) {\n                    var maxn = Math.min(n, rem) - 1;\n                    var maxd = Math.min(32767, i);\n                    // max possible length\n                    // not capped at dif because decompressors implement \"rolling\" index population\n                    var ml = Math.min(258, rem);\n                    while (dif <= maxd && --ch_1 && imod != pimod) {\n                        if (dat[i + l] == dat[i + l - dif]) {\n                            var nl = 0;\n                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                                ;\n                            if (nl > l) {\n                                l = nl, d = dif;\n                                // break out early when we reach \"nice\" (we are satisfied enough)\n                                if (nl > maxn)\n                                    break;\n                                // now, find the rarest 2-byte sequence within this\n                                // length of literals and search for that instead.\n                                // Much faster than just using the start\n                                var mmd = Math.min(dif, nl - 2);\n                                var md = 0;\n                                for (var j = 0; j < mmd; ++j) {\n                                    var ti = i - dif + j & 32767;\n                                    var pti = prev[ti];\n                                    var cd = ti - pti & 32767;\n                                    if (cd > md)\n                                        md = cd, pimod = ti;\n                                }\n                            }\n                        }\n                        // check the previous match\n                        imod = pimod, pimod = prev[imod];\n                        dif += imod - pimod & 32767;\n                    }\n                }\n                // d will be nonzero only when a match was found\n                if (d) {\n                    // store both dist and len data in one int32\n                    // Make sure this is recognized as a len/dist with 28th bit (2^28)\n                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n                    var lin = revfl[l] & 31, din = revfd[d] & 31;\n                    eb += fleb[lin] + fdeb[din];\n                    ++lf[257 + lin];\n                    ++df[din];\n                    wi = i + l;\n                    ++lc_1;\n                }\n                else {\n                    syms[li++] = dat[i];\n                    ++lf[dat[i]];\n                }\n            }\n        }\n        for (i = Math.max(i, wi); i < s; ++i) {\n            syms[li++] = dat[i];\n            ++lf[dat[i]];\n        }\n        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n        if (!lst) {\n            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n            // shft(pos) now 1 less if pos & 7 != 0\n            pos -= 7;\n            st.h = head, st.p = prev, st.i = i, st.w = wi;\n        }\n    }\n    else {\n        for (var i = st.w || 0; i < s + lst; i += 65535) {\n            // end\n            var e = i + 65535;\n            if (e >= s) {\n                // write final block\n                w[(pos / 8) | 0] = lst;\n                e = s;\n            }\n            pos = wfblk(w, pos + 1, dat.subarray(i, e));\n        }\n        st.i = s;\n    }\n    return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n    var t = new Int32Array(256);\n    for (var i = 0; i < 256; ++i) {\n        var c = i, k = 9;\n        while (--k)\n            c = ((c & 1) && -306674912) ^ (c >>> 1);\n        t[i] = c;\n    }\n    return t;\n})();\n// CRC32\nvar crc = function () {\n    var c = -1;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var cr = c;\n            for (var i = 0; i < d.length; ++i)\n                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n            c = cr;\n        },\n        d: function () { return ~c; }\n    };\n};\n// Adler32\nvar adler = function () {\n    var a = 1, b = 0;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var n = a, m = b;\n            var l = d.length | 0;\n            for (var i = 0; i != l;) {\n                var e = Math.min(i + 2655, l);\n                for (; i < e; ++i)\n                    m += n += d[i];\n                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n            }\n            a = n, b = m;\n        },\n        d: function () {\n            a %= 65521, b %= 65521;\n            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n        }\n    };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n    if (!st) {\n        st = { l: 1 };\n        if (opt.dictionary) {\n            var dict = opt.dictionary.subarray(-32768);\n            var newDat = new u8(dict.length + dat.length);\n            newDat.set(dict);\n            newDat.set(dat, dict.length);\n            dat = newDat;\n            st.w = dict.length;\n        }\n    }\n    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n    var o = {};\n    for (var k in a)\n        o[k] = a[k];\n    for (var k in b)\n        o[k] = b[k];\n    return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n    var dt = fn();\n    var st = fn.toString();\n    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n    for (var i = 0; i < dt.length; ++i) {\n        var v = dt[i], k = ks[i];\n        if (typeof v == 'function') {\n            fnStr += ';' + k + '=';\n            var st_1 = v.toString();\n            if (v.prototype) {\n                // for global objects\n                if (st_1.indexOf('[native code]') != -1) {\n                    var spInd = st_1.indexOf(' ', 8) + 1;\n                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n                }\n                else {\n                    fnStr += st_1;\n                    for (var t in v.prototype)\n                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n                }\n            }\n            else\n                fnStr += st_1;\n        }\n        else\n            td[k] = v;\n    }\n    return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n    var tl = [];\n    for (var k in v) {\n        if (v[k].buffer) {\n            tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n        }\n    }\n    return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n    if (!ch[id]) {\n        var fnStr = '', td_1 = {}, m = fns.length - 1;\n        for (var i = 0; i < m; ++i)\n            fnStr = wcln(fns[i], fnStr, td_1);\n        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n    }\n    var td = mrg({}, ch[id].e);\n    return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n    out: o.size && new u8(o.size),\n    dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n    var w = wrkr(fns, init, id, function (err, dat) {\n        w.terminate();\n        cb(err, dat);\n    });\n    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n    return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n    return function (ev) {\n        if (ev.data.length) {\n            strm.push(ev.data[0], ev.data[1]);\n            postMessage([ev.data[0].length]);\n        }\n        else\n            strm.flush();\n    };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n    var t;\n    var w = wrkr(fns, init, id, function (err, dat) {\n        if (err)\n            w.terminate(), strm.ondata.call(strm, err);\n        else if (!Array.isArray(dat))\n            ext(dat);\n        else if (dat.length == 1) {\n            strm.queuedSize -= dat[0];\n            if (strm.ondrain)\n                strm.ondrain(dat[0]);\n        }\n        else {\n            if (dat[1])\n                w.terminate();\n            strm.ondata.call(strm, err, dat[0], dat[1]);\n        }\n    });\n    w.postMessage(opts);\n    strm.queuedSize = 0;\n    strm.push = function (d, f) {\n        if (!strm.ondata)\n            err(5);\n        if (t)\n            strm.ondata(err(4, 0, 1), null, !!f);\n        strm.queuedSize += d.length;\n        w.postMessage([d, t = f], [d.buffer]);\n    };\n    strm.terminate = function () { w.terminate(); };\n    if (flush) {\n        strm.flush = function () { w.postMessage([]); };\n    }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n    for (; v; ++b)\n        d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n    var fn = o.filename;\n    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n    if (o.mtime != 0)\n        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n    if (fn) {\n        c[3] = 8;\n        for (var i = 0; i <= fn.length; ++i)\n            c[i + 10] = fn.charCodeAt(i);\n    }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n        err(6, 'invalid gzip data');\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n        st += (d[10] | d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n        ;\n    return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n    var l = d.length;\n    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n    if (o.dictionary) {\n        var h = adler();\n        h.p(o.dictionary);\n        wbytes(c, 2, h.d());\n    }\n};\n// zlib start\nvar zls = function (d, dict) {\n    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n        err(6, 'invalid zlib data');\n    if ((d[1] >> 5 & 1) == +!dict)\n        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n    return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n    if (typeof opts == 'function')\n        cb = opts, opts = {};\n    this.ondata = cb;\n    return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n    function Deflate(opts, cb) {\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        this.o = opts || {};\n        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n        // 98304 = 32768 (lookback) + 65536 (common chunk size)\n        this.b = new u8(98304);\n        if (this.o.dictionary) {\n            var dict = this.o.dictionary.subarray(-32768);\n            this.b.set(dict, 32768 - dict.length);\n            this.s.i = 32768 - dict.length;\n        }\n    }\n    Deflate.prototype.p = function (c, f) {\n        this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Deflate.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        var endLen = chunk.length + this.s.z;\n        if (endLen > this.b.length) {\n            if (endLen > 2 * this.b.length - 32768) {\n                var newBuf = new u8(endLen & -32768);\n                newBuf.set(this.b.subarray(0, this.s.z));\n                this.b = newBuf;\n            }\n            var split = this.b.length - this.s.z;\n            this.b.set(chunk.subarray(0, split), this.s.z);\n            this.s.z = this.b.length;\n            this.p(this.b, false);\n            this.b.set(this.b.subarray(-32768));\n            this.b.set(chunk.subarray(split), 32768);\n            this.s.z = chunk.length - split + 32768;\n            this.s.i = 32766, this.s.w = 32768;\n        }\n        else {\n            this.b.set(chunk, this.s.z);\n            this.s.z += chunk.length;\n        }\n        this.s.l = final & 1;\n        if (this.s.z > this.s.w + 8191 || final) {\n            this.p(this.b, final || false);\n            this.s.w = this.s.i, this.s.i -= 2;\n        }\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * deflated output for small inputs.\n     */\n    Deflate.prototype.flush = function () {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        this.p(this.b, false);\n        this.s.w = this.s.i, this.s.i -= 2;\n    };\n    return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n    function AsyncDeflate(opts, cb) {\n        astrmify([\n            bDflt,\n            function () { return [astrm, Deflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Deflate(ev.data);\n            onmessage = astrm(strm);\n        }, 6, 1);\n    }\n    return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n    return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n    function Inflate(opts, cb) {\n        // no StrmOpt here to avoid adding to workerizer\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n        this.s = { i: 0, b: dict ? dict.length : 0 };\n        this.o = new u8(32768);\n        this.p = new u8(0);\n        if (dict)\n            this.o.set(dict);\n    }\n    Inflate.prototype.e = function (c) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        if (!this.p.length)\n            this.p = c;\n        else if (c.length) {\n            var n = new u8(this.p.length + c.length);\n            n.set(this.p), n.set(c, this.p.length), this.p = n;\n        }\n    };\n    Inflate.prototype.c = function (final) {\n        this.s.i = +(this.d = final || false);\n        var bts = this.s.b;\n        var dt = inflt(this.p, this.s, this.o);\n        this.ondata(slc(dt, bts, this.s.b), this.d);\n        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n    };\n    /**\n     * Pushes a chunk to be inflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the final chunk\n     */\n    Inflate.prototype.push = function (chunk, final) {\n        this.e(chunk), this.c(final);\n    };\n    return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n    function AsyncInflate(opts, cb) {\n        astrmify([\n            bInflt,\n            function () { return [astrm, Inflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Inflate(ev.data);\n            onmessage = astrm(strm);\n        }, 7, 0);\n    }\n    return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt\n    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n    function Gzip(opts, cb) {\n        this.c = crc();\n        this.l = 0;\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gzip.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        this.l += chunk.length;\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Gzip.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n        if (this.v)\n            gzh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * GZIPped output for small inputs.\n     */\n    Gzip.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n    function AsyncGzip(opts, cb) {\n        astrmify([\n            bDflt,\n            gze,\n            function () { return [astrm, Deflate, Gzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gzip(ev.data);\n            onmessage = astrm(strm);\n        }, 8, 1);\n    }\n    return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        gze,\n        function () { return [gzipSync]; }\n    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var c = crc(), l = data.length;\n    c.p(data);\n    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n    function Gunzip(opts, cb) {\n        this.v = 1;\n        this.r = 0;\n        Inflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GUNZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gunzip.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        this.r += chunk.length;\n        if (this.v) {\n            var p = this.p.subarray(this.v - 1);\n            var s = p.length > 3 ? gzs(p) : 4;\n            if (s > p.length) {\n                if (!final)\n                    return;\n            }\n            else if (this.v > 1 && this.onmember) {\n                this.onmember(this.r - p.length);\n            }\n            this.p = p.subarray(s), this.v = 0;\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n        // process concatenated GZIP\n        if (this.s.f && !this.s.l && !final) {\n            this.v = shft(this.s.p) + 9;\n            this.s = { i: 0 };\n            this.o = new u8(0);\n            this.push(new u8(0), final);\n        }\n    };\n    return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n    function AsyncGunzip(opts, cb) {\n        var _this = this;\n        astrmify([\n            bInflt,\n            guze,\n            function () { return [astrm, Inflate, Gunzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gunzip(ev.data);\n            strm.onmember = function (offset) { return postMessage(offset); };\n            onmessage = astrm(strm);\n        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n    }\n    return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        guze,\n        function () { return [gunzipSync]; }\n    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n    var st = gzs(data);\n    if (st + 8 > data.length)\n        err(6, 'invalid gzip data');\n    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n    function Zlib(opts, cb) {\n        this.c = adler();\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be zlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Zlib.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Zlib.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n        if (this.v)\n            zlh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 4, this.c.d());\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * zlibbed output for small inputs.\n     */\n    Zlib.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n    function AsyncZlib(opts, cb) {\n        astrmify([\n            bDflt,\n            zle,\n            function () { return [astrm, Deflate, Zlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Zlib(ev.data);\n            onmessage = astrm(strm);\n        }, 10, 1);\n    }\n    return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        zle,\n        function () { return [zlibSync]; }\n    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var a = adler();\n    a.p(data);\n    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n    function Unzlib(opts, cb) {\n        Inflate.call(this, opts, cb);\n        this.v = opts && opts.dictionary ? 2 : 1;\n    }\n    /**\n     * Pushes a chunk to be unzlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzlib.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            if (this.p.length < 6 && !final)\n                return;\n            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 4)\n                err(6, 'invalid zlib data');\n            this.p = this.p.subarray(0, -4);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n    function AsyncUnzlib(opts, cb) {\n        astrmify([\n            bInflt,\n            zule,\n            function () { return [astrm, Inflate, Unzlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Unzlib(ev.data);\n            onmessage = astrm(strm);\n        }, 11, 0);\n    }\n    return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        zule,\n        function () { return [unzlibSync]; }\n    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n    function Decompress(opts, cb) {\n        this.o = StrmOpt.call(this, opts, cb) || {};\n        this.G = Gunzip;\n        this.I = Inflate;\n        this.Z = Unzlib;\n    }\n    // init substream\n    // overriden by AsyncDecompress\n    Decompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (dat, final) {\n            _this.ondata(dat, final);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Decompress.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (!this.s) {\n            if (this.p && this.p.length) {\n                var n = new u8(this.p.length + chunk.length);\n                n.set(this.p), n.set(chunk, this.p.length);\n            }\n            else\n                this.p = chunk;\n            if (this.p.length > 2) {\n                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n                    ? new this.G(this.o)\n                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n                        ? new this.I(this.o)\n                        : new this.Z(this.o);\n                this.i();\n                this.s.push(this.p, final);\n                this.p = null;\n            }\n        }\n        else\n            this.s.push(chunk, final);\n    };\n    return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n    function AsyncDecompress(opts, cb) {\n        Decompress.call(this, opts, cb);\n        this.queuedSize = 0;\n        this.G = AsyncGunzip;\n        this.I = AsyncInflate;\n        this.Z = AsyncUnzlib;\n    }\n    AsyncDecompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        };\n        this.s.ondrain = function (size) {\n            _this.queuedSize -= size;\n            if (_this.ondrain)\n                _this.ondrain(size);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncDecompress.prototype.push = function (chunk, final) {\n        this.queuedSize += chunk.length;\n        Decompress.prototype.push.call(this, chunk, final);\n    };\n    return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzip(data, opts, cb)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflate(data, opts, cb)\n            : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzipSync(data, opts)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflateSync(data, opts)\n            : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n    for (var k in d) {\n        var val = d[k], n = p + k, op = o;\n        if (Array.isArray(val))\n            op = mrg(o, val[1]), val = val[0];\n        if (val instanceof u8)\n            t[n] = [val, op];\n        else {\n            t[n += '/'] = [new u8(0), op];\n            fltn(val, n, t, o);\n        }\n    }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n    td.decode(et, { stream: true });\n    tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n    for (var r = '', i = 0;;) {\n        var c = d[i++];\n        var eb = (c > 127) + (c > 223) + (c > 239);\n        if (i + eb > d.length)\n            return { s: r, r: slc(d, i - 1) };\n        if (!eb)\n            r += String.fromCharCode(c);\n        else if (eb == 3) {\n            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n        }\n        else if (eb & 1)\n            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n        else\n            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n    }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is decoded\n     */\n    function DecodeUTF8(cb) {\n        this.ondata = cb;\n        if (tds)\n            this.t = new TextDecoder();\n        else\n            this.p = et;\n    }\n    /**\n     * Pushes a chunk to be decoded from UTF-8 binary\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    DecodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        final = !!final;\n        if (this.t) {\n            this.ondata(this.t.decode(chunk, { stream: true }), final);\n            if (final) {\n                if (this.t.decode().length)\n                    err(8);\n                this.t = null;\n            }\n            return;\n        }\n        if (!this.p)\n            err(4);\n        var dat = new u8(this.p.length + chunk.length);\n        dat.set(this.p);\n        dat.set(chunk, this.p.length);\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (final) {\n            if (r.length)\n                err(8);\n            this.p = null;\n        }\n        else\n            this.p = r;\n        this.ondata(s, final);\n    };\n    return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is encoded\n     */\n    function EncodeUTF8(cb) {\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be encoded to UTF-8\n     * @param chunk The string data to push\n     * @param final Whether this is the last chunk\n     */\n    EncodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        this.ondata(strToU8(chunk), this.d = final || false);\n    };\n    return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n    if (latin1) {\n        var ar_1 = new u8(str.length);\n        for (var i = 0; i < str.length; ++i)\n            ar_1[i] = str.charCodeAt(i);\n        return ar_1;\n    }\n    if (te)\n        return te.encode(str);\n    var l = str.length;\n    var ar = new u8(str.length + (str.length >> 1));\n    var ai = 0;\n    var w = function (v) { ar[ai++] = v; };\n    for (var i = 0; i < l; ++i) {\n        if (ai + 5 > ar.length) {\n            var n = new u8(ai + 8 + ((l - i) << 1));\n            n.set(ar);\n            ar = n;\n        }\n        var c = str.charCodeAt(i);\n        if (c < 128 || latin1)\n            w(c);\n        else if (c < 2048)\n            w(192 | (c >> 6)), w(128 | (c & 63));\n        else if (c > 55295 && c < 57344)\n            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n        else\n            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n    }\n    return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n    if (latin1) {\n        var r = '';\n        for (var i = 0; i < dat.length; i += 16384)\n            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n        return r;\n    }\n    else if (td) {\n        return td.decode(dat);\n    }\n    else {\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (r.length)\n            err(8);\n        return s;\n    }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n        ;\n    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n    var le = 0;\n    if (ex) {\n        for (var k in ex) {\n            var l = ex[k].length;\n            if (l > 65535)\n                err(9);\n            le += l + 4;\n        }\n    }\n    return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n    var fl = fn.length, ex = f.extra, col = co && co.length;\n    var exl = exfl(ex);\n    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n    if (ce != null)\n        d[b++] = 20, d[b++] = f.os;\n    d[b] = 20, b += 2; // spec compliance? what's that?\n    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n    if (y < 0 || y > 119)\n        err(10);\n    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n    if (c != -1) {\n        wbytes(d, b, f.crc);\n        wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n        wbytes(d, b + 8, f.size);\n    }\n    wbytes(d, b + 12, fl);\n    wbytes(d, b + 14, exl), b += 16;\n    if (ce != null) {\n        wbytes(d, b, col);\n        wbytes(d, b + 6, f.attrs);\n        wbytes(d, b + 10, ce), b += 14;\n    }\n    d.set(fn, b);\n    b += fl;\n    if (exl) {\n        for (var k in ex) {\n            var exf = ex[k], l = exf.length;\n            wbytes(d, b, +k);\n            wbytes(d, b + 2, l);\n            d.set(exf, b + 4), b += 4 + l;\n        }\n    }\n    if (col)\n        d.set(co, b), b += col;\n    return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n    wbytes(o, b, 0x6054B50); // skip disk\n    wbytes(o, b + 8, c);\n    wbytes(o, b + 10, c);\n    wbytes(o, b + 12, d);\n    wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n    /**\n     * Creates a pass-through stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     */\n    function ZipPassThrough(filename) {\n        this.filename = filename;\n        this.c = crc();\n        this.size = 0;\n        this.compression = 0;\n    }\n    /**\n     * Processes a chunk and pushes to the output stream. You can override this\n     * method in a subclass for custom behavior, but by default this passes\n     * the data through. You must call this.ondata(err, chunk, final) at some\n     * point in this method.\n     * @param chunk The chunk to process\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.process = function (chunk, final) {\n        this.ondata(null, chunk, final);\n    };\n    /**\n     * Pushes a chunk to be added. If you are subclassing this with a custom\n     * compression algorithm, note that you must push data from the source\n     * file only, pre-compression.\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        this.c.p(chunk);\n        this.size += chunk.length;\n        if (final)\n            this.crc = this.c.d();\n        this.process(chunk, final || false);\n    };\n    return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function ZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new Deflate(opts, function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n    }\n    ZipDeflate.prototype.process = function (chunk, final) {\n        try {\n            this.d.push(chunk, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function AsyncZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new AsyncDeflate(opts, function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n        this.terminate = this.d.terminate;\n    }\n    AsyncZipDeflate.prototype.process = function (chunk, final) {\n        this.d.push(chunk, final);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an empty ZIP archive to which files can be added\n     * @param cb The callback to call whenever data for the generated ZIP archive\n     *           is available\n     */\n    function Zip(cb) {\n        this.ondata = cb;\n        this.u = [];\n        this.d = 1;\n    }\n    /**\n     * Adds a file to the ZIP archive\n     * @param file The file stream to add\n     */\n    Zip.prototype.add = function (file) {\n        var _this = this;\n        if (!this.ondata)\n            err(5);\n        // finishing or finished\n        if (this.d & 2)\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n        else {\n            var f = strToU8(file.filename), fl_1 = f.length;\n            var com = file.comment, o = com && strToU8(com);\n            var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n            var hl_1 = fl_1 + exfl(file.extra) + 30;\n            if (fl_1 > 65535)\n                this.ondata(err(11, 0, 1), null, false);\n            var header = new u8(hl_1);\n            wzh(header, 0, file, f, u, -1);\n            var chks_1 = [header];\n            var pAll_1 = function () {\n                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n                    var chk = chks_2[_i];\n                    _this.ondata(null, chk, false);\n                }\n                chks_1 = [];\n            };\n            var tr_1 = this.d;\n            this.d = 0;\n            var ind_1 = this.u.length;\n            var uf_1 = mrg(file, {\n                f: f,\n                u: u,\n                o: o,\n                t: function () {\n                    if (file.terminate)\n                        file.terminate();\n                },\n                r: function () {\n                    pAll_1();\n                    if (tr_1) {\n                        var nxt = _this.u[ind_1 + 1];\n                        if (nxt)\n                            nxt.r();\n                        else\n                            _this.d = 1;\n                    }\n                    tr_1 = 1;\n                }\n            });\n            var cl_1 = 0;\n            file.ondata = function (err, dat, final) {\n                if (err) {\n                    _this.ondata(err, dat, final);\n                    _this.terminate();\n                }\n                else {\n                    cl_1 += dat.length;\n                    chks_1.push(dat);\n                    if (final) {\n                        var dd = new u8(16);\n                        wbytes(dd, 0, 0x8074B50);\n                        wbytes(dd, 4, file.crc);\n                        wbytes(dd, 8, cl_1);\n                        wbytes(dd, 12, file.size);\n                        chks_1.push(dd);\n                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n                        if (tr_1)\n                            uf_1.r();\n                        tr_1 = 1;\n                    }\n                    else if (tr_1)\n                        pAll_1();\n                }\n            };\n            this.u.push(uf_1);\n        }\n    };\n    /**\n     * Ends the process of adding files and prepares to emit the final chunks.\n     * This *must* be called after adding all desired files for the resulting\n     * ZIP file to work properly.\n     */\n    Zip.prototype.end = function () {\n        var _this = this;\n        if (this.d & 2) {\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n            return;\n        }\n        if (this.d)\n            this.e();\n        else\n            this.u.push({\n                r: function () {\n                    if (!(_this.d & 1))\n                        return;\n                    _this.u.splice(-1, 1);\n                    _this.e();\n                },\n                t: function () { }\n            });\n        this.d = 3;\n    };\n    Zip.prototype.e = function () {\n        var bt = 0, l = 0, tl = 0;\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n        }\n        var out = new u8(tl + 22);\n        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n            var f = _c[_b];\n            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n        }\n        wzf(out, bt, this.u.length, tl, l);\n        this.ondata(null, out, true);\n        this.d = 2;\n    };\n    /**\n     * A method to terminate any internal workers used by the stream. Subsequent\n     * calls to add() will fail.\n     */\n    Zip.prototype.terminate = function () {\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            f.t();\n        }\n        this.d = 2;\n    };\n    return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var r = {};\n    fltn(data, '', r, opts);\n    var k = Object.keys(r);\n    var lft = k.length, o = 0, tot = 0;\n    var slft = lft, files = new Array(lft);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var cbf = function () {\n        var out = new u8(tot + 22), oe = o, cdl = tot - o;\n        tot = 0;\n        for (var i = 0; i < slft; ++i) {\n            var f = files[i];\n            try {\n                var l = f.c.length;\n                wzh(out, tot, f, f.f, f.u, l);\n                var badd = 30 + f.f.length + exfl(f.extra);\n                var loc = tot + badd;\n                out.set(f.c, loc);\n                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n            }\n            catch (e) {\n                return cbd(e, null);\n            }\n        }\n        wzf(out, o, files.length, cdl, oe);\n        cbd(null, out);\n    };\n    if (!lft)\n        cbf();\n    var _loop_1 = function (i) {\n        var fn = k[i];\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var c = crc(), size = file.length;\n        c.p(file);\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        var compression = p.level == 0 ? 0 : 8;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cbd(e, null);\n            }\n            else {\n                var l = d.length;\n                files[i] = mrg(p, {\n                    size: size,\n                    crc: c.d(),\n                    c: d,\n                    f: f,\n                    m: m,\n                    u: s != fn.length || (m && (com.length != ms)),\n                    compression: compression\n                });\n                o += 30 + s + exl + l;\n                tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n                if (!--lft)\n                    cbf();\n            }\n        };\n        if (s > 65535)\n            cbl(err(11, 0, 1), null);\n        if (!compression)\n            cbl(null, file);\n        else if (size < 160000) {\n            try {\n                cbl(null, deflateSync(file, p));\n            }\n            catch (e) {\n                cbl(e, null);\n            }\n        }\n        else\n            term.push(deflate(file, p, cbl));\n    };\n    // Cannot use lft because it can decrease\n    for (var i = 0; i < slft; ++i) {\n        _loop_1(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var r = {};\n    var files = [];\n    fltn(data, '', r, opts);\n    var o = 0;\n    var tot = 0;\n    for (var fn in r) {\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var compression = p.level == 0 ? 0 : 8;\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        if (s > 65535)\n            err(11);\n        var d = compression ? deflateSync(file, p) : file, l = d.length;\n        var c = crc();\n        c.p(file);\n        files.push(mrg(p, {\n            size: file.length,\n            crc: c.d(),\n            c: d,\n            f: f,\n            m: m,\n            u: s != fn.length || (m && (com.length != ms)),\n            o: o,\n            compression: compression\n        }));\n        o += 30 + s + exl + l;\n        tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n    }\n    var out = new u8(tot + 22), oe = o, cdl = tot - o;\n    for (var i = 0; i < files.length; ++i) {\n        var f = files[i];\n        wzh(out, f.o, f, f.f, f.u, f.c.length);\n        var badd = 30 + f.f.length + exfl(f.extra);\n        out.set(f.c, f.o + badd);\n        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n    }\n    wzf(out, o, files.length, cdl, oe);\n    return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n    function UnzipPassThrough() {\n    }\n    UnzipPassThrough.prototype.push = function (data, final) {\n        this.ondata(null, data, final);\n    };\n    UnzipPassThrough.compression = 0;\n    return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function UnzipInflate() {\n        var _this = this;\n        this.i = new Inflate(function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n    }\n    UnzipInflate.prototype.push = function (data, final) {\n        try {\n            this.i.push(data, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    UnzipInflate.compression = 8;\n    return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function AsyncUnzipInflate(_, sz) {\n        var _this = this;\n        if (sz < 320000) {\n            this.i = new Inflate(function (dat, final) {\n                _this.ondata(null, dat, final);\n            });\n        }\n        else {\n            this.i = new AsyncInflate(function (err, dat, final) {\n                _this.ondata(err, dat, final);\n            });\n            this.terminate = this.i.terminate;\n        }\n    }\n    AsyncUnzipInflate.prototype.push = function (data, final) {\n        if (this.i.terminate)\n            data = slc(data, 0);\n        this.i.push(data, final);\n    };\n    AsyncUnzipInflate.compression = 8;\n    return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a ZIP decompression stream\n     * @param cb The callback to call whenever a file in the ZIP archive is found\n     */\n    function Unzip(cb) {\n        this.onfile = cb;\n        this.k = [];\n        this.o = {\n            0: UnzipPassThrough\n        };\n        this.p = et;\n    }\n    /**\n     * Pushes a chunk to be unzipped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzip.prototype.push = function (chunk, final) {\n        var _this = this;\n        if (!this.onfile)\n            err(5);\n        if (!this.p)\n            err(4);\n        if (this.c > 0) {\n            var len = Math.min(this.c, chunk.length);\n            var toAdd = chunk.subarray(0, len);\n            this.c -= len;\n            if (this.d)\n                this.d.push(toAdd, !this.c);\n            else\n                this.k[0].push(toAdd);\n            chunk = chunk.subarray(len);\n            if (chunk.length)\n                return this.push(chunk, final);\n        }\n        else {\n            var f = 0, i = 0, is = void 0, buf = void 0;\n            if (!this.p.length)\n                buf = chunk;\n            else if (!chunk.length)\n                buf = this.p;\n            else {\n                buf = new u8(this.p.length + chunk.length);\n                buf.set(this.p), buf.set(chunk, this.p.length);\n            }\n            var l = buf.length, oc = this.c, add = oc && this.d;\n            var _loop_2 = function () {\n                var _a;\n                var sig = b4(buf, i);\n                if (sig == 0x4034B50) {\n                    f = 1, is = i;\n                    this_1.d = null;\n                    this_1.c = 0;\n                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n                    if (l > i + 30 + fnl + es) {\n                        var chks_3 = [];\n                        this_1.k.unshift(chks_3);\n                        f = 2;\n                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n                        if (sc_1 == 4294967295) {\n                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n                        }\n                        else if (dd)\n                            sc_1 = -1;\n                        i += es;\n                        this_1.c = sc_1;\n                        var d_1;\n                        var file_1 = {\n                            name: fn_1,\n                            compression: cmp_1,\n                            start: function () {\n                                if (!file_1.ondata)\n                                    err(5);\n                                if (!sc_1)\n                                    file_1.ondata(null, et, true);\n                                else {\n                                    var ctr = _this.o[cmp_1];\n                                    if (!ctr)\n                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n                                        var dat = chks_4[_i];\n                                        d_1.push(dat, false);\n                                    }\n                                    if (_this.k[0] == chks_3 && _this.c)\n                                        _this.d = d_1;\n                                    else\n                                        d_1.push(et, true);\n                                }\n                            },\n                            terminate: function () {\n                                if (d_1 && d_1.terminate)\n                                    d_1.terminate();\n                            }\n                        };\n                        if (sc_1 >= 0)\n                            file_1.size = sc_1, file_1.originalSize = su_1;\n                        this_1.onfile(file_1);\n                    }\n                    return \"break\";\n                }\n                else if (oc) {\n                    if (sig == 0x8074B50) {\n                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                    else if (sig == 0x2014B50) {\n                        is = i -= 4, f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                }\n            };\n            var this_1 = this;\n            for (; i < l - 4; ++i) {\n                var state_1 = _loop_2();\n                if (state_1 === \"break\")\n                    break;\n            }\n            this.p = et;\n            if (oc < 0) {\n                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n                if (add)\n                    add.push(dat, !!f);\n                else\n                    this.k[+(f == 2)].push(dat);\n            }\n            if (f & 2)\n                return this.push(buf.subarray(i), final);\n            this.p = buf.subarray(i);\n        }\n        if (final) {\n            if (this.c)\n                err(13);\n            this.p = null;\n        }\n    };\n    /**\n     * Registers a decoder with the stream, allowing for files compressed with\n     * the compression type provided to be expanded correctly\n     * @param decoder The decoder constructor\n     */\n    Unzip.prototype.register = function (decoder) {\n        this.o[decoder.compression] = decoder;\n    };\n    return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var files = {};\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558) {\n            cbd(err(13, 0, 1), null);\n            return tAll;\n        }\n    }\n    ;\n    var lft = b2(data, e + 8);\n    if (lft) {\n        var c = lft;\n        var o = b4(data, e + 16);\n        var z = o == 4294967295 || c == 65535;\n        if (z) {\n            var ze = b4(data, e - 12);\n            z = b4(data, ze) == 0x6064B50;\n            if (z) {\n                c = lft = b4(data, ze + 32);\n                o = b4(data, ze + 48);\n            }\n        }\n        var fltr = opts && opts.filter;\n        var _loop_3 = function (i) {\n            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n            o = no;\n            var cbl = function (e, d) {\n                if (e) {\n                    tAll();\n                    cbd(e, null);\n                }\n                else {\n                    if (d)\n                        files[fn] = d;\n                    if (!--lft)\n                        cbd(null, files);\n                }\n            };\n            if (!fltr || fltr({\n                name: fn,\n                size: sc,\n                originalSize: su,\n                compression: c_1\n            })) {\n                if (!c_1)\n                    cbl(null, slc(data, b, b + sc));\n                else if (c_1 == 8) {\n                    var infl = data.subarray(b, b + sc);\n                    // Synchronously decompress under 512KB, or barely-compressed data\n                    if (su < 524288 || sc > 0.8 * su) {\n                        try {\n                            cbl(null, inflateSync(infl, { out: new u8(su) }));\n                        }\n                        catch (e) {\n                            cbl(e, null);\n                        }\n                    }\n                    else\n                        term.push(inflate(infl, { size: su }, cbl));\n                }\n                else\n                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n            }\n            else\n                cbl(null, null);\n        };\n        for (var i = 0; i < c; ++i) {\n            _loop_3(i);\n        }\n    }\n    else\n        cbd(null, {});\n    return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558)\n            err(13);\n    }\n    ;\n    var c = b2(data, e + 8);\n    if (!c)\n        return {};\n    var o = b4(data, e + 16);\n    var z = o == 4294967295 || c == 65535;\n    if (z) {\n        var ze = b4(data, e - 12);\n        z = b4(data, ze) == 0x6064B50;\n        if (z) {\n            c = b4(data, ze + 32);\n            o = b4(data, ze + 48);\n        }\n    }\n    var fltr = opts && opts.filter;\n    for (var i = 0; i < c; ++i) {\n        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        if (!fltr || fltr({\n            name: fn,\n            size: sc,\n            originalSize: su,\n            compression: c_2\n        })) {\n            if (!c_2)\n                files[fn] = slc(data, b, b + sc);\n            else if (c_2 == 8)\n                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n            else\n                err(14, 'unknown compression type ' + c_2);\n        }\n    }\n    return files;\n}\n", "export var globalObject = (function() {\n  return \"undefined\" !== typeof window\n    ? window\n    : \"undefined\" !== typeof global\n    ? global\n    : \"undefined\" !== typeof self\n    ? self\n    : this;\n})();\n", "import { globalObject } from \"./globalObject.js\";\n\nfunction consoleLog() {\n  if (globalObject.console && typeof globalObject.console.log === \"function\") {\n    globalObject.console.log.apply(globalObject.console, arguments);\n  }\n}\n\nfunction consoleWarn(str) {\n  if (globalObject.console) {\n    if (typeof globalObject.console.warn === \"function\") {\n      globalObject.console.warn.apply(globalObject.console, arguments);\n    } else {\n      consoleLog.call(null, arguments);\n    }\n  }\n}\n\nfunction consoleError(str) {\n  if (globalObject.console) {\n    if (typeof globalObject.console.error === \"function\") {\n      globalObject.console.error.apply(globalObject.console, arguments);\n    } else {\n      consoleLog(str);\n    }\n  }\n}\nexport var console = {\n  log: consoleLog,\n  warn: consoleWarn,\n  error: consoleError\n};\n", "/**\n * @license\n * FileSaver.js\n * A saveAs() FileSaver implementation.\n *\n * By Eli Grey, http://eligrey.com\n *\n * License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n * source  : http://purl.eligrey.com/github/FileSaver.js\n */\n\nimport { globalObject as _global } from \"./globalObject.js\";\nimport { console } from \"./console.js\";\n\nfunction bom(blob, opts) {\n  if (typeof opts === \"undefined\") opts = { autoBom: false };\n  else if (typeof opts !== \"object\") {\n    console.warn(\"Deprecated: Expected third argument to be a object\");\n    opts = { autoBom: !opts };\n  }\n\n  // prepend BOM for UTF-8 XML and text/* types (including HTML)\n  // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n  if (\n    opts.autoBom &&\n    /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(\n      blob.type\n    )\n  ) {\n    return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n  }\n  return blob;\n}\n\nfunction download(url, name, opts) {\n  var xhr = new XMLHttpRequest();\n  xhr.open(\"GET\", url);\n  xhr.responseType = \"blob\";\n  xhr.onload = function() {\n    saveAs(xhr.response, name, opts);\n  };\n  xhr.onerror = function() {\n    console.error(\"could not download file\");\n  };\n  xhr.send();\n}\n\nfunction corsEnabled(url) {\n  var xhr = new XMLHttpRequest();\n  // use sync to avoid popup blocker\n  xhr.open(\"HEAD\", url, false);\n  try {\n    xhr.send();\n  } catch (e) {}\n  return xhr.status >= 200 && xhr.status <= 299;\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n  try {\n    node.dispatchEvent(new MouseEvent(\"click\"));\n  } catch (e) {\n    var evt = document.createEvent(\"MouseEvents\");\n    evt.initMouseEvent(\n      \"click\",\n      true,\n      true,\n      window,\n      0,\n      0,\n      0,\n      80,\n      20,\n      false,\n      false,\n      false,\n      false,\n      0,\n      null\n    );\n    node.dispatchEvent(evt);\n  }\n}\n\nvar saveAs =\n  _global.saveAs ||\n  // probably in some web worker\n  (typeof window !== \"object\" || window !== _global\n    ? function saveAs() {\n        /* noop */\n      }\n    : // Use download attribute first if possible (#193 Lumia mobile) unless this is a native app\n    typeof HTMLAnchorElement !== \"undefined\" &&\n      \"download\" in HTMLAnchorElement.prototype\n    ? function saveAs(blob, name, opts) {\n        var URL = _global.URL || _global.webkitURL;\n        var a = document.createElement(\"a\");\n        name = name || blob.name || \"download\";\n\n        a.download = name;\n        a.rel = \"noopener\"; // tabnabbing\n\n        // TODO: detect chrome extensions & packaged apps\n        // a.target = '_blank'\n\n        if (typeof blob === \"string\") {\n          // Support regular links\n          a.href = blob;\n          if (a.origin !== location.origin) {\n            corsEnabled(a.href)\n              ? download(blob, name, opts)\n              : click(a, (a.target = \"_blank\"));\n          } else {\n            click(a);\n          }\n        } else {\n          // Support blobs\n          a.href = URL.createObjectURL(blob);\n          setTimeout(function() {\n            URL.revokeObjectURL(a.href);\n          }, 4e4); // 40s\n          setTimeout(function() {\n            click(a);\n          }, 0);\n        }\n      }\n    : // Use msSaveOrOpenBlob as a second approach\n    \"msSaveOrOpenBlob\" in navigator\n    ? function saveAs(blob, name, opts) {\n        name = name || blob.name || \"download\";\n\n        if (typeof blob === \"string\") {\n          if (corsEnabled(blob)) {\n            download(blob, name, opts);\n          } else {\n            var a = document.createElement(\"a\");\n            a.href = blob;\n            a.target = \"_blank\";\n            setTimeout(function() {\n              click(a);\n            });\n          }\n        } else {\n          navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n        }\n      }\n    : // Fallback to using FileReader and a popup\n      function saveAs(blob, name, opts, popup) {\n        // Open a popup immediately do go around popup blocker\n        // Mostly only available on user interaction and the fileReader is async so...\n        popup = popup || open(\"\", \"_blank\");\n        if (popup) {\n          popup.document.title = popup.document.body.innerText =\n            \"downloading...\";\n        }\n\n        if (typeof blob === \"string\") return download(blob, name, opts);\n\n        var force = blob.type === \"application/octet-stream\";\n        var isSafari =\n          /constructor/i.test(_global.HTMLElement) || _global.safari;\n        var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n\n        if (\n          (isChromeIOS || (force && isSafari)) &&\n          typeof FileReader === \"object\"\n        ) {\n          // Safari doesn't allow downloading of blob URLs\n          var reader = new FileReader();\n          reader.onloadend = function() {\n            var url = reader.result;\n            url = isChromeIOS\n              ? url\n              : url.replace(/^data:[^;]*;/, \"data:attachment/file;\");\n            if (popup) popup.location.href = url;\n            else location = url;\n            popup = null; // reverse-tabnabbing #460\n          };\n          reader.readAsDataURL(blob);\n        } else {\n          var URL = _global.URL || _global.webkitURL;\n          var url = URL.createObjectURL(blob);\n          if (popup) popup.location = url;\n          else location.href = url;\n          popup = null; // reverse-tabnabbing #460\n          setTimeout(function() {\n            URL.revokeObjectURL(url);\n          }, 4e4); // 40s\n        }\n      });\n\nexport { saveAs };\n", "import { globalObject } from \"./globalObject.js\";\n\nvar atob, btoa;\n\n(function() {\n  atob = globalObject.atob.bind(globalObject);\n  btoa = globalObject.btoa.bind(globalObject);\n  return;\n\n})();\n\nexport { atob, btoa };\n", "/**\n * A class to parse color values\n * @author Stoyan Stefanov <sstoo@gmail.com>\n * {@link   http://www.phpied.com/rgb-color-parser-in-javascript/}\n * @license Use it if you like it\n */\n\nfunction RGBColor(color_string) {\n  color_string = color_string || \"\";\n  this.ok = false;\n\n  // strip any leading #\n  if (color_string.charAt(0) == \"#\") {\n    // remove # if any\n    color_string = color_string.substr(1, 6);\n  }\n\n  color_string = color_string.replace(/ /g, \"\");\n  color_string = color_string.toLowerCase();\n\n  var channels;\n\n  // before getting into regexps, try simple matches\n  // and overwrite the input\n  var simple_colors = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"00ffff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"0000ff\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"00ffff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dodgerblue: \"1e90ff\",\n    feldspar: \"d19275\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"ff00ff\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgrey: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslateblue: \"8470ff\",\n    lightslategray: \"778899\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"00ff00\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"ff00ff\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370d8\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"d87093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    red: \"ff0000\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    violetred: \"d02090\",\n    wheat: \"f5deb3\",\n    white: \"ffffff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ffff00\",\n    yellowgreen: \"9acd32\"\n  };\n  color_string = simple_colors[color_string] || color_string;\n\n  // array of color definition objects\n  var color_defs = [\n    {\n      re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n      example: [\"rgb(123, 234, 45)\", \"rgb(255,234,245)\"],\n      process: function(bits) {\n        return [parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3])];\n      }\n    },\n    {\n      re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n      example: [\"#00ff00\", \"336699\"],\n      process: function(bits) {\n        return [\n          parseInt(bits[1], 16),\n          parseInt(bits[2], 16),\n          parseInt(bits[3], 16)\n        ];\n      }\n    },\n    {\n      re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n      example: [\"#fb0\", \"f0f\"],\n      process: function(bits) {\n        return [\n          parseInt(bits[1] + bits[1], 16),\n          parseInt(bits[2] + bits[2], 16),\n          parseInt(bits[3] + bits[3], 16)\n        ];\n      }\n    }\n  ];\n\n  // search through the definitions to find a match\n  for (var i = 0; i < color_defs.length; i++) {\n    var re = color_defs[i].re;\n    var processor = color_defs[i].process;\n    var bits = re.exec(color_string);\n    if (bits) {\n      channels = processor(bits);\n      this.r = channels[0];\n      this.g = channels[1];\n      this.b = channels[2];\n      this.ok = true;\n    }\n  }\n\n  // validate/cleanup values\n  this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r;\n  this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g;\n  this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b;\n\n  // some getters\n  this.toRGB = function() {\n    return \"rgb(\" + this.r + \", \" + this.g + \", \" + this.b + \")\";\n  };\n  this.toHex = function() {\n    var r = this.r.toString(16);\n    var g = this.g.toString(16);\n    var b = this.b.toString(16);\n    if (r.length == 1) r = \"0\" + r;\n    if (g.length == 1) g = \"0\" + g;\n    if (b.length == 1) b = \"0\" + b;\n    return \"#\" + r + g + b;\n  };\n}\n\nexport { RGBColor };\n", "/**\n * @license\n * Joseph Myers does not specify a particular license for his work.\n *\n * Author: Joseph Myers\n * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js\n *\n * Modified by: Owen Leong\n */\n\nfunction md5cycle(x, k) {\n  var a = x[0],\n    b = x[1],\n    c = x[2],\n    d = x[3];\n\n  a = ff(a, b, c, d, k[0], 7, -680876936);\n  d = ff(d, a, b, c, k[1], 12, -389564586);\n  c = ff(c, d, a, b, k[2], 17, 606105819);\n  b = ff(b, c, d, a, k[3], 22, -1044525330);\n  a = ff(a, b, c, d, k[4], 7, -176418897);\n  d = ff(d, a, b, c, k[5], 12, 1200080426);\n  c = ff(c, d, a, b, k[6], 17, -1473231341);\n  b = ff(b, c, d, a, k[7], 22, -45705983);\n  a = ff(a, b, c, d, k[8], 7, 1770035416);\n  d = ff(d, a, b, c, k[9], 12, -1958414417);\n  c = ff(c, d, a, b, k[10], 17, -42063);\n  b = ff(b, c, d, a, k[11], 22, -1990404162);\n  a = ff(a, b, c, d, k[12], 7, 1804603682);\n  d = ff(d, a, b, c, k[13], 12, -40341101);\n  c = ff(c, d, a, b, k[14], 17, -1502002290);\n  b = ff(b, c, d, a, k[15], 22, 1236535329);\n\n  a = gg(a, b, c, d, k[1], 5, -165796510);\n  d = gg(d, a, b, c, k[6], 9, -1069501632);\n  c = gg(c, d, a, b, k[11], 14, 643717713);\n  b = gg(b, c, d, a, k[0], 20, -373897302);\n  a = gg(a, b, c, d, k[5], 5, -701558691);\n  d = gg(d, a, b, c, k[10], 9, 38016083);\n  c = gg(c, d, a, b, k[15], 14, -660478335);\n  b = gg(b, c, d, a, k[4], 20, -405537848);\n  a = gg(a, b, c, d, k[9], 5, 568446438);\n  d = gg(d, a, b, c, k[14], 9, -1019803690);\n  c = gg(c, d, a, b, k[3], 14, -187363961);\n  b = gg(b, c, d, a, k[8], 20, 1163531501);\n  a = gg(a, b, c, d, k[13], 5, -1444681467);\n  d = gg(d, a, b, c, k[2], 9, -51403784);\n  c = gg(c, d, a, b, k[7], 14, 1735328473);\n  b = gg(b, c, d, a, k[12], 20, -1926607734);\n\n  a = hh(a, b, c, d, k[5], 4, -378558);\n  d = hh(d, a, b, c, k[8], 11, -2022574463);\n  c = hh(c, d, a, b, k[11], 16, 1839030562);\n  b = hh(b, c, d, a, k[14], 23, -35309556);\n  a = hh(a, b, c, d, k[1], 4, -1530992060);\n  d = hh(d, a, b, c, k[4], 11, 1272893353);\n  c = hh(c, d, a, b, k[7], 16, -155497632);\n  b = hh(b, c, d, a, k[10], 23, -1094730640);\n  a = hh(a, b, c, d, k[13], 4, 681279174);\n  d = hh(d, a, b, c, k[0], 11, -358537222);\n  c = hh(c, d, a, b, k[3], 16, -722521979);\n  b = hh(b, c, d, a, k[6], 23, 76029189);\n  a = hh(a, b, c, d, k[9], 4, -640364487);\n  d = hh(d, a, b, c, k[12], 11, -421815835);\n  c = hh(c, d, a, b, k[15], 16, 530742520);\n  b = hh(b, c, d, a, k[2], 23, -995338651);\n\n  a = ii(a, b, c, d, k[0], 6, -198630844);\n  d = ii(d, a, b, c, k[7], 10, 1126891415);\n  c = ii(c, d, a, b, k[14], 15, -1416354905);\n  b = ii(b, c, d, a, k[5], 21, -57434055);\n  a = ii(a, b, c, d, k[12], 6, 1700485571);\n  d = ii(d, a, b, c, k[3], 10, -1894986606);\n  c = ii(c, d, a, b, k[10], 15, -1051523);\n  b = ii(b, c, d, a, k[1], 21, -2054922799);\n  a = ii(a, b, c, d, k[8], 6, 1873313359);\n  d = ii(d, a, b, c, k[15], 10, -30611744);\n  c = ii(c, d, a, b, k[6], 15, -1560198380);\n  b = ii(b, c, d, a, k[13], 21, 1309151649);\n  a = ii(a, b, c, d, k[4], 6, -145523070);\n  d = ii(d, a, b, c, k[11], 10, -1120210379);\n  c = ii(c, d, a, b, k[2], 15, 718787259);\n  b = ii(b, c, d, a, k[9], 21, -343485551);\n\n  x[0] = add32(a, x[0]);\n  x[1] = add32(b, x[1]);\n  x[2] = add32(c, x[2]);\n  x[3] = add32(d, x[3]);\n}\n\nfunction cmn(q, a, b, x, s, t) {\n  a = add32(add32(a, q), add32(x, t));\n  return add32((a << s) | (a >>> (32 - s)), b);\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n  return cmn((b & c) | (~b & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n  return cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n  return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n  return cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nfunction md51(s) {\n  // txt = '';\n  var n = s.length,\n    state = [1732584193, -271733879, -1732584194, 271733878],\n    i;\n  for (i = 64; i <= s.length; i += 64) {\n    md5cycle(state, md5blk(s.substring(i - 64, i)));\n  }\n  s = s.substring(i - 64);\n  var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n  for (i = 0; i < s.length; i++)\n    tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n  tail[i >> 2] |= 0x80 << (i % 4 << 3);\n  if (i > 55) {\n    md5cycle(state, tail);\n    for (i = 0; i < 16; i++) tail[i] = 0;\n  }\n  tail[14] = n * 8;\n  md5cycle(state, tail);\n  return state;\n}\n\n/* there needs to be support for Unicode here,\n * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps\n * by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise\n * I suggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then\n * how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something\n * like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard\n * itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8\n * 8-bit unsigned value arrays.\n */\nfunction md5blk(s) {\n  /* I figured global was faster.   */\n  var md5blks = [],\n    i; /* Andy King said do it this way. */\n  for (i = 0; i < 64; i += 4) {\n    md5blks[i >> 2] =\n      s.charCodeAt(i) +\n      (s.charCodeAt(i + 1) << 8) +\n      (s.charCodeAt(i + 2) << 16) +\n      (s.charCodeAt(i + 3) << 24);\n  }\n  return md5blks;\n}\n\nvar hex_chr = \"0123456789abcdef\".split(\"\");\n\nfunction rhex(n) {\n  var s = \"\",\n    j = 0;\n  for (; j < 4; j++)\n    s += hex_chr[(n >> (j * 8 + 4)) & 0x0f] + hex_chr[(n >> (j * 8)) & 0x0f];\n  return s;\n}\n\nfunction hex(x) {\n  for (var i = 0; i < x.length; i++) x[i] = rhex(x[i]);\n  return x.join(\"\");\n}\n\n// Converts a 4-byte number to byte string\nfunction singleToByteString(n) {\n  return String.fromCharCode(\n    (n & 0xff) >> 0,\n    (n & 0xff00) >> 8,\n    (n & 0xff0000) >> 16,\n    (n & 0xff000000) >> 24\n  );\n}\n\n// Converts an array of numbers to a byte string\nfunction toByteString(x) {\n  return x.map(singleToByteString).join(\"\");\n}\n\n// Returns the MD5 hash as a byte string\nfunction md5Bin(s) {\n  return toByteString(md51(s));\n}\n\n// Returns MD5 hash as a hex string\nfunction md5(s) {\n  return hex(md51(s));\n}\n\nvar md5Check = md5(\"hello\") != \"5d41402abc4b2a76b9719d911017c592\";\n\nfunction add32(a, b) {\n  if (md5Check) {\n    /* if the md5Check does not match\n     the expected value, we're dealing\n     with an old browser and need\n     this function. */\n    var lsw = (a & 0xffff) + (b & 0xffff),\n      msw = (a >> 16) + (b >> 16) + (lsw >> 16);\n    return (msw << 16) | (lsw & 0xffff);\n  } else {\n    /* this function is much faster,\n    so if possible we use it. Some IEs\n    are the only ones I know of that\n    need the idiotic second function,\n    generated by an if clause.  */\n    return (a + b) & 0xffffffff;\n  }\n}\n\nexport { md5, md5Bin };\n", "/**\r\n * @license\r\n * FPDF is released under a permissive license: there is no usage restriction.\r\n * You may embed it freely in your application (commercial or not), with or\r\n * without modifications.\r\n *\r\n * Reference: http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nfunction repeat(str, num) {\r\n  return new Array(num + 1).join(str);\r\n}\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name rc4\r\n * @function\r\n * @param {string} key Byte string of encryption key\r\n * @param {string} data Byte string of data to be encrypted\r\n * @returns {string} Encrypted string\r\n */\r\nfunction rc4(key, data) {\r\n  var lastKey, lastState;\r\n  if (key !== lastKey) {\r\n    var k = repeat(key, ((256 / key.length) >> 0) + 1);\r\n    var state = [];\r\n    for (var i = 0; i < 256; i++) {\r\n      state[i] = i;\r\n    }\r\n    var j = 0;\r\n    for (var i = 0; i < 256; i++) {\r\n      var t = state[i];\r\n      j = (j + t + k.charCodeAt(i)) % 256;\r\n      state[i] = state[j];\r\n      state[j] = t;\r\n    }\r\n    lastKey = key;\r\n    lastState = state;\r\n  } else {\r\n    state = lastState;\r\n  }\r\n  var length = data.length;\r\n  var a = 0;\r\n  var b = 0;\r\n  var out = \"\";\r\n  for (var i = 0; i < length; i++) {\r\n    a = (a + 1) % 256;\r\n    t = state[a];\r\n    b = (b + t) % 256;\r\n    state[a] = state[b];\r\n    state[b] = t;\r\n    k = state[(state[a] + state[b]) % 256];\r\n    out += String.fromCharCode(data.charCodeAt(i) ^ k);\r\n  }\r\n  return out;\r\n}\r\n\r\nexport { rc4 };\r\n", "/**\r\n * @license\r\n * Licensed under the MIT License.\r\n * http://opensource.org/licenses/mit-license\r\n * Author: Owen Leong (@owenl131)\r\n * Date: 15 Oct 2020\r\n * References:\r\n * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt\r\n * https://github.com/foliojs/pdfkit/blob/master/lib/security.js\r\n * http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nimport { md5Bin } from \"./md5.js\";\r\nimport { rc4 } from \"./rc4.js\";\r\n\r\nvar permissionOptions = {\r\n  print: 4,\r\n  modify: 8,\r\n  copy: 16,\r\n  \"annot-forms\": 32\r\n};\r\n\r\n/**\r\n * Initializes encryption settings\r\n *\r\n * @name constructor\r\n * @function\r\n * @param {Array} permissions Permissions allowed for user, \"print\", \"modify\", \"copy\" and \"annot-forms\".\r\n * @param {String} userPassword Permissions apply to this user. Leaving this empty means the document\r\n *                              is not password protected but viewer has the above permissions.\r\n * @param {String} ownerPassword Owner has full functionalities to the file.\r\n * @param {String} fileId As hex string, should be same as the file ID in the trailer.\r\n * @example\r\n * var security = new PDFSecurity([\"print\"])\r\n */\r\nfunction PDFSecurity(permissions, userPassword, ownerPassword, fileId) {\r\n  this.v = 1; // algorithm 1, future work can add in more recent encryption schemes\r\n  this.r = 2; // revision 2\r\n\r\n  // set flags for what functionalities the user can access\r\n  let protection = 192;\r\n  permissions.forEach(function(perm) {\r\n    if (typeof permissionOptions.perm !== \"undefined\") {\r\n      throw new Error(\"Invalid permission: \" + perm);\r\n    }\r\n    protection += permissionOptions[perm];\r\n  });\r\n\r\n  // padding is used to pad the passwords to 32 bytes, also is hashed and stored in the final PDF\r\n  this.padding =\r\n    \"\\x28\\xBF\\x4E\\x5E\\x4E\\x75\\x8A\\x41\\x64\\x00\\x4E\\x56\\xFF\\xFA\\x01\\x08\" +\r\n    \"\\x2E\\x2E\\x00\\xB6\\xD0\\x68\\x3E\\x80\\x2F\\x0C\\xA9\\xFE\\x64\\x53\\x69\\x7A\";\r\n  let paddedUserPassword = (userPassword + this.padding).substr(0, 32);\r\n  let paddedOwnerPassword = (ownerPassword + this.padding).substr(0, 32);\r\n\r\n  this.O = this.processOwnerPassword(paddedUserPassword, paddedOwnerPassword);\r\n  this.P = -((protection ^ 255) + 1);\r\n  this.encryptionKey = md5Bin(\r\n    paddedUserPassword +\r\n      this.O +\r\n      this.lsbFirstWord(this.P) +\r\n      this.hexToBytes(fileId)\r\n  ).substr(0, 5);\r\n  this.U = rc4(this.encryptionKey, this.padding);\r\n}\r\n\r\n/**\r\n * Breaks down a 4-byte number into its individual bytes, with the least significant bit first\r\n *\r\n * @name lsbFirstWord\r\n * @function\r\n * @param {number} data 32-bit number\r\n * @returns {Array}\r\n */\r\nPDFSecurity.prototype.lsbFirstWord = function(data) {\r\n  return String.fromCharCode(\r\n    (data >> 0) & 0xff,\r\n    (data >> 8) & 0xff,\r\n    (data >> 16) & 0xff,\r\n    (data >> 24) & 0xff\r\n  );\r\n};\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name toHexString\r\n * @function\r\n * @param {String} byteString Byte string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.toHexString = function(byteString) {\r\n  return byteString\r\n    .split(\"\")\r\n    .map(function(byte) {\r\n      return (\"0\" + (byte.charCodeAt(0) & 0xff).toString(16)).slice(-2);\r\n    })\r\n    .join(\"\");\r\n};\r\n\r\n/**\r\n * Converts a hex string to a byte string\r\n *\r\n * @name hexToBytes\r\n * @function\r\n * @param {String} hex Hex string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.hexToBytes = function(hex) {\r\n  for (var bytes = [], c = 0; c < hex.length; c += 2)\r\n    bytes.push(String.fromCharCode(parseInt(hex.substr(c, 2), 16)));\r\n  return bytes.join(\"\");\r\n};\r\n\r\n/**\r\n * Computes the 'O' field in the encryption dictionary\r\n *\r\n * @name processOwnerPassword\r\n * @function\r\n * @param {String} paddedUserPassword Byte string of padded user password\r\n * @param {String} paddedOwnerPassword Byte string of padded owner password\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.processOwnerPassword = function(\r\n  paddedUserPassword,\r\n  paddedOwnerPassword\r\n) {\r\n  let key = md5Bin(paddedOwnerPassword).substr(0, 5);\r\n  return rc4(key, paddedUserPassword);\r\n};\r\n\r\n/**\r\n * Returns an encryptor function which can take in a byte string and returns the encrypted version\r\n *\r\n * @name encryptor\r\n * @function\r\n * @param {number} objectId\r\n * @param {number} generation Not sure what this is for, you can set it to 0\r\n * @returns {Function}\r\n * @example\r\n * out(\"stream\");\r\n * encryptor = security.encryptor(object.id, 0);\r\n * out(encryptor(data));\r\n * out(\"endstream\");\r\n */\r\nPDFSecurity.prototype.encryptor = function(objectId, generation) {\r\n  let key = md5Bin(\r\n    this.encryptionKey +\r\n      String.fromCharCode(\r\n        objectId & 0xff,\r\n        (objectId >> 8) & 0xff,\r\n        (objectId >> 16) & 0xff,\r\n        generation & 0xff,\r\n        (generation >> 8) & 0xff\r\n      )\r\n  ).substr(0, 10);\r\n  return function(data) {\r\n    return rc4(key, data);\r\n  };\r\n};\r\n\r\nexport { PDFSecurity };\r\n", "/**\n * Convert string to `PDF Name Object`.\n * Detail: PDF Reference 1.3 - Chapter 3.2.4 Name Object\n * @param str\n */\nfunction toPDFName(str) {\n  // eslint-disable-next-line no-control-regex\n  if (/[^\\u0000-\\u00ff]/.test(str)) {\n    // non ascii string\n    throw new Error(\n      \"Invalid PDF Name Object: \" + str + \", Only accept ASCII characters.\"\n    );\n  }\n  var result = \"\",\n    strLength = str.length;\n  for (var i = 0; i < strLength; i++) {\n    var charCode = str.charCodeAt(i);\n    if (\n      charCode < 0x21 ||\n      charCode === 0x23 /* # */ ||\n      charCode === 0x25 /* % */ ||\n      charCode === 0x28 /* ( */ ||\n      charCode === 0x29 /* ) */ ||\n      charCode === 0x2f /* / */ ||\n      charCode === 0x3c /* < */ ||\n      charCode === 0x3e /* > */ ||\n      charCode === 0x5b /* [ */ ||\n      charCode === 0x5d /* ] */ ||\n      charCode === 0x7b /* { */ ||\n      charCode === 0x7d /* } */ ||\n      charCode > 0x7e\n    ) {\n      // Char    CharCode    hexStr   paddingHexStr    Result\n      // \"\\t\"    9           9        09               #09\n      // \" \"     32          20       20               #20\n      // \"©\"     169         a9       a9               #a9\n      var hexStr = charCode.toString(16),\n        paddingHexStr = (\"0\" + hexStr).slice(-2);\n\n      result += \"#\" + paddingHexStr;\n    } else {\n      // Other ASCII printable characters between 0x21 <= X <= 0x7e\n      result += str[i];\n    }\n  }\n  return result;\n}\n\nexport { toPDFName };\n", "/* eslint-disable no-console */\r\n\r\nimport { saveAs } from \"./libs/FileSaver.js\";\r\nimport { globalObject } from \"./libs/globalObject.js\";\r\nimport { RGBColor } from \"./libs/rgbcolor.js\";\r\nimport { btoa } from \"./libs/AtobBtoa.js\";\r\nimport { console } from \"./libs/console.js\";\r\nimport { PDFSecurity } from \"./libs/pdfsecurity.js\";\r\nimport { toPDFName } from \"./libs/pdfname.js\";\r\n/**\r\n * jsPDF's Internal PubSub Implementation.\r\n * Backward compatible rewritten on 2014 by\r\n * Diego Casorran, https://github.com/diegocr\r\n *\r\n * @class\r\n * @name PubSub\r\n * @ignore\r\n */\r\nfunction PubSub(context) {\r\n  if (typeof context !== \"object\") {\r\n    throw new Error(\r\n      \"Invalid Context passed to initialize PubSub (jsPDF-module)\"\r\n    );\r\n  }\r\n  var topics = {};\r\n\r\n  this.subscribe = function(topic, callback, once) {\r\n    once = once || false;\r\n    if (\r\n      typeof topic !== \"string\" ||\r\n      typeof callback !== \"function\" ||\r\n      typeof once !== \"boolean\"\r\n    ) {\r\n      throw new Error(\r\n        \"Invalid arguments passed to PubSub.subscribe (jsPDF-module)\"\r\n      );\r\n    }\r\n\r\n    if (!topics.hasOwnProperty(topic)) {\r\n      topics[topic] = {};\r\n    }\r\n\r\n    var token = Math.random().toString(35);\r\n    topics[topic][token] = [callback, !!once];\r\n\r\n    return token;\r\n  };\r\n\r\n  this.unsubscribe = function(token) {\r\n    for (var topic in topics) {\r\n      if (topics[topic][token]) {\r\n        delete topics[topic][token];\r\n        if (Object.keys(topics[topic]).length === 0) {\r\n          delete topics[topic];\r\n        }\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  };\r\n\r\n  this.publish = function(topic) {\r\n    if (topics.hasOwnProperty(topic)) {\r\n      var args = Array.prototype.slice.call(arguments, 1),\r\n        tokens = [];\r\n\r\n      for (var token in topics[topic]) {\r\n        var sub = topics[topic][token];\r\n        try {\r\n          sub[0].apply(context, args);\r\n        } catch (ex) {\r\n          if (globalObject.console) {\r\n            console.error(\"jsPDF PubSub Error\", ex.message, ex);\r\n          }\r\n        }\r\n        if (sub[1]) tokens.push(token);\r\n      }\r\n      if (tokens.length) tokens.forEach(this.unsubscribe);\r\n    }\r\n  };\r\n\r\n  this.getTopics = function() {\r\n    return topics;\r\n  };\r\n}\r\n\r\nfunction GState(parameters) {\r\n  if (!(this instanceof GState)) {\r\n    return new GState(parameters);\r\n  }\r\n\r\n  /**\r\n   * @name GState#opacity\r\n   * @type {any}\r\n   */\r\n  /**\r\n   * @name GState#stroke-opacity\r\n   * @type {any}\r\n   */\r\n  var supported = \"opacity,stroke-opacity\".split(\",\");\r\n  for (var p in parameters) {\r\n    if (parameters.hasOwnProperty(p) && supported.indexOf(p) >= 0) {\r\n      this[p] = parameters[p];\r\n    }\r\n  }\r\n  /**\r\n   * @name GState#id\r\n   * @type {string}\r\n   */\r\n  this.id = \"\"; // set by addGState()\r\n  /**\r\n   * @name GState#objectNumber\r\n   * @type {number}\r\n   */\r\n  this.objectNumber = -1; // will be set by putGState()\r\n}\r\n\r\nGState.prototype.equals = function equals(other) {\r\n  var ignore = \"id,objectNumber,equals\";\r\n  var p;\r\n  if (!other || typeof other !== typeof this) return false;\r\n  var count = 0;\r\n  for (p in this) {\r\n    if (ignore.indexOf(p) >= 0) continue;\r\n    if (this.hasOwnProperty(p) && !other.hasOwnProperty(p)) return false;\r\n    if (this[p] !== other[p]) return false;\r\n    count++;\r\n  }\r\n  for (p in other) {\r\n    if (other.hasOwnProperty(p) && ignore.indexOf(p) < 0) count--;\r\n  }\r\n  return count === 0;\r\n};\r\n\r\nfunction Pattern(gState, matrix) {\r\n  this.gState = gState;\r\n  this.matrix = matrix;\r\n\r\n  this.id = \"\"; // set by addPattern()\r\n  this.objectNumber = -1; // will be set by putPattern()\r\n}\r\n\r\nfunction ShadingPattern(type, coords, colors, gState, matrix) {\r\n  if (!(this instanceof ShadingPattern)) {\r\n    return new ShadingPattern(type, coords, colors, gState, matrix);\r\n  }\r\n\r\n  // see putPattern() for information how they are realized\r\n  this.type = type === \"axial\" ? 2 : 3;\r\n  this.coords = coords;\r\n  this.colors = colors;\r\n\r\n  Pattern.call(this, gState, matrix);\r\n}\r\n\r\nfunction TilingPattern(boundingBox, xStep, yStep, gState, matrix) {\r\n  if (!(this instanceof TilingPattern)) {\r\n    return new TilingPattern(boundingBox, xStep, yStep, gState, matrix);\r\n  }\r\n\r\n  this.boundingBox = boundingBox;\r\n  this.xStep = xStep;\r\n  this.yStep = yStep;\r\n\r\n  this.stream = \"\"; // set by endTilingPattern();\r\n\r\n  this.cloneIndex = 0;\r\n\r\n  Pattern.call(this, gState, matrix);\r\n}\r\n\r\n/**\r\n * Creates new jsPDF document object instance.\r\n * @name jsPDF\r\n * @class\r\n * @param {Object} [options] - Collection of settings initializing the jsPDF-instance\r\n * @param {string} [options.orientation=portrait] - Orientation of the first page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" or \"l\").<br />\r\n * @param {string} [options.unit=mm] Measurement unit (base unit) to be used when coordinates are specified.<br />\r\n * Possible values are \"pt\" (points), \"mm\", \"cm\", \"in\", \"px\", \"pc\", \"em\" or \"ex\". Note that in order to get the correct scaling for \"px\"\r\n * units, you need to enable the hotfix \"px_scaling\" by setting options.hotfixes = [\"px_scaling\"].\r\n * @param {string/Array} [options.format=a4] The format of the first page. Can be:<ul><li>a0 - a10</li><li>b0 - b10</li><li>c0 - c10</li><li>dl</li><li>letter</li><li>government-letter</li><li>legal</li><li>junior-legal</li><li>ledger</li><li>tabloid</li><li>credit-card</li></ul><br />\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param {boolean} [options.putOnlyUsedFonts=false] Only put fonts into the PDF, which were used.\r\n * @param {boolean} [options.compress=false] Compress the generated PDF.\r\n * @param {number} [options.precision=16] Precision of the element-positions.\r\n * @param {number} [options.userUnit=1.0] Not to be confused with the base unit. Please inform yourself before you use it.\r\n * @param {string[]} [options.hotfixes] An array of strings to enable hotfixes such as correct pixel scaling.\r\n * @param {Object} [options.encryption]\r\n * @param {string} [options.encryption.userPassword] Password for the user bound by the given permissions list.\r\n * @param {string} [options.encryption.ownerPassword] Both userPassword and ownerPassword should be set for proper authentication.\r\n * @param {string[]} [options.encryption.userPermissions] Array of permissions \"print\", \"modify\", \"copy\", \"annot-forms\", accessible by the user.\r\n * @param {number|\"smart\"} [options.floatPrecision=16]\r\n * @returns {jsPDF} jsPDF-instance\r\n * @description\r\n * ```\r\n * {\r\n *  orientation: 'p',\r\n *  unit: 'mm',\r\n *  format: 'a4',\r\n *  putOnlyUsedFonts:true,\r\n *  floatPrecision: 16 // or \"smart\", default is 16\r\n * }\r\n * ```\r\n *\r\n * @constructor\r\n */\r\nfunction jsPDF(options) {\r\n  var orientation = typeof arguments[0] === \"string\" ? arguments[0] : \"p\";\r\n  var unit = arguments[1];\r\n  var format = arguments[2];\r\n  var compressPdf = arguments[3];\r\n  var filters = [];\r\n  var userUnit = 1.0;\r\n  var precision;\r\n  var floatPrecision = 16;\r\n  var defaultPathOperation = \"S\";\r\n  var encryptionOptions = null;\r\n\r\n  options = options || {};\r\n\r\n  if (typeof options === \"object\") {\r\n    orientation = options.orientation;\r\n    unit = options.unit || unit;\r\n    format = options.format || format;\r\n    compressPdf = options.compress || options.compressPdf || compressPdf;\r\n    encryptionOptions = options.encryption || null;\r\n    if (encryptionOptions !== null) {\r\n      encryptionOptions.userPassword = encryptionOptions.userPassword || \"\";\r\n      encryptionOptions.ownerPassword = encryptionOptions.ownerPassword || \"\";\r\n      encryptionOptions.userPermissions =\r\n        encryptionOptions.userPermissions || [];\r\n    }\r\n    userUnit =\r\n      typeof options.userUnit === \"number\" ? Math.abs(options.userUnit) : 1.0;\r\n    if (typeof options.precision !== \"undefined\") {\r\n      precision = options.precision;\r\n    }\r\n    if (typeof options.floatPrecision !== \"undefined\") {\r\n      floatPrecision = options.floatPrecision;\r\n    }\r\n    defaultPathOperation = options.defaultPathOperation || \"S\";\r\n  }\r\n\r\n  filters =\r\n    options.filters || (compressPdf === true ? [\"FlateEncode\"] : filters);\r\n\r\n  unit = unit || \"mm\";\r\n  orientation = (\"\" + (orientation || \"P\")).toLowerCase();\r\n  var putOnlyUsedFonts = options.putOnlyUsedFonts || false;\r\n  var usedFonts = {};\r\n\r\n  var API = {\r\n    internal: {},\r\n    __private__: {}\r\n  };\r\n\r\n  API.__private__.PubSub = PubSub;\r\n\r\n  var pdfVersion = \"1.3\";\r\n  var getPdfVersion = (API.__private__.getPdfVersion = function() {\r\n    return pdfVersion;\r\n  });\r\n\r\n  API.__private__.setPdfVersion = function(value) {\r\n    pdfVersion = value;\r\n  };\r\n\r\n  // Size in pt of various paper formats\r\n  var pageFormats = {\r\n    a0: [2383.94, 3370.39],\r\n    a1: [1683.78, 2383.94],\r\n    a2: [1190.55, 1683.78],\r\n    a3: [841.89, 1190.55],\r\n    a4: [595.28, 841.89],\r\n    a5: [419.53, 595.28],\r\n    a6: [297.64, 419.53],\r\n    a7: [209.76, 297.64],\r\n    a8: [147.4, 209.76],\r\n    a9: [104.88, 147.4],\r\n    a10: [73.7, 104.88],\r\n    b0: [2834.65, 4008.19],\r\n    b1: [2004.09, 2834.65],\r\n    b2: [1417.32, 2004.09],\r\n    b3: [1000.63, 1417.32],\r\n    b4: [708.66, 1000.63],\r\n    b5: [498.9, 708.66],\r\n    b6: [354.33, 498.9],\r\n    b7: [249.45, 354.33],\r\n    b8: [175.75, 249.45],\r\n    b9: [124.72, 175.75],\r\n    b10: [87.87, 124.72],\r\n    c0: [2599.37, 3676.54],\r\n    c1: [1836.85, 2599.37],\r\n    c2: [1298.27, 1836.85],\r\n    c3: [918.43, 1298.27],\r\n    c4: [649.13, 918.43],\r\n    c5: [459.21, 649.13],\r\n    c6: [323.15, 459.21],\r\n    c7: [229.61, 323.15],\r\n    c8: [161.57, 229.61],\r\n    c9: [113.39, 161.57],\r\n    c10: [79.37, 113.39],\r\n    dl: [311.81, 623.62],\r\n    letter: [612, 792],\r\n    \"government-letter\": [576, 756],\r\n    legal: [612, 1008],\r\n    \"junior-legal\": [576, 360],\r\n    ledger: [1224, 792],\r\n    tabloid: [792, 1224],\r\n    \"credit-card\": [153, 243]\r\n  };\r\n\r\n  API.__private__.getPageFormats = function() {\r\n    return pageFormats;\r\n  };\r\n\r\n  var getPageFormat = (API.__private__.getPageFormat = function(value) {\r\n    return pageFormats[value];\r\n  });\r\n\r\n  format = format || \"a4\";\r\n\r\n  var ApiMode = {\r\n    COMPAT: \"compat\",\r\n    ADVANCED: \"advanced\"\r\n  };\r\n  var apiMode = ApiMode.COMPAT;\r\n\r\n  function advancedAPI() {\r\n    // prepend global change of basis matrix\r\n    // (Now, instead of converting every coordinate to the pdf coordinate system, we apply a matrix\r\n    // that does this job for us (however, texts, images and similar objects must be drawn bottom up))\r\n    this.saveGraphicsState();\r\n    out(\r\n      new Matrix(\r\n        scaleFactor,\r\n        0,\r\n        0,\r\n        -scaleFactor,\r\n        0,\r\n        getPageHeight() * scaleFactor\r\n      ).toString() + \" cm\"\r\n    );\r\n    this.setFontSize(this.getFontSize() / scaleFactor);\r\n\r\n    // The default in MrRio's implementation is \"S\" (stroke), whereas the default in the yWorks implementation\r\n    // was \"n\" (none). Although this has nothing to do with transforms, we should use the API switch here.\r\n    defaultPathOperation = \"n\";\r\n\r\n    apiMode = ApiMode.ADVANCED;\r\n  }\r\n\r\n  function compatAPI() {\r\n    this.restoreGraphicsState();\r\n    defaultPathOperation = \"S\";\r\n    apiMode = ApiMode.COMPAT;\r\n  }\r\n\r\n  /**\r\n   * @function combineFontStyleAndFontWeight\r\n   * @param {string} fontStyle Fontstyle or variant. Example: \"italic\".\r\n   * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n   * @returns {string}\r\n   * @private\r\n   */\r\n  var combineFontStyleAndFontWeight = (API.__private__.combineFontStyleAndFontWeight = function(\r\n    fontStyle,\r\n    fontWeight\r\n  ) {\r\n    if (\r\n      (fontStyle == \"bold\" && fontWeight == \"normal\") ||\r\n      (fontStyle == \"bold\" && fontWeight == 400) ||\r\n      (fontStyle == \"normal\" && fontWeight == \"italic\") ||\r\n      (fontStyle == \"bold\" && fontWeight == \"italic\")\r\n    ) {\r\n      throw new Error(\"Invalid Combination of fontweight and fontstyle\");\r\n    }\r\n    if (fontWeight) {\r\n      fontStyle =\r\n        fontWeight == 400 || fontWeight === \"normal\"\r\n          ? fontStyle === \"italic\"\r\n            ? \"italic\"\r\n            : \"normal\"\r\n          : (fontWeight == 700 || fontWeight === \"bold\") &&\r\n            fontStyle === \"normal\"\r\n          ? \"bold\"\r\n          : (fontWeight == 700 ? \"bold\" : fontWeight) + \"\" + fontStyle;\r\n    }\r\n    return fontStyle;\r\n  });\r\n\r\n  /**\r\n   * @callback ApiSwitchBody\r\n   * @param {jsPDF} pdf\r\n   */\r\n\r\n  /**\r\n   * For compatibility reasons jsPDF offers two API modes which differ in the way they convert between the the usual\r\n   * screen coordinates and the PDF coordinate system.\r\n   *   - \"compat\": Offers full compatibility across all plugins but does not allow arbitrary transforms\r\n   *   - \"advanced\": Allows arbitrary transforms and more advanced features like pattern fills. Some plugins might\r\n   *     not support this mode, though.\r\n   * Initial mode is \"compat\".\r\n   *\r\n   * You can either provide a callback to the body argument, which means that jsPDF will automatically switch back to\r\n   * the original API mode afterwards; or you can omit the callback and switch back manually using {@link compatAPI}.\r\n   *\r\n   * Note, that the calls to {@link saveGraphicsState} and {@link restoreGraphicsState} need to be balanced within the\r\n   * callback or between calls of this method and its counterpart {@link compatAPI}. Calls to {@link beginFormObject}\r\n   * or {@link beginTilingPattern} need to be closed by their counterparts before switching back to \"compat\" API mode.\r\n   *\r\n   * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\r\n   * The API mode will be switched back automatically afterwards.\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name advancedAPI\r\n   */\r\n  API.advancedAPI = function(body) {\r\n    var doSwitch = apiMode === ApiMode.COMPAT;\r\n\r\n    if (doSwitch) {\r\n      advancedAPI.call(this);\r\n    }\r\n\r\n    if (typeof body !== \"function\") {\r\n      return this;\r\n    }\r\n\r\n    body(this);\r\n\r\n    if (doSwitch) {\r\n      compatAPI.call(this);\r\n    }\r\n\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Switches to \"compat\" API mode. See {@link advancedAPI} for more details.\r\n   *\r\n   * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\r\n   * The API mode will be switched back automatically afterwards.\r\n   * @return {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name compatApi\r\n   */\r\n  API.compatAPI = function(body) {\r\n    var doSwitch = apiMode === ApiMode.ADVANCED;\r\n\r\n    if (doSwitch) {\r\n      compatAPI.call(this);\r\n    }\r\n\r\n    if (typeof body !== \"function\") {\r\n      return this;\r\n    }\r\n\r\n    body(this);\r\n\r\n    if (doSwitch) {\r\n      advancedAPI.call(this);\r\n    }\r\n\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * @return {boolean} True iff the current API mode is \"advanced\". See {@link advancedAPI}.\r\n   * @memberof jsPDF#\r\n   * @name isAdvancedAPI\r\n   */\r\n  API.isAdvancedAPI = function() {\r\n    return apiMode === ApiMode.ADVANCED;\r\n  };\r\n\r\n  var advancedApiModeTrap = function(methodName) {\r\n    if (apiMode !== ApiMode.ADVANCED) {\r\n      throw new Error(\r\n        methodName +\r\n          \" is only available in 'advanced' API mode. \" +\r\n          \"You need to call advancedAPI() first.\"\r\n      );\r\n    }\r\n  };\r\n\r\n  var roundToPrecision = (API.roundToPrecision = API.__private__.roundToPrecision = function(\r\n    number,\r\n    parmPrecision\r\n  ) {\r\n    var tmpPrecision = precision || parmPrecision;\r\n    if (isNaN(number) || isNaN(tmpPrecision)) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.roundToPrecision\");\r\n    }\r\n    return number.toFixed(tmpPrecision).replace(/0+$/, \"\");\r\n  });\r\n\r\n  // high precision float\r\n  var hpf;\r\n  if (typeof floatPrecision === \"number\") {\r\n    hpf = API.hpf = API.__private__.hpf = function(number) {\r\n      if (isNaN(number)) {\r\n        throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n      }\r\n      return roundToPrecision(number, floatPrecision);\r\n    };\r\n  } else if (floatPrecision === \"smart\") {\r\n    hpf = API.hpf = API.__private__.hpf = function(number) {\r\n      if (isNaN(number)) {\r\n        throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n      }\r\n      if (number > -1 && number < 1) {\r\n        return roundToPrecision(number, 16);\r\n      } else {\r\n        return roundToPrecision(number, 5);\r\n      }\r\n    };\r\n  } else {\r\n    hpf = API.hpf = API.__private__.hpf = function(number) {\r\n      if (isNaN(number)) {\r\n        throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n      }\r\n      return roundToPrecision(number, 16);\r\n    };\r\n  }\r\n  var f2 = (API.f2 = API.__private__.f2 = function(number) {\r\n    if (isNaN(number)) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.f2\");\r\n    }\r\n    return roundToPrecision(number, 2);\r\n  });\r\n\r\n  var f3 = (API.__private__.f3 = function(number) {\r\n    if (isNaN(number)) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.f3\");\r\n    }\r\n    return roundToPrecision(number, 3);\r\n  });\r\n\r\n  var scale = (API.scale = API.__private__.scale = function(number) {\r\n    if (isNaN(number)) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.scale\");\r\n    }\r\n    if (apiMode === ApiMode.COMPAT) {\r\n      return number * scaleFactor;\r\n    } else if (apiMode === ApiMode.ADVANCED) {\r\n      return number;\r\n    }\r\n  });\r\n\r\n  var transformY = function(y) {\r\n    if (apiMode === ApiMode.COMPAT) {\r\n      return getPageHeight() - y;\r\n    } else if (apiMode === ApiMode.ADVANCED) {\r\n      return y;\r\n    }\r\n  };\r\n\r\n  var transformScaleY = function(y) {\r\n    return scale(transformY(y));\r\n  };\r\n\r\n  /**\r\n   * @name setPrecision\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @instance\r\n   * @param {string} precision\r\n   * @returns {jsPDF}\r\n   */\r\n  API.__private__.setPrecision = API.setPrecision = function(value) {\r\n    if (typeof parseInt(value, 10) === \"number\") {\r\n      precision = parseInt(value, 10);\r\n    }\r\n  };\r\n\r\n  var fileId = \"00000000000000000000000000000000\";\r\n\r\n  var getFileId = (API.__private__.getFileId = function() {\r\n    return fileId;\r\n  });\r\n\r\n  var setFileId = (API.__private__.setFileId = function(value) {\r\n    if (typeof value !== \"undefined\" && /^[a-fA-F0-9]{32}$/.test(value)) {\r\n      fileId = value.toUpperCase();\r\n    } else {\r\n      fileId = fileId\r\n        .split(\"\")\r\n        .map(function() {\r\n          return \"ABCDEF0123456789\".charAt(Math.floor(Math.random() * 16));\r\n        })\r\n        .join(\"\");\r\n    }\r\n\r\n    if (encryptionOptions !== null) {\r\n      encryption = new PDFSecurity(\r\n        encryptionOptions.userPermissions,\r\n        encryptionOptions.userPassword,\r\n        encryptionOptions.ownerPassword,\r\n        fileId\r\n      );\r\n    }\r\n    return fileId;\r\n  });\r\n\r\n  /**\r\n   * @name setFileId\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @instance\r\n   * @param {string} value GUID.\r\n   * @returns {jsPDF}\r\n   */\r\n  API.setFileId = function(value) {\r\n    setFileId(value);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * @name getFileId\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @instance\r\n   *\r\n   * @returns {string} GUID.\r\n   */\r\n  API.getFileId = function() {\r\n    return getFileId();\r\n  };\r\n\r\n  var creationDate;\r\n\r\n  var convertDateToPDFDate = (API.__private__.convertDateToPDFDate = function(\r\n    parmDate\r\n  ) {\r\n    var result = \"\";\r\n    var tzoffset = parmDate.getTimezoneOffset(),\r\n      tzsign = tzoffset < 0 ? \"+\" : \"-\",\r\n      tzhour = Math.floor(Math.abs(tzoffset / 60)),\r\n      tzmin = Math.abs(tzoffset % 60),\r\n      timeZoneString = [tzsign, padd2(tzhour), \"'\", padd2(tzmin), \"'\"].join(\"\");\r\n\r\n    result = [\r\n      \"D:\",\r\n      parmDate.getFullYear(),\r\n      padd2(parmDate.getMonth() + 1),\r\n      padd2(parmDate.getDate()),\r\n      padd2(parmDate.getHours()),\r\n      padd2(parmDate.getMinutes()),\r\n      padd2(parmDate.getSeconds()),\r\n      timeZoneString\r\n    ].join(\"\");\r\n    return result;\r\n  });\r\n\r\n  var convertPDFDateToDate = (API.__private__.convertPDFDateToDate = function(\r\n    parmPDFDate\r\n  ) {\r\n    var year = parseInt(parmPDFDate.substr(2, 4), 10);\r\n    var month = parseInt(parmPDFDate.substr(6, 2), 10) - 1;\r\n    var date = parseInt(parmPDFDate.substr(8, 2), 10);\r\n    var hour = parseInt(parmPDFDate.substr(10, 2), 10);\r\n    var minutes = parseInt(parmPDFDate.substr(12, 2), 10);\r\n    var seconds = parseInt(parmPDFDate.substr(14, 2), 10);\r\n    // var timeZoneHour = parseInt(parmPDFDate.substr(16, 2), 10);\r\n    // var timeZoneMinutes = parseInt(parmPDFDate.substr(20, 2), 10);\r\n\r\n    var resultingDate = new Date(year, month, date, hour, minutes, seconds, 0);\r\n    return resultingDate;\r\n  });\r\n\r\n  var setCreationDate = (API.__private__.setCreationDate = function(date) {\r\n    var tmpCreationDateString;\r\n    var regexPDFCreationDate = /^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\\+0[0-9]|\\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/;\r\n    if (typeof date === \"undefined\") {\r\n      date = new Date();\r\n    }\r\n\r\n    if (date instanceof Date) {\r\n      tmpCreationDateString = convertDateToPDFDate(date);\r\n    } else if (regexPDFCreationDate.test(date)) {\r\n      tmpCreationDateString = date;\r\n    } else {\r\n      throw new Error(\"Invalid argument passed to jsPDF.setCreationDate\");\r\n    }\r\n    creationDate = tmpCreationDateString;\r\n    return creationDate;\r\n  });\r\n\r\n  var getCreationDate = (API.__private__.getCreationDate = function(type) {\r\n    var result = creationDate;\r\n    if (type === \"jsDate\") {\r\n      result = convertPDFDateToDate(creationDate);\r\n    }\r\n    return result;\r\n  });\r\n\r\n  /**\r\n   * @name setCreationDate\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @instance\r\n   * @param {Object} date\r\n   * @returns {jsPDF}\r\n   */\r\n  API.setCreationDate = function(date) {\r\n    setCreationDate(date);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * @name getCreationDate\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @instance\r\n   * @param {Object} type\r\n   * @returns {Object}\r\n   */\r\n  API.getCreationDate = function(type) {\r\n    return getCreationDate(type);\r\n  };\r\n\r\n  var padd2 = (API.__private__.padd2 = function(number) {\r\n    return (\"0\" + parseInt(number)).slice(-2);\r\n  });\r\n\r\n  var padd2Hex = (API.__private__.padd2Hex = function(hexString) {\r\n    hexString = hexString.toString();\r\n    return (\"00\" + hexString).substr(hexString.length);\r\n  });\r\n\r\n  var objectNumber = 0; // 'n' Current object number\r\n  var offsets = []; // List of offsets. Activated and reset by buildDocument(). Pupulated by various calls buildDocument makes.\r\n  var content = [];\r\n  var contentLength = 0;\r\n  var additionalObjects = [];\r\n\r\n  var pages = [];\r\n  var currentPage;\r\n  var hasCustomDestination = false;\r\n  var outputDestination = content;\r\n\r\n  var resetDocument = function() {\r\n    //reset fields relevant for objectNumber generation and xref.\r\n    objectNumber = 0;\r\n    contentLength = 0;\r\n    content = [];\r\n    offsets = [];\r\n    additionalObjects = [];\r\n\r\n    rootDictionaryObjId = newObjectDeferred();\r\n    resourceDictionaryObjId = newObjectDeferred();\r\n  };\r\n\r\n  API.__private__.setCustomOutputDestination = function(destination) {\r\n    hasCustomDestination = true;\r\n    outputDestination = destination;\r\n  };\r\n  var setOutputDestination = function(destination) {\r\n    if (!hasCustomDestination) {\r\n      outputDestination = destination;\r\n    }\r\n  };\r\n\r\n  API.__private__.resetCustomOutputDestination = function() {\r\n    hasCustomDestination = false;\r\n    outputDestination = content;\r\n  };\r\n\r\n  var out = (API.__private__.out = function(string) {\r\n    string = string.toString();\r\n    contentLength += string.length + 1;\r\n    outputDestination.push(string);\r\n\r\n    return outputDestination;\r\n  });\r\n\r\n  var write = (API.__private__.write = function(value) {\r\n    return out(\r\n      arguments.length === 1\r\n        ? value.toString()\r\n        : Array.prototype.join.call(arguments, \" \")\r\n    );\r\n  });\r\n\r\n  var getArrayBuffer = (API.__private__.getArrayBuffer = function(data) {\r\n    var len = data.length,\r\n      ab = new ArrayBuffer(len),\r\n      u8 = new Uint8Array(ab);\r\n\r\n    while (len--) u8[len] = data.charCodeAt(len);\r\n    return ab;\r\n  });\r\n\r\n  var standardFonts = [\r\n    [\"Helvetica\", \"helvetica\", \"normal\", \"WinAnsiEncoding\"],\r\n    [\"Helvetica-Bold\", \"helvetica\", \"bold\", \"WinAnsiEncoding\"],\r\n    [\"Helvetica-Oblique\", \"helvetica\", \"italic\", \"WinAnsiEncoding\"],\r\n    [\"Helvetica-BoldOblique\", \"helvetica\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n    [\"Courier\", \"courier\", \"normal\", \"WinAnsiEncoding\"],\r\n    [\"Courier-Bold\", \"courier\", \"bold\", \"WinAnsiEncoding\"],\r\n    [\"Courier-Oblique\", \"courier\", \"italic\", \"WinAnsiEncoding\"],\r\n    [\"Courier-BoldOblique\", \"courier\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n    [\"Times-Roman\", \"times\", \"normal\", \"WinAnsiEncoding\"],\r\n    [\"Times-Bold\", \"times\", \"bold\", \"WinAnsiEncoding\"],\r\n    [\"Times-Italic\", \"times\", \"italic\", \"WinAnsiEncoding\"],\r\n    [\"Times-BoldItalic\", \"times\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n    [\"ZapfDingbats\", \"zapfdingbats\", \"normal\", null],\r\n    [\"Symbol\", \"symbol\", \"normal\", null]\r\n  ];\r\n\r\n  API.__private__.getStandardFonts = function() {\r\n    return standardFonts;\r\n  };\r\n\r\n  var activeFontSize = options.fontSize || 16;\r\n\r\n  /**\r\n   * Sets font size for upcoming text elements.\r\n   *\r\n   * @param {number} size Font size in points.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setFontSize\r\n   */\r\n  API.__private__.setFontSize = API.setFontSize = function(size) {\r\n    if (apiMode === ApiMode.ADVANCED) {\r\n      activeFontSize = size / scaleFactor;\r\n    } else {\r\n      activeFontSize = size;\r\n    }\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Gets the fontsize for upcoming text elements.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {number}\r\n   * @memberof jsPDF#\r\n   * @name getFontSize\r\n   */\r\n  var getFontSize = (API.__private__.getFontSize = API.getFontSize = function() {\r\n    if (apiMode === ApiMode.COMPAT) {\r\n      return activeFontSize;\r\n    } else {\r\n      return activeFontSize * scaleFactor;\r\n    }\r\n  });\r\n\r\n  var R2L = options.R2L || false;\r\n\r\n  /**\r\n   * Set value of R2L functionality.\r\n   *\r\n   * @param {boolean} value\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF} jsPDF-instance\r\n   * @memberof jsPDF#\r\n   * @name setR2L\r\n   */\r\n  API.__private__.setR2L = API.setR2L = function(value) {\r\n    R2L = value;\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Get value of R2L functionality.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {boolean} jsPDF-instance\r\n   * @memberof jsPDF#\r\n   * @name getR2L\r\n   */\r\n  API.__private__.getR2L = API.getR2L = function() {\r\n    return R2L;\r\n  };\r\n\r\n  var zoomMode; // default: 1;\r\n\r\n  var setZoomMode = (API.__private__.setZoomMode = function(zoom) {\r\n    var validZoomModes = [\r\n      undefined,\r\n      null,\r\n      \"fullwidth\",\r\n      \"fullheight\",\r\n      \"fullpage\",\r\n      \"original\"\r\n    ];\r\n\r\n    if (/^(?:\\d+\\.\\d*|\\d*\\.\\d+|\\d+)%$/.test(zoom)) {\r\n      zoomMode = zoom;\r\n    } else if (!isNaN(zoom)) {\r\n      zoomMode = parseInt(zoom, 10);\r\n    } else if (validZoomModes.indexOf(zoom) !== -1) {\r\n      zoomMode = zoom;\r\n    } else {\r\n      throw new Error(\r\n        'zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"' +\r\n          zoom +\r\n          '\" is not recognized.'\r\n      );\r\n    }\r\n  });\r\n\r\n  API.__private__.getZoomMode = function() {\r\n    return zoomMode;\r\n  };\r\n\r\n  var pageMode; // default: 'UseOutlines';\r\n  var setPageMode = (API.__private__.setPageMode = function(pmode) {\r\n    var validPageModes = [\r\n      undefined,\r\n      null,\r\n      \"UseNone\",\r\n      \"UseOutlines\",\r\n      \"UseThumbs\",\r\n      \"FullScreen\"\r\n    ];\r\n\r\n    if (validPageModes.indexOf(pmode) == -1) {\r\n      throw new Error(\r\n        'Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"' +\r\n          pmode +\r\n          '\" is not recognized.'\r\n      );\r\n    }\r\n    pageMode = pmode;\r\n  });\r\n\r\n  API.__private__.getPageMode = function() {\r\n    return pageMode;\r\n  };\r\n\r\n  var layoutMode; // default: 'continuous';\r\n  var setLayoutMode = (API.__private__.setLayoutMode = function(layout) {\r\n    var validLayoutModes = [\r\n      undefined,\r\n      null,\r\n      \"continuous\",\r\n      \"single\",\r\n      \"twoleft\",\r\n      \"tworight\",\r\n      \"two\"\r\n    ];\r\n\r\n    if (validLayoutModes.indexOf(layout) == -1) {\r\n      throw new Error(\r\n        'Layout mode must be one of continuous, single, twoleft, tworight. \"' +\r\n          layout +\r\n          '\" is not recognized.'\r\n      );\r\n    }\r\n    layoutMode = layout;\r\n  });\r\n\r\n  API.__private__.getLayoutMode = function() {\r\n    return layoutMode;\r\n  };\r\n\r\n  /**\r\n   * Set the display mode options of the page like zoom and layout.\r\n   *\r\n   * @name setDisplayMode\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @instance\r\n   * @param {integer|String} zoom   You can pass an integer or percentage as\r\n   * a string. 2 will scale the document up 2x, '200%' will scale up by the\r\n   * same amount. You can also set it to 'fullwidth', 'fullheight',\r\n   * 'fullpage', or 'original'.\r\n   *\r\n   * Only certain PDF readers support this, such as Adobe Acrobat.\r\n   *\r\n   * @param {string} layout Layout mode can be: 'continuous' - this is the\r\n   * default continuous scroll. 'single' - the single page mode only shows one\r\n   * page at a time. 'twoleft' - two column left mode, first page starts on\r\n   * the left, and 'tworight' - pages are laid out in two columns, with the\r\n   * first page on the right. This would be used for books.\r\n   * @param {string} pmode 'UseOutlines' - it shows the\r\n   * outline of the document on the left. 'UseThumbs' - shows thumbnails along\r\n   * the left. 'FullScreen' - prompts the user to enter fullscreen mode.\r\n   *\r\n   * @returns {jsPDF}\r\n   */\r\n  API.__private__.setDisplayMode = API.setDisplayMode = function(\r\n    zoom,\r\n    layout,\r\n    pmode\r\n  ) {\r\n    setZoomMode(zoom);\r\n    setLayoutMode(layout);\r\n    setPageMode(pmode);\r\n    return this;\r\n  };\r\n\r\n  var documentProperties = {\r\n    title: \"\",\r\n    subject: \"\",\r\n    author: \"\",\r\n    keywords: \"\",\r\n    creator: \"\"\r\n  };\r\n\r\n  API.__private__.getDocumentProperty = function(key) {\r\n    if (Object.keys(documentProperties).indexOf(key) === -1) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.getDocumentProperty\");\r\n    }\r\n    return documentProperties[key];\r\n  };\r\n\r\n  API.__private__.getDocumentProperties = function() {\r\n    return documentProperties;\r\n  };\r\n\r\n  /**\r\n   * Adds a properties to the PDF document.\r\n   *\r\n   * @param {Object} A property_name-to-property_value object structure.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setDocumentProperties\r\n   */\r\n  API.__private__.setDocumentProperties = API.setProperties = API.setDocumentProperties = function(\r\n    properties\r\n  ) {\r\n    // copying only those properties we can render.\r\n    for (var property in documentProperties) {\r\n      if (documentProperties.hasOwnProperty(property) && properties[property]) {\r\n        documentProperties[property] = properties[property];\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  API.__private__.setDocumentProperty = function(key, value) {\r\n    if (Object.keys(documentProperties).indexOf(key) === -1) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.setDocumentProperty\");\r\n    }\r\n    return (documentProperties[key] = value);\r\n  };\r\n\r\n  var fonts = {}; // collection of font objects, where key is fontKey - a dynamically created label for a given font.\r\n  var fontmap = {}; // mapping structure fontName > fontStyle > font key - performance layer. See addFont()\r\n  var activeFontKey; // will be string representing the KEY of the font as combination of fontName + fontStyle\r\n  var fontStateStack = []; //\r\n  var patterns = {}; // collection of pattern objects\r\n  var patternMap = {}; // see fonts\r\n  var gStates = {}; // collection of graphic state objects\r\n  var gStatesMap = {}; // see fonts\r\n  var activeGState = null;\r\n  var scaleFactor; // Scale factor\r\n  var page = 0;\r\n  var pagesContext = [];\r\n  var events = new PubSub(API);\r\n  var hotfixes = options.hotfixes || [];\r\n\r\n  var renderTargets = {};\r\n  var renderTargetMap = {};\r\n  var renderTargetStack = [];\r\n  var pageX;\r\n  var pageY;\r\n  var pageMatrix; // only used for FormObjects\r\n\r\n  /**\r\n   * A matrix object for 2D homogenous transformations: <br>\r\n   * | a b 0 | <br>\r\n   * | c d 0 | <br>\r\n   * | e f 1 | <br>\r\n   * pdf multiplies matrices righthand: v' = v x m1 x m2 x ...\r\n   *\r\n   * @class\r\n   * @name Matrix\r\n   * @param {number} sx\r\n   * @param {number} shy\r\n   * @param {number} shx\r\n   * @param {number} sy\r\n   * @param {number} tx\r\n   * @param {number} ty\r\n   * @constructor\r\n   */\r\n  var Matrix = function(sx, shy, shx, sy, tx, ty) {\r\n    if (!(this instanceof Matrix)) {\r\n      return new Matrix(sx, shy, shx, sy, tx, ty);\r\n    }\r\n\r\n    if (isNaN(sx)) sx = 1;\r\n    if (isNaN(shy)) shy = 0;\r\n    if (isNaN(shx)) shx = 0;\r\n    if (isNaN(sy)) sy = 1;\r\n    if (isNaN(tx)) tx = 0;\r\n    if (isNaN(ty)) ty = 0;\r\n\r\n    this._matrix = [sx, shy, shx, sy, tx, ty];\r\n  };\r\n\r\n  /**\r\n   * @name sx\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"sx\", {\r\n    get: function() {\r\n      return this._matrix[0];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[0] = value;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name shy\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"shy\", {\r\n    get: function() {\r\n      return this._matrix[1];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[1] = value;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name shx\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"shx\", {\r\n    get: function() {\r\n      return this._matrix[2];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[2] = value;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name sy\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"sy\", {\r\n    get: function() {\r\n      return this._matrix[3];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[3] = value;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name tx\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"tx\", {\r\n    get: function() {\r\n      return this._matrix[4];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[4] = value;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name ty\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"ty\", {\r\n    get: function() {\r\n      return this._matrix[5];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[5] = value;\r\n    }\r\n  });\r\n\r\n  Object.defineProperty(Matrix.prototype, \"a\", {\r\n    get: function() {\r\n      return this._matrix[0];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[0] = value;\r\n    }\r\n  });\r\n\r\n  Object.defineProperty(Matrix.prototype, \"b\", {\r\n    get: function() {\r\n      return this._matrix[1];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[1] = value;\r\n    }\r\n  });\r\n\r\n  Object.defineProperty(Matrix.prototype, \"c\", {\r\n    get: function() {\r\n      return this._matrix[2];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[2] = value;\r\n    }\r\n  });\r\n\r\n  Object.defineProperty(Matrix.prototype, \"d\", {\r\n    get: function() {\r\n      return this._matrix[3];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[3] = value;\r\n    }\r\n  });\r\n\r\n  Object.defineProperty(Matrix.prototype, \"e\", {\r\n    get: function() {\r\n      return this._matrix[4];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[4] = value;\r\n    }\r\n  });\r\n\r\n  Object.defineProperty(Matrix.prototype, \"f\", {\r\n    get: function() {\r\n      return this._matrix[5];\r\n    },\r\n    set: function(value) {\r\n      this._matrix[5] = value;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name rotation\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"rotation\", {\r\n    get: function() {\r\n      return Math.atan2(this.shx, this.sx);\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name scaleX\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"scaleX\", {\r\n    get: function() {\r\n      return this.decompose().scale.sx;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name scaleY\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"scaleY\", {\r\n    get: function() {\r\n      return this.decompose().scale.sy;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * @name isIdentity\r\n   * @memberof Matrix#\r\n   */\r\n  Object.defineProperty(Matrix.prototype, \"isIdentity\", {\r\n    get: function() {\r\n      if (this.sx !== 1) {\r\n        return false;\r\n      }\r\n      if (this.shy !== 0) {\r\n        return false;\r\n      }\r\n      if (this.shx !== 0) {\r\n        return false;\r\n      }\r\n      if (this.sy !== 1) {\r\n        return false;\r\n      }\r\n      if (this.tx !== 0) {\r\n        return false;\r\n      }\r\n      if (this.ty !== 0) {\r\n        return false;\r\n      }\r\n      return true;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * Join the Matrix Values to a String\r\n   *\r\n   * @function join\r\n   * @param {string} separator Specifies a string to separate each pair of adjacent elements of the array. The separator is converted to a string if necessary. If omitted, the array elements are separated with a comma (\",\"). If separator is an empty string, all elements are joined without any characters in between them.\r\n   * @returns {string} A string with all array elements joined.\r\n   * @memberof Matrix#\r\n   */\r\n  Matrix.prototype.join = function(separator) {\r\n    return [this.sx, this.shy, this.shx, this.sy, this.tx, this.ty]\r\n      .map(hpf)\r\n      .join(separator);\r\n  };\r\n\r\n  /**\r\n   * Multiply the matrix with given Matrix\r\n   *\r\n   * @function multiply\r\n   * @param matrix\r\n   * @returns {Matrix}\r\n   * @memberof Matrix#\r\n   */\r\n  Matrix.prototype.multiply = function(matrix) {\r\n    var sx = matrix.sx * this.sx + matrix.shy * this.shx;\r\n    var shy = matrix.sx * this.shy + matrix.shy * this.sy;\r\n    var shx = matrix.shx * this.sx + matrix.sy * this.shx;\r\n    var sy = matrix.shx * this.shy + matrix.sy * this.sy;\r\n    var tx = matrix.tx * this.sx + matrix.ty * this.shx + this.tx;\r\n    var ty = matrix.tx * this.shy + matrix.ty * this.sy + this.ty;\r\n\r\n    return new Matrix(sx, shy, shx, sy, tx, ty);\r\n  };\r\n\r\n  /**\r\n   * @function decompose\r\n   * @memberof Matrix#\r\n   */\r\n  Matrix.prototype.decompose = function() {\r\n    var a = this.sx;\r\n    var b = this.shy;\r\n    var c = this.shx;\r\n    var d = this.sy;\r\n    var e = this.tx;\r\n    var f = this.ty;\r\n\r\n    var scaleX = Math.sqrt(a * a + b * b);\r\n    a /= scaleX;\r\n    b /= scaleX;\r\n\r\n    var shear = a * c + b * d;\r\n    c -= a * shear;\r\n    d -= b * shear;\r\n\r\n    var scaleY = Math.sqrt(c * c + d * d);\r\n    c /= scaleY;\r\n    d /= scaleY;\r\n    shear /= scaleY;\r\n\r\n    if (a * d < b * c) {\r\n      a = -a;\r\n      b = -b;\r\n      shear = -shear;\r\n      scaleX = -scaleX;\r\n    }\r\n\r\n    return {\r\n      scale: new Matrix(scaleX, 0, 0, scaleY, 0, 0),\r\n      translate: new Matrix(1, 0, 0, 1, e, f),\r\n      rotate: new Matrix(a, b, -b, a, 0, 0),\r\n      skew: new Matrix(1, 0, shear, 1, 0, 0)\r\n    };\r\n  };\r\n\r\n  /**\r\n   * @function toString\r\n   * @memberof Matrix#\r\n   */\r\n  Matrix.prototype.toString = function(parmPrecision) {\r\n    return this.join(\" \");\r\n  };\r\n\r\n  /**\r\n   * @function inversed\r\n   * @memberof Matrix#\r\n   */\r\n  Matrix.prototype.inversed = function() {\r\n    var a = this.sx,\r\n      b = this.shy,\r\n      c = this.shx,\r\n      d = this.sy,\r\n      e = this.tx,\r\n      f = this.ty;\r\n\r\n    var quot = 1 / (a * d - b * c);\r\n\r\n    var aInv = d * quot;\r\n    var bInv = -b * quot;\r\n    var cInv = -c * quot;\r\n    var dInv = a * quot;\r\n    var eInv = -aInv * e - cInv * f;\r\n    var fInv = -bInv * e - dInv * f;\r\n\r\n    return new Matrix(aInv, bInv, cInv, dInv, eInv, fInv);\r\n  };\r\n\r\n  /**\r\n   * @function applyToPoint\r\n   * @memberof Matrix#\r\n   */\r\n  Matrix.prototype.applyToPoint = function(pt) {\r\n    var x = pt.x * this.sx + pt.y * this.shx + this.tx;\r\n    var y = pt.x * this.shy + pt.y * this.sy + this.ty;\r\n    return new Point(x, y);\r\n  };\r\n\r\n  /**\r\n   * @function applyToRectangle\r\n   * @memberof Matrix#\r\n   */\r\n  Matrix.prototype.applyToRectangle = function(rect) {\r\n    var pt1 = this.applyToPoint(rect);\r\n    var pt2 = this.applyToPoint(new Point(rect.x + rect.w, rect.y + rect.h));\r\n    return new Rectangle(pt1.x, pt1.y, pt2.x - pt1.x, pt2.y - pt1.y);\r\n  };\r\n\r\n  /**\r\n   * Clone the Matrix\r\n   *\r\n   * @function clone\r\n   * @memberof Matrix#\r\n   * @name clone\r\n   * @instance\r\n   */\r\n  Matrix.prototype.clone = function() {\r\n    var sx = this.sx;\r\n    var shy = this.shy;\r\n    var shx = this.shx;\r\n    var sy = this.sy;\r\n    var tx = this.tx;\r\n    var ty = this.ty;\r\n\r\n    return new Matrix(sx, shy, shx, sy, tx, ty);\r\n  };\r\n\r\n  API.Matrix = Matrix;\r\n\r\n  /**\r\n   * Multiplies two matrices. (see {@link Matrix})\r\n   * @param {Matrix} m1\r\n   * @param {Matrix} m2\r\n   * @memberof jsPDF#\r\n   * @name matrixMult\r\n   */\r\n  var matrixMult = (API.matrixMult = function(m1, m2) {\r\n    return m2.multiply(m1);\r\n  });\r\n\r\n  /**\r\n   * The identity matrix (equivalent to new Matrix(1, 0, 0, 1, 0, 0)).\r\n   * @type {Matrix}\r\n   * @memberof! jsPDF#\r\n   * @name identityMatrix\r\n   */\r\n  var identityMatrix = new Matrix(1, 0, 0, 1, 0, 0);\r\n  API.unitMatrix = API.identityMatrix = identityMatrix;\r\n\r\n  /**\r\n   * Adds a new pattern for later use.\r\n   * @param {String} key The key by it can be referenced later. The keys must be unique!\r\n   * @param {API.Pattern} pattern The pattern\r\n   */\r\n  var addPattern = function(key, pattern) {\r\n    // only add it if it is not already present (the keys provided by the user must be unique!)\r\n    if (patternMap[key]) return;\r\n\r\n    var prefix = pattern instanceof ShadingPattern ? \"Sh\" : \"P\";\r\n    var patternKey = prefix + (Object.keys(patterns).length + 1).toString(10);\r\n    pattern.id = patternKey;\r\n\r\n    patternMap[key] = patternKey;\r\n    patterns[patternKey] = pattern;\r\n\r\n    events.publish(\"addPattern\", pattern);\r\n  };\r\n\r\n  /**\r\n   * A pattern describing a shading pattern.\r\n   *\r\n   * Only available in \"advanced\" API mode.\r\n   *\r\n   * @param {String} type One of \"axial\" or \"radial\"\r\n   * @param {Array<Number>} coords Either [x1, y1, x2, y2] for \"axial\" type describing the two interpolation points\r\n   * or [x1, y1, r, x2, y2, r2] for \"radial\" describing inner and the outer circle.\r\n   * @param {Array<Object>} colors An array of objects with the fields \"offset\" and \"color\". \"offset\" describes\r\n   * the offset in parameter space [0, 1]. \"color\" is an array of length 3 describing RGB values in [0, 255].\r\n   * @param {GState=} gState An additional graphics state that gets applied to the pattern (optional).\r\n   * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\r\n   * and the use coordinate system (optional).\r\n   * @constructor\r\n   * @extends API.Pattern\r\n   */\r\n  API.ShadingPattern = ShadingPattern;\r\n\r\n  /**\r\n   * A PDF Tiling pattern.\r\n   *\r\n   * Only available in \"advanced\" API mode.\r\n   *\r\n   * @param {Array.<Number>} boundingBox The bounding box at which one pattern cell gets clipped.\r\n   * @param {Number} xStep Horizontal spacing between pattern cells.\r\n   * @param {Number} yStep Vertical spacing between pattern cells.\r\n   * @param {API.GState=} gState An additional graphics state that gets applied to the pattern (optional).\r\n   * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\r\n   * and the use coordinate system (optional).\r\n   * @constructor\r\n   * @extends API.Pattern\r\n   */\r\n  API.TilingPattern = TilingPattern;\r\n\r\n  /**\r\n   * Adds a new {@link API.ShadingPattern} for later use. Only available in \"advanced\" API mode.\r\n   * @param {String} key\r\n   * @param {Pattern} pattern\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name addPattern\r\n   */\r\n  API.addShadingPattern = function(key, pattern) {\r\n    advancedApiModeTrap(\"addShadingPattern()\");\r\n\r\n    addPattern(key, pattern);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Begins a new tiling pattern. All subsequent render calls are drawn to this pattern until {@link API.endTilingPattern}\r\n   * gets called. Only available in \"advanced\" API mode.\r\n   * @param {API.Pattern} pattern\r\n   * @memberof jsPDF#\r\n   * @name beginTilingPattern\r\n   */\r\n  API.beginTilingPattern = function(pattern) {\r\n    advancedApiModeTrap(\"beginTilingPattern()\");\r\n\r\n    beginNewRenderTarget(\r\n      pattern.boundingBox[0],\r\n      pattern.boundingBox[1],\r\n      pattern.boundingBox[2] - pattern.boundingBox[0],\r\n      pattern.boundingBox[3] - pattern.boundingBox[1],\r\n      pattern.matrix\r\n    );\r\n  };\r\n\r\n  /**\r\n   * Ends a tiling pattern and sets the render target to the one active before {@link API.beginTilingPattern} has been called.\r\n   *\r\n   * Only available in \"advanced\" API mode.\r\n   *\r\n   * @param {string} key A unique key that is used to reference this pattern at later use.\r\n   * @param {API.Pattern} pattern The pattern to end.\r\n   * @memberof jsPDF#\r\n   * @name endTilingPattern\r\n   */\r\n  API.endTilingPattern = function(key, pattern) {\r\n    advancedApiModeTrap(\"endTilingPattern()\");\r\n\r\n    // retrieve the stream\r\n    pattern.stream = pages[currentPage].join(\"\\n\");\r\n\r\n    addPattern(key, pattern);\r\n\r\n    events.publish(\"endTilingPattern\", pattern);\r\n\r\n    // restore state from stack\r\n    renderTargetStack.pop().restore();\r\n  };\r\n\r\n  var newObject = (API.__private__.newObject = function() {\r\n    var oid = newObjectDeferred();\r\n    newObjectDeferredBegin(oid, true);\r\n    return oid;\r\n  });\r\n\r\n  // Does not output the object.  The caller must call newObjectDeferredBegin(oid) before outputing any data\r\n  var newObjectDeferred = (API.__private__.newObjectDeferred = function() {\r\n    objectNumber++;\r\n    offsets[objectNumber] = function() {\r\n      return contentLength;\r\n    };\r\n    return objectNumber;\r\n  });\r\n\r\n  var newObjectDeferredBegin = function(oid, doOutput) {\r\n    doOutput = typeof doOutput === \"boolean\" ? doOutput : false;\r\n    offsets[oid] = contentLength;\r\n    if (doOutput) {\r\n      out(oid + \" 0 obj\");\r\n    }\r\n    return oid;\r\n  };\r\n  // Does not output the object until after the pages have been output.\r\n  // Returns an object containing the objectId and content.\r\n  // All pages have been added so the object ID can be estimated to start right after.\r\n  // This does not modify the current objectNumber;  It must be updated after the newObjects are output.\r\n  var newAdditionalObject = (API.__private__.newAdditionalObject = function() {\r\n    var objId = newObjectDeferred();\r\n    var obj = {\r\n      objId: objId,\r\n      content: \"\"\r\n    };\r\n    additionalObjects.push(obj);\r\n    return obj;\r\n  });\r\n\r\n  var rootDictionaryObjId = newObjectDeferred();\r\n  var resourceDictionaryObjId = newObjectDeferred();\r\n\r\n  /////////////////////\r\n  // Private functions\r\n  /////////////////////\r\n\r\n  var decodeColorString = (API.__private__.decodeColorString = function(color) {\r\n    var colorEncoded = color.split(\" \");\r\n    if (\r\n      colorEncoded.length === 2 &&\r\n      (colorEncoded[1] === \"g\" || colorEncoded[1] === \"G\")\r\n    ) {\r\n      // convert grayscale value to rgb so that it can be converted to hex for consistency\r\n      var floatVal = parseFloat(colorEncoded[0]);\r\n      colorEncoded = [floatVal, floatVal, floatVal, \"r\"];\r\n    } else if (\r\n      colorEncoded.length === 5 &&\r\n      (colorEncoded[4] === \"k\" || colorEncoded[4] === \"K\")\r\n    ) {\r\n      // convert CMYK values to rbg so that it can be converted to hex for consistency\r\n      var red = (1.0 - colorEncoded[0]) * (1.0 - colorEncoded[3]);\r\n      var green = (1.0 - colorEncoded[1]) * (1.0 - colorEncoded[3]);\r\n      var blue = (1.0 - colorEncoded[2]) * (1.0 - colorEncoded[3]);\r\n\r\n      colorEncoded = [red, green, blue, \"r\"];\r\n    }\r\n    var colorAsRGB = \"#\";\r\n    for (var i = 0; i < 3; i++) {\r\n      colorAsRGB += (\r\n        \"0\" + Math.floor(parseFloat(colorEncoded[i]) * 255).toString(16)\r\n      ).slice(-2);\r\n    }\r\n    return colorAsRGB;\r\n  });\r\n\r\n  var encodeColorString = (API.__private__.encodeColorString = function(\r\n    options\r\n  ) {\r\n    var color;\r\n\r\n    if (typeof options === \"string\") {\r\n      options = {\r\n        ch1: options\r\n      };\r\n    }\r\n    var ch1 = options.ch1;\r\n    var ch2 = options.ch2;\r\n    var ch3 = options.ch3;\r\n    var ch4 = options.ch4;\r\n    var letterArray =\r\n      options.pdfColorType === \"draw\" ? [\"G\", \"RG\", \"K\"] : [\"g\", \"rg\", \"k\"];\r\n\r\n    if (typeof ch1 === \"string\" && ch1.charAt(0) !== \"#\") {\r\n      var rgbColor = new RGBColor(ch1);\r\n      if (rgbColor.ok) {\r\n        ch1 = rgbColor.toHex();\r\n      } else if (!/^\\d*\\.?\\d*$/.test(ch1)) {\r\n        throw new Error(\r\n          'Invalid color \"' + ch1 + '\" passed to jsPDF.encodeColorString.'\r\n        );\r\n      }\r\n    }\r\n    //convert short rgb to long form\r\n    if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{3}$/.test(ch1)) {\r\n      ch1 = \"#\" + ch1[1] + ch1[1] + ch1[2] + ch1[2] + ch1[3] + ch1[3];\r\n    }\r\n\r\n    if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(ch1)) {\r\n      var hex = parseInt(ch1.substr(1), 16);\r\n      ch1 = (hex >> 16) & 255;\r\n      ch2 = (hex >> 8) & 255;\r\n      ch3 = hex & 255;\r\n    }\r\n\r\n    if (\r\n      typeof ch2 === \"undefined\" ||\r\n      (typeof ch4 === \"undefined\" && ch1 === ch2 && ch2 === ch3)\r\n    ) {\r\n      // Gray color space.\r\n      if (typeof ch1 === \"string\") {\r\n        color = ch1 + \" \" + letterArray[0];\r\n      } else {\r\n        switch (options.precision) {\r\n          case 2:\r\n            color = f2(ch1 / 255) + \" \" + letterArray[0];\r\n            break;\r\n          case 3:\r\n          default:\r\n            color = f3(ch1 / 255) + \" \" + letterArray[0];\r\n        }\r\n      }\r\n    } else if (typeof ch4 === \"undefined\" || typeof ch4 === \"object\") {\r\n      // assume RGBA\r\n      if (ch4 && !isNaN(ch4.a)) {\r\n        //TODO Implement transparency.\r\n        //WORKAROUND use white for now, if transparent, otherwise handle as rgb\r\n        if (ch4.a === 0) {\r\n          color = [\"1.\", \"1.\", \"1.\", letterArray[1]].join(\" \");\r\n          return color;\r\n        }\r\n      }\r\n      // assume RGB\r\n      if (typeof ch1 === \"string\") {\r\n        color = [ch1, ch2, ch3, letterArray[1]].join(\" \");\r\n      } else {\r\n        switch (options.precision) {\r\n          case 2:\r\n            color = [\r\n              f2(ch1 / 255),\r\n              f2(ch2 / 255),\r\n              f2(ch3 / 255),\r\n              letterArray[1]\r\n            ].join(\" \");\r\n            break;\r\n          default:\r\n          case 3:\r\n            color = [\r\n              f3(ch1 / 255),\r\n              f3(ch2 / 255),\r\n              f3(ch3 / 255),\r\n              letterArray[1]\r\n            ].join(\" \");\r\n        }\r\n      }\r\n    } else {\r\n      // assume CMYK\r\n      if (typeof ch1 === \"string\") {\r\n        color = [ch1, ch2, ch3, ch4, letterArray[2]].join(\" \");\r\n      } else {\r\n        switch (options.precision) {\r\n          case 2:\r\n            color = [f2(ch1), f2(ch2), f2(ch3), f2(ch4), letterArray[2]].join(\r\n              \" \"\r\n            );\r\n            break;\r\n          case 3:\r\n          default:\r\n            color = [f3(ch1), f3(ch2), f3(ch3), f3(ch4), letterArray[2]].join(\r\n              \" \"\r\n            );\r\n        }\r\n      }\r\n    }\r\n    return color;\r\n  });\r\n\r\n  var getFilters = (API.__private__.getFilters = function() {\r\n    return filters;\r\n  });\r\n\r\n  var putStream = (API.__private__.putStream = function(options) {\r\n    options = options || {};\r\n    var data = options.data || \"\";\r\n    var filters = options.filters || getFilters();\r\n    var alreadyAppliedFilters = options.alreadyAppliedFilters || [];\r\n    var addLength1 = options.addLength1 || false;\r\n    var valueOfLength1 = data.length;\r\n    var objectId = options.objectId;\r\n    var encryptor = function(data) {\r\n      return data;\r\n    };\r\n    if (encryptionOptions !== null && typeof objectId == \"undefined\") {\r\n      throw new Error(\r\n        \"ObjectId must be passed to putStream for file encryption\"\r\n      );\r\n    }\r\n    if (encryptionOptions !== null) {\r\n      encryptor = encryption.encryptor(objectId, 0);\r\n    }\r\n\r\n    var processedData = {};\r\n    if (filters === true) {\r\n      filters = [\"FlateEncode\"];\r\n    }\r\n    var keyValues = options.additionalKeyValues || [];\r\n    if (typeof jsPDF.API.processDataByFilters !== \"undefined\") {\r\n      processedData = jsPDF.API.processDataByFilters(data, filters);\r\n    } else {\r\n      processedData = { data: data, reverseChain: [] };\r\n    }\r\n    var filterAsString =\r\n      processedData.reverseChain +\r\n      (Array.isArray(alreadyAppliedFilters)\r\n        ? alreadyAppliedFilters.join(\" \")\r\n        : alreadyAppliedFilters.toString());\r\n\r\n    if (processedData.data.length !== 0) {\r\n      keyValues.push({\r\n        key: \"Length\",\r\n        value: processedData.data.length\r\n      });\r\n      if (addLength1 === true) {\r\n        keyValues.push({\r\n          key: \"Length1\",\r\n          value: valueOfLength1\r\n        });\r\n      }\r\n    }\r\n\r\n    if (filterAsString.length != 0) {\r\n      if (filterAsString.split(\"/\").length - 1 === 1) {\r\n        keyValues.push({\r\n          key: \"Filter\",\r\n          value: filterAsString\r\n        });\r\n      } else {\r\n        keyValues.push({\r\n          key: \"Filter\",\r\n          value: \"[\" + filterAsString + \"]\"\r\n        });\r\n\r\n        for (var j = 0; j < keyValues.length; j += 1) {\r\n          if (keyValues[j].key === \"DecodeParms\") {\r\n            var decodeParmsArray = [];\r\n\r\n            for (\r\n              var i = 0;\r\n              i < processedData.reverseChain.split(\"/\").length - 1;\r\n              i += 1\r\n            ) {\r\n              decodeParmsArray.push(\"null\");\r\n            }\r\n\r\n            decodeParmsArray.push(keyValues[j].value);\r\n            keyValues[j].value = \"[\" + decodeParmsArray.join(\" \") + \"]\";\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    out(\"<<\");\r\n    for (var k = 0; k < keyValues.length; k++) {\r\n      out(\"/\" + keyValues[k].key + \" \" + keyValues[k].value);\r\n    }\r\n    out(\">>\");\r\n    if (processedData.data.length !== 0) {\r\n      out(\"stream\");\r\n      out(encryptor(processedData.data));\r\n      out(\"endstream\");\r\n    }\r\n  });\r\n\r\n  var putPage = (API.__private__.putPage = function(page) {\r\n    var pageNumber = page.number;\r\n    var data = page.data;\r\n    var pageObjectNumber = page.objId;\r\n    var pageContentsObjId = page.contentsObjId;\r\n\r\n    newObjectDeferredBegin(pageObjectNumber, true);\r\n    out(\"<</Type /Page\");\r\n    out(\"/Parent \" + page.rootDictionaryObjId + \" 0 R\");\r\n    out(\"/Resources \" + page.resourceDictionaryObjId + \" 0 R\");\r\n    out(\r\n      \"/MediaBox [\" +\r\n        parseFloat(hpf(page.mediaBox.bottomLeftX)) +\r\n        \" \" +\r\n        parseFloat(hpf(page.mediaBox.bottomLeftY)) +\r\n        \" \" +\r\n        hpf(page.mediaBox.topRightX) +\r\n        \" \" +\r\n        hpf(page.mediaBox.topRightY) +\r\n        \"]\"\r\n    );\r\n    if (page.cropBox !== null) {\r\n      out(\r\n        \"/CropBox [\" +\r\n          hpf(page.cropBox.bottomLeftX) +\r\n          \" \" +\r\n          hpf(page.cropBox.bottomLeftY) +\r\n          \" \" +\r\n          hpf(page.cropBox.topRightX) +\r\n          \" \" +\r\n          hpf(page.cropBox.topRightY) +\r\n          \"]\"\r\n      );\r\n    }\r\n\r\n    if (page.bleedBox !== null) {\r\n      out(\r\n        \"/BleedBox [\" +\r\n          hpf(page.bleedBox.bottomLeftX) +\r\n          \" \" +\r\n          hpf(page.bleedBox.bottomLeftY) +\r\n          \" \" +\r\n          hpf(page.bleedBox.topRightX) +\r\n          \" \" +\r\n          hpf(page.bleedBox.topRightY) +\r\n          \"]\"\r\n      );\r\n    }\r\n\r\n    if (page.trimBox !== null) {\r\n      out(\r\n        \"/TrimBox [\" +\r\n          hpf(page.trimBox.bottomLeftX) +\r\n          \" \" +\r\n          hpf(page.trimBox.bottomLeftY) +\r\n          \" \" +\r\n          hpf(page.trimBox.topRightX) +\r\n          \" \" +\r\n          hpf(page.trimBox.topRightY) +\r\n          \"]\"\r\n      );\r\n    }\r\n\r\n    if (page.artBox !== null) {\r\n      out(\r\n        \"/ArtBox [\" +\r\n          hpf(page.artBox.bottomLeftX) +\r\n          \" \" +\r\n          hpf(page.artBox.bottomLeftY) +\r\n          \" \" +\r\n          hpf(page.artBox.topRightX) +\r\n          \" \" +\r\n          hpf(page.artBox.topRightY) +\r\n          \"]\"\r\n      );\r\n    }\r\n\r\n    if (typeof page.userUnit === \"number\" && page.userUnit !== 1.0) {\r\n      out(\"/UserUnit \" + page.userUnit);\r\n    }\r\n\r\n    events.publish(\"putPage\", {\r\n      objId: pageObjectNumber,\r\n      pageContext: pagesContext[pageNumber],\r\n      pageNumber: pageNumber,\r\n      page: data\r\n    });\r\n    out(\"/Contents \" + pageContentsObjId + \" 0 R\");\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n    // Page content\r\n    var pageContent = data.join(\"\\n\");\r\n\r\n    if (apiMode === ApiMode.ADVANCED) {\r\n      // if the user forgot to switch back to COMPAT mode, we must balance the graphics stack again\r\n      pageContent += \"\\nQ\";\r\n    }\r\n\r\n    newObjectDeferredBegin(pageContentsObjId, true);\r\n    putStream({\r\n      data: pageContent,\r\n      filters: getFilters(),\r\n      objectId: pageContentsObjId\r\n    });\r\n    out(\"endobj\");\r\n    return pageObjectNumber;\r\n  });\r\n\r\n  var putPages = (API.__private__.putPages = function() {\r\n    var n,\r\n      i,\r\n      pageObjectNumbers = [];\r\n\r\n    for (n = 1; n <= page; n++) {\r\n      pagesContext[n].objId = newObjectDeferred();\r\n      pagesContext[n].contentsObjId = newObjectDeferred();\r\n    }\r\n\r\n    for (n = 1; n <= page; n++) {\r\n      pageObjectNumbers.push(\r\n        putPage({\r\n          number: n,\r\n          data: pages[n],\r\n          objId: pagesContext[n].objId,\r\n          contentsObjId: pagesContext[n].contentsObjId,\r\n          mediaBox: pagesContext[n].mediaBox,\r\n          cropBox: pagesContext[n].cropBox,\r\n          bleedBox: pagesContext[n].bleedBox,\r\n          trimBox: pagesContext[n].trimBox,\r\n          artBox: pagesContext[n].artBox,\r\n          userUnit: pagesContext[n].userUnit,\r\n          rootDictionaryObjId: rootDictionaryObjId,\r\n          resourceDictionaryObjId: resourceDictionaryObjId\r\n        })\r\n      );\r\n    }\r\n    newObjectDeferredBegin(rootDictionaryObjId, true);\r\n    out(\"<</Type /Pages\");\r\n    var kids = \"/Kids [\";\r\n    for (i = 0; i < page; i++) {\r\n      kids += pageObjectNumbers[i] + \" 0 R \";\r\n    }\r\n    out(kids + \"]\");\r\n    out(\"/Count \" + page);\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n    events.publish(\"postPutPages\");\r\n  });\r\n\r\n  var putFont = function(font) {\r\n    events.publish(\"putFont\", {\r\n      font: font,\r\n      out: out,\r\n      newObject: newObject,\r\n      putStream: putStream\r\n    });\r\n\r\n    if (font.isAlreadyPutted !== true) {\r\n      font.objectNumber = newObject();\r\n      out(\"<<\");\r\n      out(\"/Type /Font\");\r\n      out(\"/BaseFont /\" + toPDFName(font.postScriptName));\r\n      out(\"/Subtype /Type1\");\r\n      if (typeof font.encoding === \"string\") {\r\n        out(\"/Encoding /\" + font.encoding);\r\n      }\r\n      out(\"/FirstChar 32\");\r\n      out(\"/LastChar 255\");\r\n      out(\">>\");\r\n      out(\"endobj\");\r\n    }\r\n  };\r\n\r\n  var putFonts = function() {\r\n    for (var fontKey in fonts) {\r\n      if (fonts.hasOwnProperty(fontKey)) {\r\n        if (\r\n          putOnlyUsedFonts === false ||\r\n          (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\r\n        ) {\r\n          putFont(fonts[fontKey]);\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  var putXObject = function(xObject) {\r\n    xObject.objectNumber = newObject();\r\n\r\n    var options = [];\r\n    options.push({ key: \"Type\", value: \"/XObject\" });\r\n    options.push({ key: \"Subtype\", value: \"/Form\" });\r\n    options.push({\r\n      key: \"BBox\",\r\n      value:\r\n        \"[\" +\r\n        [\r\n          hpf(xObject.x),\r\n          hpf(xObject.y),\r\n          hpf(xObject.x + xObject.width),\r\n          hpf(xObject.y + xObject.height)\r\n        ].join(\" \") +\r\n        \"]\"\r\n    });\r\n    options.push({\r\n      key: \"Matrix\",\r\n      value: \"[\" + xObject.matrix.toString() + \"]\"\r\n    });\r\n    // TODO: /Resources\r\n\r\n    var stream = xObject.pages[1].join(\"\\n\");\r\n    putStream({\r\n      data: stream,\r\n      additionalKeyValues: options,\r\n      objectId: xObject.objectNumber\r\n    });\r\n    out(\"endobj\");\r\n  };\r\n\r\n  var putXObjects = function() {\r\n    for (var xObjectKey in renderTargets) {\r\n      if (renderTargets.hasOwnProperty(xObjectKey)) {\r\n        putXObject(renderTargets[xObjectKey]);\r\n      }\r\n    }\r\n  };\r\n\r\n  var interpolateAndEncodeRGBStream = function(colors, numberSamples) {\r\n    var tValues = [];\r\n    var t;\r\n    var dT = 1.0 / (numberSamples - 1);\r\n    for (t = 0.0; t < 1.0; t += dT) {\r\n      tValues.push(t);\r\n    }\r\n    tValues.push(1.0);\r\n    // add first and last control point if not present\r\n    if (colors[0].offset != 0.0) {\r\n      var c0 = {\r\n        offset: 0.0,\r\n        color: colors[0].color\r\n      };\r\n      colors.unshift(c0);\r\n    }\r\n    if (colors[colors.length - 1].offset != 1.0) {\r\n      var c1 = {\r\n        offset: 1.0,\r\n        color: colors[colors.length - 1].color\r\n      };\r\n      colors.push(c1);\r\n    }\r\n    var out = \"\";\r\n    var index = 0;\r\n\r\n    for (var i = 0; i < tValues.length; i++) {\r\n      t = tValues[i];\r\n      while (t > colors[index + 1].offset) index++;\r\n      var a = colors[index].offset;\r\n      var b = colors[index + 1].offset;\r\n      var d = (t - a) / (b - a);\r\n\r\n      var aColor = colors[index].color;\r\n      var bColor = colors[index + 1].color;\r\n\r\n      out +=\r\n        padd2Hex(Math.round((1 - d) * aColor[0] + d * bColor[0]).toString(16)) +\r\n        padd2Hex(Math.round((1 - d) * aColor[1] + d * bColor[1]).toString(16)) +\r\n        padd2Hex(Math.round((1 - d) * aColor[2] + d * bColor[2]).toString(16));\r\n    }\r\n    return out.trim();\r\n  };\r\n\r\n  var putShadingPattern = function(pattern, numberSamples) {\r\n    /*\r\n       Axial patterns shade between the two points specified in coords, radial patterns between the inner\r\n       and outer circle.\r\n       The user can specify an array (colors) that maps t-Values in [0, 1] to RGB colors. These are now\r\n       interpolated to equidistant samples and written to pdf as a sample (type 0) function.\r\n       */\r\n    // The number of color samples that should be used to describe the shading.\r\n    // The higher, the more accurate the gradient will be.\r\n    numberSamples || (numberSamples = 21);\r\n    var funcObjectNumber = newObject();\r\n    var stream = interpolateAndEncodeRGBStream(pattern.colors, numberSamples);\r\n\r\n    var options = [];\r\n    options.push({ key: \"FunctionType\", value: \"0\" });\r\n    options.push({ key: \"Domain\", value: \"[0.0 1.0]\" });\r\n    options.push({ key: \"Size\", value: \"[\" + numberSamples + \"]\" });\r\n    options.push({ key: \"BitsPerSample\", value: \"8\" });\r\n    options.push({ key: \"Range\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\r\n    options.push({ key: \"Decode\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\r\n\r\n    putStream({\r\n      data: stream,\r\n      additionalKeyValues: options,\r\n      alreadyAppliedFilters: [\"/ASCIIHexDecode\"],\r\n      objectId: funcObjectNumber\r\n    });\r\n    out(\"endobj\");\r\n\r\n    pattern.objectNumber = newObject();\r\n    out(\"<< /ShadingType \" + pattern.type);\r\n    out(\"/ColorSpace /DeviceRGB\");\r\n    var coords =\r\n      \"/Coords [\" +\r\n      hpf(parseFloat(pattern.coords[0])) +\r\n      \" \" + // x1\r\n      hpf(parseFloat(pattern.coords[1])) +\r\n      \" \"; // y1\r\n    if (pattern.type === 2) {\r\n      // axial\r\n      coords +=\r\n        hpf(parseFloat(pattern.coords[2])) +\r\n        \" \" + // x2\r\n        hpf(parseFloat(pattern.coords[3])); // y2\r\n    } else {\r\n      // radial\r\n      coords +=\r\n        hpf(parseFloat(pattern.coords[2])) +\r\n        \" \" + // r1\r\n        hpf(parseFloat(pattern.coords[3])) +\r\n        \" \" + // x2\r\n        hpf(parseFloat(pattern.coords[4])) +\r\n        \" \" + // y2\r\n        hpf(parseFloat(pattern.coords[5])); // r2\r\n    }\r\n    coords += \"]\";\r\n    out(coords);\r\n\r\n    if (pattern.matrix) {\r\n      out(\"/Matrix [\" + pattern.matrix.toString() + \"]\");\r\n    }\r\n    out(\"/Function \" + funcObjectNumber + \" 0 R\");\r\n    out(\"/Extend [true true]\");\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n  };\r\n\r\n  var putTilingPattern = function(pattern, deferredResourceDictionaryIds) {\r\n    var resourcesObjectId = newObjectDeferred();\r\n    var patternObjectId = newObject();\r\n\r\n    deferredResourceDictionaryIds.push({\r\n      resourcesOid: resourcesObjectId,\r\n      objectOid: patternObjectId\r\n    });\r\n\r\n    pattern.objectNumber = patternObjectId;\r\n    var options = [];\r\n    options.push({ key: \"Type\", value: \"/Pattern\" });\r\n    options.push({ key: \"PatternType\", value: \"1\" }); // tiling pattern\r\n    options.push({ key: \"PaintType\", value: \"1\" }); // colored tiling pattern\r\n    options.push({ key: \"TilingType\", value: \"1\" }); // constant spacing\r\n    options.push({\r\n      key: \"BBox\",\r\n      value: \"[\" + pattern.boundingBox.map(hpf).join(\" \") + \"]\"\r\n    });\r\n    options.push({ key: \"XStep\", value: hpf(pattern.xStep) });\r\n    options.push({ key: \"YStep\", value: hpf(pattern.yStep) });\r\n    options.push({ key: \"Resources\", value: resourcesObjectId + \" 0 R\" });\r\n    if (pattern.matrix) {\r\n      options.push({\r\n        key: \"Matrix\",\r\n        value: \"[\" + pattern.matrix.toString() + \"]\"\r\n      });\r\n    }\r\n\r\n    putStream({\r\n      data: pattern.stream,\r\n      additionalKeyValues: options,\r\n      objectId: pattern.objectNumber\r\n    });\r\n    out(\"endobj\");\r\n  };\r\n\r\n  var putPatterns = function(deferredResourceDictionaryIds) {\r\n    var patternKey;\r\n    for (patternKey in patterns) {\r\n      if (patterns.hasOwnProperty(patternKey)) {\r\n        if (patterns[patternKey] instanceof ShadingPattern) {\r\n          putShadingPattern(patterns[patternKey]);\r\n        } else if (patterns[patternKey] instanceof TilingPattern) {\r\n          putTilingPattern(patterns[patternKey], deferredResourceDictionaryIds);\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  var putGState = function(gState) {\r\n    gState.objectNumber = newObject();\r\n    out(\"<<\");\r\n    for (var p in gState) {\r\n      switch (p) {\r\n        case \"opacity\":\r\n          out(\"/ca \" + f2(gState[p]));\r\n          break;\r\n        case \"stroke-opacity\":\r\n          out(\"/CA \" + f2(gState[p]));\r\n          break;\r\n      }\r\n    }\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n  };\r\n\r\n  var putGStates = function() {\r\n    var gStateKey;\r\n    for (gStateKey in gStates) {\r\n      if (gStates.hasOwnProperty(gStateKey)) {\r\n        putGState(gStates[gStateKey]);\r\n      }\r\n    }\r\n  };\r\n\r\n  var putXobjectDict = function() {\r\n    out(\"/XObject <<\");\r\n    for (var xObjectKey in renderTargets) {\r\n      if (\r\n        renderTargets.hasOwnProperty(xObjectKey) &&\r\n        renderTargets[xObjectKey].objectNumber >= 0\r\n      ) {\r\n        out(\r\n          \"/\" +\r\n            xObjectKey +\r\n            \" \" +\r\n            renderTargets[xObjectKey].objectNumber +\r\n            \" 0 R\"\r\n        );\r\n      }\r\n    }\r\n\r\n    // Loop through images, or other data objects\r\n    events.publish(\"putXobjectDict\");\r\n    out(\">>\");\r\n  };\r\n\r\n  var putEncryptionDict = function() {\r\n    encryption.oid = newObject();\r\n    out(\"<<\");\r\n    out(\"/Filter /Standard\");\r\n    out(\"/V \" + encryption.v);\r\n    out(\"/R \" + encryption.r);\r\n    out(\"/U <\" + encryption.toHexString(encryption.U) + \">\");\r\n    out(\"/O <\" + encryption.toHexString(encryption.O) + \">\");\r\n    out(\"/P \" + encryption.P);\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n  };\r\n\r\n  var putFontDict = function() {\r\n    out(\"/Font <<\");\r\n\r\n    for (var fontKey in fonts) {\r\n      if (fonts.hasOwnProperty(fontKey)) {\r\n        if (\r\n          putOnlyUsedFonts === false ||\r\n          (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\r\n        ) {\r\n          out(\"/\" + fontKey + \" \" + fonts[fontKey].objectNumber + \" 0 R\");\r\n        }\r\n      }\r\n    }\r\n    out(\">>\");\r\n  };\r\n\r\n  var putShadingPatternDict = function() {\r\n    if (Object.keys(patterns).length > 0) {\r\n      out(\"/Shading <<\");\r\n      for (var patternKey in patterns) {\r\n        if (\r\n          patterns.hasOwnProperty(patternKey) &&\r\n          patterns[patternKey] instanceof ShadingPattern &&\r\n          patterns[patternKey].objectNumber >= 0\r\n        ) {\r\n          out(\r\n            \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\r\n          );\r\n        }\r\n      }\r\n\r\n      events.publish(\"putShadingPatternDict\");\r\n      out(\">>\");\r\n    }\r\n  };\r\n\r\n  var putTilingPatternDict = function(objectOid) {\r\n    if (Object.keys(patterns).length > 0) {\r\n      out(\"/Pattern <<\");\r\n      for (var patternKey in patterns) {\r\n        if (\r\n          patterns.hasOwnProperty(patternKey) &&\r\n          patterns[patternKey] instanceof API.TilingPattern &&\r\n          patterns[patternKey].objectNumber >= 0 &&\r\n          patterns[patternKey].objectNumber < objectOid // prevent cyclic dependencies\r\n        ) {\r\n          out(\r\n            \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\r\n          );\r\n        }\r\n      }\r\n      events.publish(\"putTilingPatternDict\");\r\n      out(\">>\");\r\n    }\r\n  };\r\n\r\n  var putGStatesDict = function() {\r\n    if (Object.keys(gStates).length > 0) {\r\n      var gStateKey;\r\n      out(\"/ExtGState <<\");\r\n      for (gStateKey in gStates) {\r\n        if (\r\n          gStates.hasOwnProperty(gStateKey) &&\r\n          gStates[gStateKey].objectNumber >= 0\r\n        ) {\r\n          out(\"/\" + gStateKey + \" \" + gStates[gStateKey].objectNumber + \" 0 R\");\r\n        }\r\n      }\r\n\r\n      events.publish(\"putGStateDict\");\r\n      out(\">>\");\r\n    }\r\n  };\r\n\r\n  var putResourceDictionary = function(objectIds) {\r\n    newObjectDeferredBegin(objectIds.resourcesOid, true);\r\n    out(\"<<\");\r\n    out(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\");\r\n    putFontDict();\r\n    putShadingPatternDict();\r\n    putTilingPatternDict(objectIds.objectOid);\r\n    putGStatesDict();\r\n    putXobjectDict();\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n  };\r\n\r\n  var putResources = function() {\r\n    // FormObjects, Patterns etc. might use other FormObjects/Patterns/Images\r\n    // which means their resource dictionaries must contain the already resolved\r\n    // object ids. For this reason we defer the serialization of the resource\r\n    // dicts until all objects have been serialized and have object ids.\r\n    //\r\n    // In order to prevent cyclic dependencies (which Adobe Reader doesn't like),\r\n    // we only put all oids that are smaller than the oid of the object the\r\n    // resource dict belongs to. This is correct behavior, since the streams\r\n    // may only use other objects that have already been defined and thus appear\r\n    // earlier in their respective collection.\r\n    // Currently, this only affects tiling patterns, but a (more) correct\r\n    // implementation of FormObjects would also define their own resource dicts.\r\n    var deferredResourceDictionaryIds = [];\r\n\r\n    putFonts();\r\n    putGStates();\r\n    putXObjects();\r\n    putPatterns(deferredResourceDictionaryIds);\r\n\r\n    events.publish(\"putResources\");\r\n    deferredResourceDictionaryIds.forEach(putResourceDictionary);\r\n    putResourceDictionary({\r\n      resourcesOid: resourceDictionaryObjId,\r\n      objectOid: Number.MAX_SAFE_INTEGER // output all objects\r\n    });\r\n    events.publish(\"postPutResources\");\r\n  };\r\n\r\n  var putAdditionalObjects = function() {\r\n    events.publish(\"putAdditionalObjects\");\r\n    for (var i = 0; i < additionalObjects.length; i++) {\r\n      var obj = additionalObjects[i];\r\n      newObjectDeferredBegin(obj.objId, true);\r\n      out(obj.content);\r\n      out(\"endobj\");\r\n    }\r\n    events.publish(\"postPutAdditionalObjects\");\r\n  };\r\n\r\n  var addFontToFontDictionary = function(font) {\r\n    fontmap[font.fontName] = fontmap[font.fontName] || {};\r\n    fontmap[font.fontName][font.fontStyle] = font.id;\r\n  };\r\n\r\n  var addFont = function(\r\n    postScriptName,\r\n    fontName,\r\n    fontStyle,\r\n    encoding,\r\n    isStandardFont\r\n  ) {\r\n    var font = {\r\n      id: \"F\" + (Object.keys(fonts).length + 1).toString(10),\r\n      postScriptName: postScriptName,\r\n      fontName: fontName,\r\n      fontStyle: fontStyle,\r\n      encoding: encoding,\r\n      isStandardFont: isStandardFont || false,\r\n      metadata: {}\r\n    };\r\n\r\n    events.publish(\"addFont\", {\r\n      font: font,\r\n      instance: this\r\n    });\r\n\r\n    fonts[font.id] = font;\r\n    addFontToFontDictionary(font);\r\n    return font.id;\r\n  };\r\n\r\n  var addFonts = function(arrayOfFonts) {\r\n    for (var i = 0, l = standardFonts.length; i < l; i++) {\r\n      var fontKey = addFont.call(\r\n        this,\r\n        arrayOfFonts[i][0],\r\n        arrayOfFonts[i][1],\r\n        arrayOfFonts[i][2],\r\n        standardFonts[i][3],\r\n        true\r\n      );\r\n\r\n      if (putOnlyUsedFonts === false) {\r\n        usedFonts[fontKey] = true;\r\n      }\r\n      // adding aliases for standard fonts, this time matching the capitalization\r\n      var parts = arrayOfFonts[i][0].split(\"-\");\r\n      addFontToFontDictionary({\r\n        id: fontKey,\r\n        fontName: parts[0],\r\n        fontStyle: parts[1] || \"\"\r\n      });\r\n    }\r\n    events.publish(\"addFonts\", {\r\n      fonts: fonts,\r\n      dictionary: fontmap\r\n    });\r\n  };\r\n\r\n  var SAFE = function __safeCall(fn) {\r\n    fn.foo = function __safeCallWrapper() {\r\n      try {\r\n        return fn.apply(this, arguments);\r\n      } catch (e) {\r\n        var stack = e.stack || \"\";\r\n        if (~stack.indexOf(\" at \")) stack = stack.split(\" at \")[1];\r\n        var m =\r\n          \"Error in function \" +\r\n          stack.split(\"\\n\")[0].split(\"<\")[0] +\r\n          \": \" +\r\n          e.message;\r\n        if (globalObject.console) {\r\n          globalObject.console.error(m, e);\r\n          if (globalObject.alert) alert(m);\r\n        } else {\r\n          throw new Error(m);\r\n        }\r\n      }\r\n    };\r\n    fn.foo.bar = fn;\r\n    return fn.foo;\r\n  };\r\n\r\n  var to8bitStream = function(text, flags) {\r\n    /**\r\n     * PDF 1.3 spec:\r\n     * \"For text strings encoded in Unicode, the first two bytes must be 254 followed by\r\n     * 255, representing the Unicode byte order marker, U+FEFF. (This sequence conflicts\r\n     * with the PDFDocEncoding character sequence thorn ydieresis, which is unlikely\r\n     * to be a meaningful beginning of a word or phrase.) The remainder of the\r\n     * string consists of Unicode character codes, according to the UTF-16 encoding\r\n     * specified in the Unicode standard, version 2.0. Commonly used Unicode values\r\n     * are represented as 2 bytes per character, with the high-order byte appearing first\r\n     * in the string.\"\r\n     *\r\n     * In other words, if there are chars in a string with char code above 255, we\r\n     * recode the string to UCS2 BE - string doubles in length and BOM is prepended.\r\n     *\r\n     * HOWEVER!\r\n     * Actual *content* (body) text (as opposed to strings used in document properties etc)\r\n     * does NOT expect BOM. There, it is treated as a literal GID (Glyph ID)\r\n     *\r\n     * Because of Adobe's focus on \"you subset your fonts!\" you are not supposed to have\r\n     * a font that maps directly Unicode (UCS2 / UTF16BE) code to font GID, but you could\r\n     * fudge it with \"Identity-H\" encoding and custom CIDtoGID map that mimics Unicode\r\n     * code page. There, however, all characters in the stream are treated as GIDs,\r\n     * including BOM, which is the reason we need to skip BOM in content text (i.e. that\r\n     * that is tied to a font).\r\n     *\r\n     * To signal this \"special\" PDFEscape / to8bitStream handling mode,\r\n     * API.text() function sets (unless you overwrite it with manual values\r\n     * given to API.text(.., flags) )\r\n     * flags.autoencode = true\r\n     * flags.noBOM = true\r\n     *\r\n     * ===================================================================================\r\n     * `flags` properties relied upon:\r\n     *   .sourceEncoding = string with encoding label.\r\n     *                     \"Unicode\" by default. = encoding of the incoming text.\r\n     *                     pass some non-existing encoding name\r\n     *                     (ex: 'Do not touch my strings! I know what I am doing.')\r\n     *                     to make encoding code skip the encoding step.\r\n     *   .outputEncoding = Either valid PDF encoding name\r\n     *                     (must be supported by jsPDF font metrics, otherwise no encoding)\r\n     *                     or a JS object, where key = sourceCharCode, value = outputCharCode\r\n     *                     missing keys will be treated as: sourceCharCode === outputCharCode\r\n     *   .noBOM\r\n     *       See comment higher above for explanation for why this is important\r\n     *   .autoencode\r\n     *       See comment higher above for explanation for why this is important\r\n     */\r\n\r\n    var i,\r\n      l,\r\n      sourceEncoding,\r\n      encodingBlock,\r\n      outputEncoding,\r\n      newtext,\r\n      isUnicode,\r\n      ch,\r\n      bch;\r\n\r\n    flags = flags || {};\r\n    sourceEncoding = flags.sourceEncoding || \"Unicode\";\r\n    outputEncoding = flags.outputEncoding;\r\n\r\n    // This 'encoding' section relies on font metrics format\r\n    // attached to font objects by, among others,\r\n    // \"Willow Systems' standard_font_metrics plugin\"\r\n    // see jspdf.plugin.standard_font_metrics.js for format\r\n    // of the font.metadata.encoding Object.\r\n    // It should be something like\r\n    //   .encoding = {'codePages':['WinANSI....'], 'WinANSI...':{code:code, ...}}\r\n    //   .widths = {0:width, code:width, ..., 'fof':divisor}\r\n    //   .kerning = {code:{previous_char_code:shift, ..., 'fof':-divisor},...}\r\n    if (\r\n      (flags.autoencode || outputEncoding) &&\r\n      fonts[activeFontKey].metadata &&\r\n      fonts[activeFontKey].metadata[sourceEncoding] &&\r\n      fonts[activeFontKey].metadata[sourceEncoding].encoding\r\n    ) {\r\n      encodingBlock = fonts[activeFontKey].metadata[sourceEncoding].encoding;\r\n\r\n      // each font has default encoding. Some have it clearly defined.\r\n      if (!outputEncoding && fonts[activeFontKey].encoding) {\r\n        outputEncoding = fonts[activeFontKey].encoding;\r\n      }\r\n\r\n      // Hmmm, the above did not work? Let's try again, in different place.\r\n      if (!outputEncoding && encodingBlock.codePages) {\r\n        outputEncoding = encodingBlock.codePages[0]; // let's say, first one is the default\r\n      }\r\n\r\n      if (typeof outputEncoding === \"string\") {\r\n        outputEncoding = encodingBlock[outputEncoding];\r\n      }\r\n      // we want output encoding to be a JS Object, where\r\n      // key = sourceEncoding's character code and\r\n      // value = outputEncoding's character code.\r\n      if (outputEncoding) {\r\n        isUnicode = false;\r\n        newtext = [];\r\n        for (i = 0, l = text.length; i < l; i++) {\r\n          ch = outputEncoding[text.charCodeAt(i)];\r\n          if (ch) {\r\n            newtext.push(String.fromCharCode(ch));\r\n          } else {\r\n            newtext.push(text[i]);\r\n          }\r\n\r\n          // since we are looping over chars anyway, might as well\r\n          // check for residual unicodeness\r\n          if (newtext[i].charCodeAt(0) >> 8) {\r\n            /* more than 255 */\r\n            isUnicode = true;\r\n          }\r\n        }\r\n        text = newtext.join(\"\");\r\n      }\r\n    }\r\n\r\n    i = text.length;\r\n    // isUnicode may be set to false above. Hence the triple-equal to undefined\r\n    while (isUnicode === undefined && i !== 0) {\r\n      if (text.charCodeAt(i - 1) >> 8) {\r\n        /* more than 255 */\r\n        isUnicode = true;\r\n      }\r\n      i--;\r\n    }\r\n    if (!isUnicode) {\r\n      return text;\r\n    }\r\n\r\n    newtext = flags.noBOM ? [] : [254, 255];\r\n    for (i = 0, l = text.length; i < l; i++) {\r\n      ch = text.charCodeAt(i);\r\n      bch = ch >> 8; // divide by 256\r\n      if (bch >> 8) {\r\n        /* something left after dividing by 256 second time */\r\n        throw new Error(\r\n          \"Character at position \" +\r\n            i +\r\n            \" of string '\" +\r\n            text +\r\n            \"' exceeds 16bits. Cannot be encoded into UCS-2 BE\"\r\n        );\r\n      }\r\n      newtext.push(bch);\r\n      newtext.push(ch - (bch << 8));\r\n    }\r\n    return String.fromCharCode.apply(undefined, newtext);\r\n  };\r\n\r\n  var pdfEscape = (API.__private__.pdfEscape = API.pdfEscape = function(\r\n    text,\r\n    flags\r\n  ) {\r\n    /**\r\n     * Replace '/', '(', and ')' with pdf-safe versions\r\n     *\r\n     * Doing to8bitStream does NOT make this PDF display unicode text. For that\r\n     * we also need to reference a unicode font and embed it - royal pain in the rear.\r\n     *\r\n     * There is still a benefit to to8bitStream - PDF simply cannot handle 16bit chars,\r\n     * which JavaScript Strings are happy to provide. So, while we still cannot display\r\n     * 2-byte characters property, at least CONDITIONALLY converting (entire string containing)\r\n     * 16bit chars to (USC-2-BE) 2-bytes per char + BOM streams we ensure that entire PDF\r\n     * is still parseable.\r\n     * This will allow immediate support for unicode in document properties strings.\r\n     */\r\n    return to8bitStream(text, flags)\r\n      .replace(/\\\\/g, \"\\\\\\\\\")\r\n      .replace(/\\(/g, \"\\\\(\")\r\n      .replace(/\\)/g, \"\\\\)\");\r\n  });\r\n\r\n  var beginPage = (API.__private__.beginPage = function(format) {\r\n    pages[++page] = [];\r\n    pagesContext[page] = {\r\n      objId: 0,\r\n      contentsObjId: 0,\r\n      userUnit: Number(userUnit),\r\n      artBox: null,\r\n      bleedBox: null,\r\n      cropBox: null,\r\n      trimBox: null,\r\n      mediaBox: {\r\n        bottomLeftX: 0,\r\n        bottomLeftY: 0,\r\n        topRightX: Number(format[0]),\r\n        topRightY: Number(format[1])\r\n      }\r\n    };\r\n    _setPage(page);\r\n    setOutputDestination(pages[currentPage]);\r\n  });\r\n\r\n  var _addPage = function(parmFormat, parmOrientation) {\r\n    var dimensions, width, height;\r\n\r\n    orientation = parmOrientation || orientation;\r\n\r\n    if (typeof parmFormat === \"string\") {\r\n      dimensions = getPageFormat(parmFormat.toLowerCase());\r\n      if (Array.isArray(dimensions)) {\r\n        width = dimensions[0];\r\n        height = dimensions[1];\r\n      }\r\n    }\r\n\r\n    if (Array.isArray(parmFormat)) {\r\n      width = parmFormat[0] * scaleFactor;\r\n      height = parmFormat[1] * scaleFactor;\r\n    }\r\n\r\n    if (isNaN(width)) {\r\n      width = format[0];\r\n      height = format[1];\r\n    }\r\n\r\n    if (width > 14400 || height > 14400) {\r\n      console.warn(\r\n        \"A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400\"\r\n      );\r\n      width = Math.min(14400, width);\r\n      height = Math.min(14400, height);\r\n    }\r\n\r\n    format = [width, height];\r\n\r\n    switch (orientation.substr(0, 1)) {\r\n      case \"l\":\r\n        if (height > width) {\r\n          format = [height, width];\r\n        }\r\n        break;\r\n      case \"p\":\r\n        if (width > height) {\r\n          format = [height, width];\r\n        }\r\n        break;\r\n    }\r\n\r\n    beginPage(format);\r\n\r\n    // Set line width\r\n    setLineWidth(lineWidth);\r\n    // Set draw color\r\n    out(strokeColor);\r\n    // resurrecting non-default line caps, joins\r\n    if (lineCapID !== 0) {\r\n      out(lineCapID + \" J\");\r\n    }\r\n    if (lineJoinID !== 0) {\r\n      out(lineJoinID + \" j\");\r\n    }\r\n    events.publish(\"addPage\", {\r\n      pageNumber: page\r\n    });\r\n  };\r\n\r\n  var _deletePage = function(n) {\r\n    if (n > 0 && n <= page) {\r\n      pages.splice(n, 1);\r\n      pagesContext.splice(n, 1);\r\n      page--;\r\n      if (currentPage > page) {\r\n        currentPage = page;\r\n      }\r\n      this.setPage(currentPage);\r\n    }\r\n  };\r\n\r\n  var _setPage = function(n) {\r\n    if (n > 0 && n <= page) {\r\n      currentPage = n;\r\n    }\r\n  };\r\n\r\n  var getNumberOfPages = (API.__private__.getNumberOfPages = API.getNumberOfPages = function() {\r\n    return pages.length - 1;\r\n  });\r\n\r\n  /**\r\n   * Returns a document-specific font key - a label assigned to a\r\n   * font name + font type combination at the time the font was added\r\n   * to the font inventory.\r\n   *\r\n   * Font key is used as label for the desired font for a block of text\r\n   * to be added to the PDF document stream.\r\n   * @private\r\n   * @function\r\n   * @param fontName {string} can be undefined on \"falthy\" to indicate \"use current\"\r\n   * @param fontStyle {string} can be undefined on \"falthy\" to indicate \"use current\"\r\n   * @returns {string} Font key.\r\n   * @ignore\r\n   */\r\n  var getFont = function(fontName, fontStyle, options) {\r\n    var key = undefined,\r\n      fontNameLowerCase;\r\n    options = options || {};\r\n\r\n    fontName =\r\n      fontName !== undefined ? fontName : fonts[activeFontKey].fontName;\r\n    fontStyle =\r\n      fontStyle !== undefined ? fontStyle : fonts[activeFontKey].fontStyle;\r\n    fontNameLowerCase = fontName.toLowerCase();\r\n\r\n    if (\r\n      fontmap[fontNameLowerCase] !== undefined &&\r\n      fontmap[fontNameLowerCase][fontStyle] !== undefined\r\n    ) {\r\n      key = fontmap[fontNameLowerCase][fontStyle];\r\n    } else if (\r\n      fontmap[fontName] !== undefined &&\r\n      fontmap[fontName][fontStyle] !== undefined\r\n    ) {\r\n      key = fontmap[fontName][fontStyle];\r\n    } else {\r\n      if (options.disableWarning === false) {\r\n        console.warn(\r\n          \"Unable to look up font label for font '\" +\r\n            fontName +\r\n            \"', '\" +\r\n            fontStyle +\r\n            \"'. Refer to getFontList() for available fonts.\"\r\n        );\r\n      }\r\n    }\r\n\r\n    if (!key && !options.noFallback) {\r\n      key = fontmap[\"times\"][fontStyle];\r\n      if (key == null) {\r\n        key = fontmap[\"times\"][\"normal\"];\r\n      }\r\n    }\r\n    return key;\r\n  };\r\n\r\n  var putInfo = (API.__private__.putInfo = function() {\r\n    var objectId = newObject();\r\n    var encryptor = function(data) {\r\n      return data;\r\n    };\r\n    if (encryptionOptions !== null) {\r\n      encryptor = encryption.encryptor(objectId, 0);\r\n    }\r\n    out(\"<<\");\r\n    out(\"/Producer (\" + pdfEscape(encryptor(\"jsPDF \" + jsPDF.version)) + \")\");\r\n    for (var key in documentProperties) {\r\n      if (documentProperties.hasOwnProperty(key) && documentProperties[key]) {\r\n        out(\r\n          \"/\" +\r\n            key.substr(0, 1).toUpperCase() +\r\n            key.substr(1) +\r\n            \" (\" +\r\n            pdfEscape(encryptor(documentProperties[key])) +\r\n            \")\"\r\n        );\r\n      }\r\n    }\r\n    out(\"/CreationDate (\" + pdfEscape(encryptor(creationDate)) + \")\");\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n  });\r\n\r\n  var putCatalog = (API.__private__.putCatalog = function(options) {\r\n    options = options || {};\r\n    var tmpRootDictionaryObjId =\r\n      options.rootDictionaryObjId || rootDictionaryObjId;\r\n    newObject();\r\n    out(\"<<\");\r\n    out(\"/Type /Catalog\");\r\n    out(\"/Pages \" + tmpRootDictionaryObjId + \" 0 R\");\r\n    // PDF13ref Section 7.2.1\r\n    if (!zoomMode) zoomMode = \"fullwidth\";\r\n    switch (zoomMode) {\r\n      case \"fullwidth\":\r\n        out(\"/OpenAction [3 0 R /FitH null]\");\r\n        break;\r\n      case \"fullheight\":\r\n        out(\"/OpenAction [3 0 R /FitV null]\");\r\n        break;\r\n      case \"fullpage\":\r\n        out(\"/OpenAction [3 0 R /Fit]\");\r\n        break;\r\n      case \"original\":\r\n        out(\"/OpenAction [3 0 R /XYZ null null 1]\");\r\n        break;\r\n      default:\r\n        var pcn = \"\" + zoomMode;\r\n        if (pcn.substr(pcn.length - 1) === \"%\")\r\n          zoomMode = parseInt(zoomMode) / 100;\r\n        if (typeof zoomMode === \"number\") {\r\n          out(\"/OpenAction [3 0 R /XYZ null null \" + f2(zoomMode) + \"]\");\r\n        }\r\n    }\r\n    if (!layoutMode) layoutMode = \"continuous\";\r\n    switch (layoutMode) {\r\n      case \"continuous\":\r\n        out(\"/PageLayout /OneColumn\");\r\n        break;\r\n      case \"single\":\r\n        out(\"/PageLayout /SinglePage\");\r\n        break;\r\n      case \"two\":\r\n      case \"twoleft\":\r\n        out(\"/PageLayout /TwoColumnLeft\");\r\n        break;\r\n      case \"tworight\":\r\n        out(\"/PageLayout /TwoColumnRight\");\r\n        break;\r\n    }\r\n    if (pageMode) {\r\n      /**\r\n       * A name object specifying how the document should be displayed when opened:\r\n       * UseNone      : Neither document outline nor thumbnail images visible -- DEFAULT\r\n       * UseOutlines  : Document outline visible\r\n       * UseThumbs    : Thumbnail images visible\r\n       * FullScreen   : Full-screen mode, with no menu bar, window controls, or any other window visible\r\n       */\r\n      out(\"/PageMode /\" + pageMode);\r\n    }\r\n    events.publish(\"putCatalog\");\r\n    out(\">>\");\r\n    out(\"endobj\");\r\n  });\r\n\r\n  var putTrailer = (API.__private__.putTrailer = function() {\r\n    out(\"trailer\");\r\n    out(\"<<\");\r\n    out(\"/Size \" + (objectNumber + 1));\r\n    // Root and Info must be the last and second last objects written respectively\r\n    out(\"/Root \" + objectNumber + \" 0 R\");\r\n    out(\"/Info \" + (objectNumber - 1) + \" 0 R\");\r\n    if (encryptionOptions !== null) {\r\n      out(\"/Encrypt \" + encryption.oid + \" 0 R\");\r\n    }\r\n    out(\"/ID [ <\" + fileId + \"> <\" + fileId + \"> ]\");\r\n    out(\">>\");\r\n  });\r\n\r\n  var putHeader = (API.__private__.putHeader = function() {\r\n    out(\"%PDF-\" + pdfVersion);\r\n    out(\"%\\xBA\\xDF\\xAC\\xE0\");\r\n  });\r\n\r\n  var putXRef = (API.__private__.putXRef = function() {\r\n    var p = \"0000000000\";\r\n\r\n    out(\"xref\");\r\n    out(\"0 \" + (objectNumber + 1));\r\n    out(\"0000000000 65535 f \");\r\n    for (var i = 1; i <= objectNumber; i++) {\r\n      var offset = offsets[i];\r\n      if (typeof offset === \"function\") {\r\n        out((p + offsets[i]()).slice(-10) + \" 00000 n \");\r\n      } else {\r\n        if (typeof offsets[i] !== \"undefined\") {\r\n          out((p + offsets[i]).slice(-10) + \" 00000 n \");\r\n        } else {\r\n          out(\"0000000000 00000 n \");\r\n        }\r\n      }\r\n    }\r\n  });\r\n\r\n  var buildDocument = (API.__private__.buildDocument = function() {\r\n    resetDocument();\r\n    setOutputDestination(content);\r\n\r\n    events.publish(\"buildDocument\");\r\n\r\n    putHeader();\r\n    putPages();\r\n    putAdditionalObjects();\r\n    putResources();\r\n    if (encryptionOptions !== null) putEncryptionDict();\r\n    putInfo();\r\n    putCatalog();\r\n\r\n    var offsetOfXRef = contentLength;\r\n    putXRef();\r\n    putTrailer();\r\n    out(\"startxref\");\r\n    out(\"\" + offsetOfXRef);\r\n    out(\"%%EOF\");\r\n\r\n    setOutputDestination(pages[currentPage]);\r\n\r\n    return content.join(\"\\n\");\r\n  });\r\n\r\n  var getBlob = (API.__private__.getBlob = function(data) {\r\n    return new Blob([getArrayBuffer(data)], {\r\n      type: \"application/pdf\"\r\n    });\r\n  });\r\n\r\n  /**\r\n   * Generates the PDF document.\r\n   *\r\n   * If `type` argument is undefined, output is raw body of resulting PDF returned as a string.\r\n   *\r\n   * @param {string} type A string identifying one of the possible output types.<br/>\r\n   *                      Possible values are: <br/>\r\n   *                          'arraybuffer' -> (ArrayBuffer)<br/>\r\n   *                          'blob' -> (Blob)<br/>\r\n   *                          'bloburi'/'bloburl' -> (string)<br/>\r\n   *                          'datauristring'/'dataurlstring' -> (string)<br/>\r\n   *                          'datauri'/'dataurl' -> (undefined) -> change location to generated datauristring/dataurlstring<br/>\r\n   *                          'dataurlnewwindow' -> (window | null | undefined) throws error if global isn't a window object(node)<br/>\r\n   *                          'pdfobjectnewwindow' -> (window | null) throws error if global isn't a window object(node)<br/>\r\n   *                          'pdfjsnewwindow' -> (wind | null)\r\n   * @param {Object|string} options An object providing some additional signalling to PDF generator.<br/>\r\n   *                                Possible options are 'filename'.<br/>\r\n   *                                A string can be passed instead of {filename:string} and defaults to 'generated.pdf'\r\n   * @function\r\n   * @instance\r\n   * @returns {string|window|ArrayBuffer|Blob|jsPDF|null|undefined}\r\n   * @memberof jsPDF#\r\n   * @name output\r\n   */\r\n  var output = (API.output = API.__private__.output = SAFE(function output(\r\n    type,\r\n    options\r\n  ) {\r\n    options = options || {};\r\n\r\n    if (typeof options === \"string\") {\r\n      options = {\r\n        filename: options\r\n      };\r\n    } else {\r\n      options.filename = options.filename || \"generated.pdf\";\r\n    }\r\n\r\n    switch (type) {\r\n      case undefined:\r\n        return buildDocument();\r\n      case \"save\":\r\n        API.save(options.filename);\r\n        break;\r\n      case \"arraybuffer\":\r\n        return getArrayBuffer(buildDocument());\r\n      case \"blob\":\r\n        return getBlob(buildDocument());\r\n      case \"bloburi\":\r\n      case \"bloburl\":\r\n        // Developer is responsible of calling revokeObjectURL\r\n        if (\r\n          typeof globalObject.URL !== \"undefined\" &&\r\n          typeof globalObject.URL.createObjectURL === \"function\"\r\n        ) {\r\n          return (\r\n            (globalObject.URL &&\r\n              globalObject.URL.createObjectURL(getBlob(buildDocument()))) ||\r\n            void 0\r\n          );\r\n        } else {\r\n          console.warn(\r\n            \"bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.\"\r\n          );\r\n        }\r\n        break;\r\n      case \"datauristring\":\r\n      case \"dataurlstring\":\r\n        var dataURI = \"\";\r\n        var pdfDocument = buildDocument();\r\n        try {\r\n          dataURI = btoa(pdfDocument);\r\n        } catch (e) {\r\n          dataURI = btoa(unescape(encodeURIComponent(pdfDocument)));\r\n        }\r\n        return (\r\n          \"data:application/pdf;filename=\" +\r\n          options.filename +\r\n          \";base64,\" +\r\n          dataURI\r\n        );\r\n      case \"pdfobjectnewwindow\":\r\n        if (\r\n          Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n        ) {\r\n          var pdfObjectUrl =\r\n            \"https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js\";\r\n          var integrity =\r\n            ' integrity=\"sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==\" crossorigin=\"anonymous\"';\r\n\r\n          if (options.pdfObjectUrl) {\r\n            pdfObjectUrl = options.pdfObjectUrl;\r\n            integrity = \"\";\r\n          }\r\n\r\n          var htmlForNewWindow =\r\n            \"<html>\" +\r\n            '<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><script src=\"' +\r\n            pdfObjectUrl +\r\n            '\"' +\r\n            integrity +\r\n            '></script><script >PDFObject.embed(\"' +\r\n            this.output(\"dataurlstring\") +\r\n            '\", ' +\r\n            JSON.stringify(options) +\r\n            \");</script></body></html>\";\r\n          var nW = globalObject.open();\r\n\r\n          if (nW !== null) {\r\n            nW.document.write(htmlForNewWindow);\r\n          }\r\n          return nW;\r\n        } else {\r\n          throw new Error(\r\n            \"The option pdfobjectnewwindow just works in a browser-environment.\"\r\n          );\r\n        }\r\n      case \"pdfjsnewwindow\":\r\n        if (\r\n          Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n        ) {\r\n          var pdfJsUrl = options.pdfJsUrl || \"examples/PDF.js/web/viewer.html\";\r\n          var htmlForPDFjsNewWindow =\r\n            \"<html>\" +\r\n            \"<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style>\" +\r\n            '<body><iframe id=\"pdfViewer\" src=\"' +\r\n            pdfJsUrl +\r\n            \"?file=&downloadName=\" +\r\n            options.filename +\r\n            '\" width=\"500px\" height=\"400px\" />' +\r\n            \"</body></html>\";\r\n          var PDFjsNewWindow = globalObject.open();\r\n\r\n          if (PDFjsNewWindow !== null) {\r\n            PDFjsNewWindow.document.write(htmlForPDFjsNewWindow);\r\n            var scope = this;\r\n            PDFjsNewWindow.document.documentElement.querySelector(\r\n              \"#pdfViewer\"\r\n            ).onload = function() {\r\n              PDFjsNewWindow.document.title = options.filename;\r\n              PDFjsNewWindow.document.documentElement\r\n                .querySelector(\"#pdfViewer\")\r\n                .contentWindow.PDFViewerApplication.open(\r\n                  scope.output(\"bloburl\")\r\n                );\r\n            };\r\n          }\r\n          return PDFjsNewWindow;\r\n        } else {\r\n          throw new Error(\r\n            \"The option pdfjsnewwindow just works in a browser-environment.\"\r\n          );\r\n        }\r\n      case \"dataurlnewwindow\":\r\n        if (\r\n          Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n        ) {\r\n          var htmlForDataURLNewWindow =\r\n            \"<html>\" +\r\n            \"<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style>\" +\r\n            \"<body>\" +\r\n            '<iframe src=\"' +\r\n            this.output(\"datauristring\", options) +\r\n            '\"></iframe>' +\r\n            \"</body></html>\";\r\n          var dataURLNewWindow = globalObject.open();\r\n          if (dataURLNewWindow !== null) {\r\n            dataURLNewWindow.document.write(htmlForDataURLNewWindow);\r\n            dataURLNewWindow.document.title = options.filename;\r\n          }\r\n          if (dataURLNewWindow || typeof safari === \"undefined\")\r\n            return dataURLNewWindow;\r\n        } else {\r\n          throw new Error(\r\n            \"The option dataurlnewwindow just works in a browser-environment.\"\r\n          );\r\n        }\r\n        break;\r\n      case \"datauri\":\r\n      case \"dataurl\":\r\n        return (globalObject.document.location.href = this.output(\r\n          \"datauristring\",\r\n          options\r\n        ));\r\n      default:\r\n        return null;\r\n    }\r\n  }));\r\n\r\n  /**\r\n   * Used to see if a supplied hotfix was requested when the pdf instance was created.\r\n   * @param {string} hotfixName - The name of the hotfix to check.\r\n   * @returns {boolean}\r\n   */\r\n  var hasHotfix = function(hotfixName) {\r\n    return (\r\n      Array.isArray(hotfixes) === true && hotfixes.indexOf(hotfixName) > -1\r\n    );\r\n  };\r\n\r\n  switch (unit) {\r\n    case \"pt\":\r\n      scaleFactor = 1;\r\n      break;\r\n    case \"mm\":\r\n      scaleFactor = 72 / 25.4;\r\n      break;\r\n    case \"cm\":\r\n      scaleFactor = 72 / 2.54;\r\n      break;\r\n    case \"in\":\r\n      scaleFactor = 72;\r\n      break;\r\n    case \"px\":\r\n      if (hasHotfix(\"px_scaling\") == true) {\r\n        scaleFactor = 72 / 96;\r\n      } else {\r\n        scaleFactor = 96 / 72;\r\n      }\r\n      break;\r\n    case \"pc\":\r\n      scaleFactor = 12;\r\n      break;\r\n    case \"em\":\r\n      scaleFactor = 12;\r\n      break;\r\n    case \"ex\":\r\n      scaleFactor = 6;\r\n      break;\r\n    default:\r\n      if (typeof unit === \"number\") {\r\n        scaleFactor = unit;\r\n      } else {\r\n        throw new Error(\"Invalid unit: \" + unit);\r\n      }\r\n  }\r\n\r\n  var encryption = null;\r\n  setCreationDate();\r\n  setFileId();\r\n\r\n  var getEncryptor = function(objectId) {\r\n    if (encryptionOptions !== null) {\r\n      return encryption.encryptor(objectId, 0);\r\n    }\r\n    return function(data) {\r\n      return data;\r\n    };\r\n  };\r\n\r\n  //---------------------------------------\r\n  // Public API\r\n\r\n  var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(\r\n    pageNumberOneBased\r\n  ) {\r\n    if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\r\n    }\r\n    var objId = pagesContext[pageNumberOneBased].objId;\r\n    return {\r\n      objId: objId,\r\n      pageNumber: pageNumberOneBased,\r\n      pageContext: pagesContext[pageNumberOneBased]\r\n    };\r\n  });\r\n\r\n  var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(\r\n    objId\r\n  ) {\r\n    if (isNaN(objId) || objId % 1 !== 0) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\r\n    }\r\n    for (var pageNumber in pagesContext) {\r\n      if (pagesContext[pageNumber].objId === objId) {\r\n        break;\r\n      }\r\n    }\r\n    return getPageInfo(pageNumber);\r\n  });\r\n\r\n  var getCurrentPageInfo = (API.__private__.getCurrentPageInfo = API.getCurrentPageInfo = function() {\r\n    return {\r\n      objId: pagesContext[currentPage].objId,\r\n      pageNumber: currentPage,\r\n      pageContext: pagesContext[currentPage]\r\n    };\r\n  });\r\n\r\n  /**\r\n   * Adds (and transfers the focus to) new page to the PDF document.\r\n   * @param format {String/Array} The format of the new page. Can be: <ul><li>a0 - a10</li><li>b0 - b10</li><li>c0 - c10</li><li>dl</li><li>letter</li><li>government-letter</li><li>legal</li><li>junior-legal</li><li>ledger</li><li>tabloid</li><li>credit-card</li></ul><br />\r\n   * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n   * @param orientation {string} Orientation of the new page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" (Default), \"l\").\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   *\r\n   * @memberof jsPDF#\r\n   * @name addPage\r\n   */\r\n  API.addPage = function() {\r\n    _addPage.apply(this, arguments);\r\n    return this;\r\n  };\r\n  /**\r\n   * Adds (and transfers the focus to) new page to the PDF document.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   *\r\n   * @memberof jsPDF#\r\n   * @name setPage\r\n   * @param {number} page Switch the active page to the page number specified (indexed starting at 1).\r\n   * @example\r\n   * doc = jsPDF()\r\n   * doc.addPage()\r\n   * doc.addPage()\r\n   * doc.text('I am on page 3', 10, 10)\r\n   * doc.setPage(1)\r\n   * doc.text('I am on page 1', 10, 10)\r\n   */\r\n  API.setPage = function() {\r\n    _setPage.apply(this, arguments);\r\n    setOutputDestination.call(this, pages[currentPage]);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * @name insertPage\r\n   * @memberof jsPDF#\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @param {Object} beforePage\r\n   * @returns {jsPDF}\r\n   */\r\n  API.insertPage = function(beforePage) {\r\n    this.addPage();\r\n    this.movePage(currentPage, beforePage);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * @name movePage\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @instance\r\n   * @param {number} targetPage\r\n   * @param {number} beforePage\r\n   * @returns {jsPDF}\r\n   */\r\n  API.movePage = function(targetPage, beforePage) {\r\n    var tmpPages, tmpPagesContext;\r\n    if (targetPage > beforePage) {\r\n      tmpPages = pages[targetPage];\r\n      tmpPagesContext = pagesContext[targetPage];\r\n      for (var i = targetPage; i > beforePage; i--) {\r\n        pages[i] = pages[i - 1];\r\n        pagesContext[i] = pagesContext[i - 1];\r\n      }\r\n      pages[beforePage] = tmpPages;\r\n      pagesContext[beforePage] = tmpPagesContext;\r\n      this.setPage(beforePage);\r\n    } else if (targetPage < beforePage) {\r\n      tmpPages = pages[targetPage];\r\n      tmpPagesContext = pagesContext[targetPage];\r\n      for (var j = targetPage; j < beforePage; j++) {\r\n        pages[j] = pages[j + 1];\r\n        pagesContext[j] = pagesContext[j + 1];\r\n      }\r\n      pages[beforePage] = tmpPages;\r\n      pagesContext[beforePage] = tmpPagesContext;\r\n      this.setPage(beforePage);\r\n    }\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Deletes a page from the PDF.\r\n   * @name deletePage\r\n   * @memberof jsPDF#\r\n   * @function\r\n   * @param {number} targetPage\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   */\r\n  API.deletePage = function() {\r\n    _deletePage.apply(this, arguments);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call.\r\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page.\r\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page.\r\n   * @param {Object} [options] - Collection of settings signaling how the text must be encoded.\r\n   * @param {string} [options.align=left] - The alignment of the text, possible values: left, center, right, justify.\r\n   * @param {string} [options.baseline=alphabetic] - Sets text baseline used when drawing the text, possible values: alphabetic, ideographic, bottom, top, middle, hanging\r\n   * @param {number|Matrix} [options.angle=0] - Rotate the text clockwise or counterclockwise. Expects the angle in degree.\r\n   * @param {number} [options.rotationDirection=1] - Direction of the rotation. 0 = clockwise, 1 = counterclockwise.\r\n   * @param {number} [options.charSpace=0] - The space between each letter.\r\n   * @param {number} [options.horizontalScale=1] - Horizontal scale of the text as a factor of the regular size.\r\n   * @param {number} [options.lineHeightFactor=1.15] - The lineheight of each line.\r\n   * @param {Object} [options.flags] - Flags for to8bitStream.\r\n   * @param {boolean} [options.flags.noBOM=true] - Don't add BOM to Unicode-text.\r\n   * @param {boolean} [options.flags.autoencode=true] - Autoencode the Text.\r\n   * @param {number} [options.maxWidth=0] - Split the text by given width, 0 = no split.\r\n   * @param {string} [options.renderingMode=fill] - Set how the text should be rendered, possible values: fill, stroke, fillThenStroke, invisible, fillAndAddForClipping, strokeAndAddPathForClipping, fillThenStrokeAndAddToPathForClipping, addToPathForClipping.\r\n   * @param {boolean} [options.isInputVisual] - Option for the BidiEngine\r\n   * @param {boolean} [options.isOutputVisual] - Option for the BidiEngine\r\n   * @param {boolean} [options.isInputRtl] - Option for the BidiEngine\r\n   * @param {boolean} [options.isOutputRtl] - Option for the BidiEngine\r\n   * @param {boolean} [options.isSymmetricSwapping] - Option for the BidiEngine\r\n   * @param {number|Matrix} transform If transform is a number the text will be rotated by this value around the anchor set by x and y.\r\n   *\r\n   * If it is a Matrix, this matrix gets directly applied to the text, which allows shearing\r\n   * effects etc.; the x and y offsets are then applied AFTER the coordinate system has been established by this\r\n   * matrix. This means passing a rotation matrix that is equivalent to some rotation angle will in general yield a\r\n   * DIFFERENT result. A matrix is only allowed in \"advanced\" API mode.\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name text\r\n   */\r\n  API.__private__.text = API.text = function(text, x, y, options, transform) {\r\n    /*\r\n     * Inserts something like this into PDF\r\n     *   BT\r\n     *    /F1 16 Tf  % Font name + size\r\n     *    16 TL % How many units down for next line in multiline text\r\n     *    0 g % color\r\n     *    28.35 813.54 Td % position\r\n     *    (line one) Tj\r\n     *    T* (line two) Tj\r\n     *    T* (line three) Tj\r\n     *   ET\r\n     */\r\n    options = options || {};\r\n    var scope = options.scope || this;\r\n    var payload, da, angle, align, charSpace, maxWidth, flags, horizontalScale;\r\n\r\n    // Pre-August-2012 the order of arguments was function(x, y, text, flags)\r\n    // in effort to make all calls have similar signature like\r\n    //   function(data, coordinates... , miscellaneous)\r\n    // this method had its args flipped.\r\n    // code below allows backward compatibility with old arg order.\r\n    if (\r\n      typeof text === \"number\" &&\r\n      typeof x === \"number\" &&\r\n      (typeof y === \"string\" || Array.isArray(y))\r\n    ) {\r\n      var tmp = y;\r\n      y = x;\r\n      x = text;\r\n      text = tmp;\r\n    }\r\n\r\n    var transformationMatrix;\r\n\r\n    if (arguments[3] instanceof Matrix === false) {\r\n      flags = arguments[3];\r\n      angle = arguments[4];\r\n      align = arguments[5];\r\n\r\n      if (typeof flags !== \"object\" || flags === null) {\r\n        if (typeof angle === \"string\") {\r\n          align = angle;\r\n          angle = null;\r\n        }\r\n        if (typeof flags === \"string\") {\r\n          align = flags;\r\n          flags = null;\r\n        }\r\n        if (typeof flags === \"number\") {\r\n          angle = flags;\r\n          flags = null;\r\n        }\r\n        options = {\r\n          flags: flags,\r\n          angle: angle,\r\n          align: align\r\n        };\r\n      }\r\n    } else {\r\n      advancedApiModeTrap(\r\n        \"The transform parameter of text() with a Matrix value\"\r\n      );\r\n      transformationMatrix = transform;\r\n    }\r\n\r\n    if (isNaN(x) || isNaN(y) || typeof text === \"undefined\" || text === null) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.text\");\r\n    }\r\n\r\n    if (text.length === 0) {\r\n      return scope;\r\n    }\r\n\r\n    var xtra = \"\";\r\n    var isHex = false;\r\n    var lineHeight =\r\n      typeof options.lineHeightFactor === \"number\"\r\n        ? options.lineHeightFactor\r\n        : lineHeightFactor;\r\n    var scaleFactor = scope.internal.scaleFactor;\r\n\r\n    function ESC(s) {\r\n      s = s.split(\"\\t\").join(Array(options.TabLen || 9).join(\" \"));\r\n      return pdfEscape(s, flags);\r\n    }\r\n\r\n    function transformTextToSpecialArray(text) {\r\n      //we don't want to destroy original text array, so cloning it\r\n      var sa = text.concat();\r\n      var da = [];\r\n      var len = sa.length;\r\n      var curDa;\r\n      //we do array.join('text that must not be PDFescaped\")\r\n      //thus, pdfEscape each component separately\r\n      while (len--) {\r\n        curDa = sa.shift();\r\n        if (typeof curDa === \"string\") {\r\n          da.push(curDa);\r\n        } else {\r\n          if (\r\n            Array.isArray(text) &&\r\n            (curDa.length === 1 ||\r\n              (curDa[1] === undefined && curDa[2] === undefined))\r\n          ) {\r\n            da.push(curDa[0]);\r\n          } else {\r\n            da.push([curDa[0], curDa[1], curDa[2]]);\r\n          }\r\n        }\r\n      }\r\n      return da;\r\n    }\r\n\r\n    function processTextByFunction(text, processingFunction) {\r\n      var result;\r\n      if (typeof text === \"string\") {\r\n        result = processingFunction(text)[0];\r\n      } else if (Array.isArray(text)) {\r\n        //we don't want to destroy original text array, so cloning it\r\n        var sa = text.concat();\r\n        var da = [];\r\n        var len = sa.length;\r\n        var curDa;\r\n        var tmpResult;\r\n        //we do array.join('text that must not be PDFescaped\")\r\n        //thus, pdfEscape each component separately\r\n        while (len--) {\r\n          curDa = sa.shift();\r\n          if (typeof curDa === \"string\") {\r\n            da.push(processingFunction(curDa)[0]);\r\n          } else if (Array.isArray(curDa) && typeof curDa[0] === \"string\") {\r\n            tmpResult = processingFunction(curDa[0], curDa[1], curDa[2]);\r\n            da.push([tmpResult[0], tmpResult[1], tmpResult[2]]);\r\n          }\r\n        }\r\n        result = da;\r\n      }\r\n      return result;\r\n    }\r\n\r\n    //Check if text is of type String\r\n    var textIsOfTypeString = false;\r\n    var tmpTextIsOfTypeString = true;\r\n\r\n    if (typeof text === \"string\") {\r\n      textIsOfTypeString = true;\r\n    } else if (Array.isArray(text)) {\r\n      //we don't want to destroy original text array, so cloning it\r\n      var sa = text.concat();\r\n      da = [];\r\n      var len = sa.length;\r\n      var curDa;\r\n      //we do array.join('text that must not be PDFescaped\")\r\n      //thus, pdfEscape each component separately\r\n      while (len--) {\r\n        curDa = sa.shift();\r\n        if (\r\n          typeof curDa !== \"string\" ||\r\n          (Array.isArray(curDa) && typeof curDa[0] !== \"string\")\r\n        ) {\r\n          tmpTextIsOfTypeString = false;\r\n        }\r\n      }\r\n      textIsOfTypeString = tmpTextIsOfTypeString;\r\n    }\r\n    if (textIsOfTypeString === false) {\r\n      throw new Error(\r\n        'Type of text must be string or Array. \"' +\r\n          text +\r\n          '\" is not recognized.'\r\n      );\r\n    }\r\n\r\n    //If there are any newlines in text, we assume\r\n    //the user wanted to print multiple lines, so break the\r\n    //text up into an array. If the text is already an array,\r\n    //we assume the user knows what they are doing.\r\n    //Convert text into an array anyway to simplify\r\n    //later code.\r\n\r\n    if (typeof text === \"string\") {\r\n      if (text.match(/[\\r?\\n]/)) {\r\n        text = text.split(/\\r\\n|\\r|\\n/g);\r\n      } else {\r\n        text = [text];\r\n      }\r\n    }\r\n\r\n    //baseline\r\n    var height = activeFontSize / scope.internal.scaleFactor;\r\n    var descent = height * (lineHeight - 1);\r\n\r\n    switch (options.baseline) {\r\n      case \"bottom\":\r\n        y -= descent;\r\n        break;\r\n      case \"top\":\r\n        y += height - descent;\r\n        break;\r\n      case \"hanging\":\r\n        y += height - 2 * descent;\r\n        break;\r\n      case \"middle\":\r\n        y += height / 2 - descent;\r\n        break;\r\n      case \"ideographic\":\r\n      case \"alphabetic\":\r\n      default:\r\n        // do nothing, everything is fine\r\n        break;\r\n    }\r\n\r\n    //multiline\r\n    maxWidth = options.maxWidth || 0;\r\n\r\n    if (maxWidth > 0) {\r\n      if (typeof text === \"string\") {\r\n        text = scope.splitTextToSize(text, maxWidth);\r\n      } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n        text = text.reduce(function(acc, textLine) {\r\n          return acc.concat(scope.splitTextToSize(textLine, maxWidth));\r\n        }, []);\r\n      }\r\n    }\r\n\r\n    //creating Payload-Object to make text byRef\r\n    payload = {\r\n      text: text,\r\n      x: x,\r\n      y: y,\r\n      options: options,\r\n      mutex: {\r\n        pdfEscape: pdfEscape,\r\n        activeFontKey: activeFontKey,\r\n        fonts: fonts,\r\n        activeFontSize: activeFontSize\r\n      }\r\n    };\r\n    events.publish(\"preProcessText\", payload);\r\n\r\n    text = payload.text;\r\n    options = payload.options;\r\n\r\n    //angle\r\n    angle = options.angle;\r\n\r\n    if (\r\n      transformationMatrix instanceof Matrix === false &&\r\n      angle &&\r\n      typeof angle === \"number\"\r\n    ) {\r\n      angle *= Math.PI / 180;\r\n\r\n      if (options.rotationDirection === 0) {\r\n        angle = -angle;\r\n      }\r\n\r\n      if (apiMode === ApiMode.ADVANCED) {\r\n        angle = -angle;\r\n      }\r\n\r\n      var c = Math.cos(angle);\r\n      var s = Math.sin(angle);\r\n      transformationMatrix = new Matrix(c, s, -s, c, 0, 0);\r\n    } else if (angle && angle instanceof Matrix) {\r\n      transformationMatrix = angle;\r\n    }\r\n\r\n    if (apiMode === ApiMode.ADVANCED && !transformationMatrix) {\r\n      transformationMatrix = identityMatrix;\r\n    }\r\n\r\n    //charSpace\r\n\r\n    charSpace = options.charSpace || activeCharSpace;\r\n\r\n    if (typeof charSpace !== \"undefined\") {\r\n      xtra += hpf(scale(charSpace)) + \" Tc\\n\";\r\n      this.setCharSpace(this.getCharSpace() || 0);\r\n    }\r\n\r\n    horizontalScale = options.horizontalScale;\r\n    if (typeof horizontalScale !== \"undefined\") {\r\n      xtra += hpf(horizontalScale * 100) + \" Tz\\n\";\r\n    }\r\n\r\n    //lang\r\n\r\n    var lang = options.lang;\r\n\r\n    if (lang) {\r\n      //    xtra += \"/Lang (\" + lang +\")\\n\";\r\n    }\r\n\r\n    //renderingMode\r\n    var renderingMode = -1;\r\n    var parmRenderingMode =\r\n      typeof options.renderingMode !== \"undefined\"\r\n        ? options.renderingMode\r\n        : options.stroke;\r\n    var pageContext = scope.internal.getCurrentPageInfo().pageContext;\r\n\r\n    switch (parmRenderingMode) {\r\n      case 0:\r\n      case false:\r\n      case \"fill\":\r\n        renderingMode = 0;\r\n        break;\r\n      case 1:\r\n      case true:\r\n      case \"stroke\":\r\n        renderingMode = 1;\r\n        break;\r\n      case 2:\r\n      case \"fillThenStroke\":\r\n        renderingMode = 2;\r\n        break;\r\n      case 3:\r\n      case \"invisible\":\r\n        renderingMode = 3;\r\n        break;\r\n      case 4:\r\n      case \"fillAndAddForClipping\":\r\n        renderingMode = 4;\r\n        break;\r\n      case 5:\r\n      case \"strokeAndAddPathForClipping\":\r\n        renderingMode = 5;\r\n        break;\r\n      case 6:\r\n      case \"fillThenStrokeAndAddToPathForClipping\":\r\n        renderingMode = 6;\r\n        break;\r\n      case 7:\r\n      case \"addToPathForClipping\":\r\n        renderingMode = 7;\r\n        break;\r\n    }\r\n\r\n    var usedRenderingMode =\r\n      typeof pageContext.usedRenderingMode !== \"undefined\"\r\n        ? pageContext.usedRenderingMode\r\n        : -1;\r\n\r\n    //if the coder wrote it explicitly to use a specific\r\n    //renderingMode, then use it\r\n    if (renderingMode !== -1) {\r\n      xtra += renderingMode + \" Tr\\n\";\r\n      //otherwise check if we used the rendering Mode already\r\n      //if so then set the rendering Mode...\r\n    } else if (usedRenderingMode !== -1) {\r\n      xtra += \"0 Tr\\n\";\r\n    }\r\n\r\n    if (renderingMode !== -1) {\r\n      pageContext.usedRenderingMode = renderingMode;\r\n    }\r\n\r\n    //align\r\n    align = options.align || \"left\";\r\n    var leading = activeFontSize * lineHeight;\r\n    var pageWidth = scope.internal.pageSize.getWidth();\r\n    var activeFont = fonts[activeFontKey];\r\n    charSpace = options.charSpace || activeCharSpace;\r\n    maxWidth = options.maxWidth || 0;\r\n\r\n    var lineWidths;\r\n    flags = Object.assign({ autoencode: true, noBOM: true }, options.flags);\r\n\r\n    var wordSpacingPerLine = [];\r\n    var findWidth = function(v) {\r\n      return (\r\n        (scope.getStringUnitWidth(v, {\r\n          font: activeFont,\r\n          charSpace: charSpace,\r\n          fontSize: activeFontSize,\r\n          doKerning: false\r\n        }) *\r\n          activeFontSize) /\r\n        scaleFactor\r\n      );\r\n    };\r\n    if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n      da = transformTextToSpecialArray(text);\r\n      var newY;\r\n      if (align !== \"left\") {\r\n        lineWidths = da.map(findWidth);\r\n      }\r\n      //The first line uses the \"main\" Td setting,\r\n      //and the subsequent lines are offset by the\r\n      //previous line's x coordinate.\r\n      var prevWidth = 0;\r\n      var newX;\r\n      if (align === \"right\") {\r\n        //The passed in x coordinate defines the\r\n        //rightmost point of the text.\r\n        x -= lineWidths[0];\r\n        text = [];\r\n        len = da.length;\r\n        for (var i = 0; i < len; i++) {\r\n          if (i === 0) {\r\n            newX = getHorizontalCoordinate(x);\r\n            newY = getVerticalCoordinate(y);\r\n          } else {\r\n            newX = scale(prevWidth - lineWidths[i]);\r\n            newY = -leading;\r\n          }\r\n          text.push([da[i], newX, newY]);\r\n          prevWidth = lineWidths[i];\r\n        }\r\n      } else if (align === \"center\") {\r\n        //The passed in x coordinate defines\r\n        //the center point.\r\n        x -= lineWidths[0] / 2;\r\n        text = [];\r\n        len = da.length;\r\n        for (var j = 0; j < len; j++) {\r\n          if (j === 0) {\r\n            newX = getHorizontalCoordinate(x);\r\n            newY = getVerticalCoordinate(y);\r\n          } else {\r\n            newX = scale((prevWidth - lineWidths[j]) / 2);\r\n            newY = -leading;\r\n          }\r\n          text.push([da[j], newX, newY]);\r\n          prevWidth = lineWidths[j];\r\n        }\r\n      } else if (align === \"left\") {\r\n        text = [];\r\n        len = da.length;\r\n        for (var h = 0; h < len; h++) {\r\n          text.push(da[h]);\r\n        }\r\n      } else if (align === \"justify\" && activeFont.encoding === \"Identity-H\") {\r\n        // when using unicode fonts, wordSpacePerLine does not apply\r\n        text = [];\r\n        len = da.length;\r\n        maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n        let backToStartX = 0;\r\n        for (var l = 0; l < len; l++) {\r\n          newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n          newX = l === 0 ? getHorizontalCoordinate(x) : backToStartX;\r\n          if (l < len - 1) {\r\n            let spacing = scale(\r\n              (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n            );\r\n            let words = da[l].split(\" \");\r\n            text.push([words[0] + \" \", newX, newY]);\r\n            backToStartX = 0; // distance to reset back to the left\r\n            for (let i = 1; i < words.length; i++) {\r\n              let shiftAmount =\r\n                (findWidth(words[i - 1] + \" \" + words[i]) -\r\n                  findWidth(words[i])) *\r\n                  scaleFactor +\r\n                spacing;\r\n              if (i == words.length - 1) text.push([words[i], shiftAmount, 0]);\r\n              else text.push([words[i] + \" \", shiftAmount, 0]);\r\n              backToStartX -= shiftAmount;\r\n            }\r\n          } else {\r\n            text.push([da[l], newX, newY]);\r\n          }\r\n        }\r\n        text.push([\"\", backToStartX, 0]);\r\n      } else if (align === \"justify\") {\r\n        text = [];\r\n        len = da.length;\r\n        maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n        for (var l = 0; l < len; l++) {\r\n          newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n          newX = l === 0 ? getHorizontalCoordinate(x) : 0;\r\n          if (l < len - 1) {\r\n            wordSpacingPerLine.push(\r\n              hpf(\r\n                scale(\r\n                  (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n                )\r\n              )\r\n            );\r\n          } else {\r\n            wordSpacingPerLine.push(0);\r\n          }\r\n          text.push([da[l], newX, newY]);\r\n        }\r\n      } else {\r\n        throw new Error(\r\n          'Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".'\r\n        );\r\n      }\r\n    }\r\n\r\n    //R2L\r\n    var doReversing = typeof options.R2L === \"boolean\" ? options.R2L : R2L;\r\n    if (doReversing === true) {\r\n      text = processTextByFunction(text, function(text, posX, posY) {\r\n        return [\r\n          text\r\n            .split(\"\")\r\n            .reverse()\r\n            .join(\"\"),\r\n          posX,\r\n          posY\r\n        ];\r\n      });\r\n    }\r\n\r\n    //creating Payload-Object to make text byRef\r\n    payload = {\r\n      text: text,\r\n      x: x,\r\n      y: y,\r\n      options: options,\r\n      mutex: {\r\n        pdfEscape: pdfEscape,\r\n        activeFontKey: activeFontKey,\r\n        fonts: fonts,\r\n        activeFontSize: activeFontSize\r\n      }\r\n    };\r\n    events.publish(\"postProcessText\", payload);\r\n\r\n    text = payload.text;\r\n    isHex = payload.mutex.isHex || false;\r\n\r\n    //Escaping\r\n    var activeFontEncoding = fonts[activeFontKey].encoding;\r\n\r\n    if (\r\n      activeFontEncoding === \"WinAnsiEncoding\" ||\r\n      activeFontEncoding === \"StandardEncoding\"\r\n    ) {\r\n      text = processTextByFunction(text, function(text, posX, posY) {\r\n        return [ESC(text), posX, posY];\r\n      });\r\n    }\r\n\r\n    da = transformTextToSpecialArray(text);\r\n\r\n    text = [];\r\n    var STRING = 0;\r\n    var ARRAY = 1;\r\n    var variant = Array.isArray(da[0]) ? ARRAY : STRING;\r\n    var posX;\r\n    var posY;\r\n    var content;\r\n    var wordSpacing = \"\";\r\n\r\n    var generatePosition = function(\r\n      parmPosX,\r\n      parmPosY,\r\n      parmTransformationMatrix\r\n    ) {\r\n      var position = \"\";\r\n      if (parmTransformationMatrix instanceof Matrix) {\r\n        // It is kind of more intuitive to apply a plain rotation around the text anchor set by x and y\r\n        // but when the user supplies an arbitrary transformation matrix, the x and y offsets should be applied\r\n        // in the coordinate system established by this matrix\r\n        if (typeof options.angle === \"number\") {\r\n          parmTransformationMatrix = matrixMult(\r\n            parmTransformationMatrix,\r\n            new Matrix(1, 0, 0, 1, parmPosX, parmPosY)\r\n          );\r\n        } else {\r\n          parmTransformationMatrix = matrixMult(\r\n            new Matrix(1, 0, 0, 1, parmPosX, parmPosY),\r\n            parmTransformationMatrix\r\n          );\r\n        }\r\n\r\n        if (apiMode === ApiMode.ADVANCED) {\r\n          parmTransformationMatrix = matrixMult(\r\n            new Matrix(1, 0, 0, -1, 0, 0),\r\n            parmTransformationMatrix\r\n          );\r\n        }\r\n\r\n        position = parmTransformationMatrix.join(\" \") + \" Tm\\n\";\r\n      } else {\r\n        position = hpf(parmPosX) + \" \" + hpf(parmPosY) + \" Td\\n\";\r\n      }\r\n      return position;\r\n    };\r\n\r\n    for (var lineIndex = 0; lineIndex < da.length; lineIndex++) {\r\n      wordSpacing = \"\";\r\n\r\n      switch (variant) {\r\n        case ARRAY:\r\n          content =\r\n            (isHex ? \"<\" : \"(\") + da[lineIndex][0] + (isHex ? \">\" : \")\");\r\n          posX = parseFloat(da[lineIndex][1]);\r\n          posY = parseFloat(da[lineIndex][2]);\r\n          break;\r\n        case STRING:\r\n          content = (isHex ? \"<\" : \"(\") + da[lineIndex] + (isHex ? \">\" : \")\");\r\n          posX = getHorizontalCoordinate(x);\r\n          posY = getVerticalCoordinate(y);\r\n          break;\r\n      }\r\n\r\n      if (\r\n        typeof wordSpacingPerLine !== \"undefined\" &&\r\n        typeof wordSpacingPerLine[lineIndex] !== \"undefined\"\r\n      ) {\r\n        wordSpacing = wordSpacingPerLine[lineIndex] + \" Tw\\n\";\r\n      }\r\n\r\n      if (lineIndex === 0) {\r\n        text.push(\r\n          wordSpacing +\r\n            generatePosition(posX, posY, transformationMatrix) +\r\n            content\r\n        );\r\n      } else if (variant === STRING) {\r\n        text.push(wordSpacing + content);\r\n      } else if (variant === ARRAY) {\r\n        text.push(\r\n          wordSpacing +\r\n            generatePosition(posX, posY, transformationMatrix) +\r\n            content\r\n        );\r\n      }\r\n    }\r\n\r\n    text = variant === STRING ? text.join(\" Tj\\nT* \") : text.join(\" Tj\\n\");\r\n    text += \" Tj\\n\";\r\n\r\n    var result = \"BT\\n/\";\r\n    result += activeFontKey + \" \" + activeFontSize + \" Tf\\n\"; // font face, style, size\r\n    result += hpf(activeFontSize * lineHeight) + \" TL\\n\"; // line spacing\r\n    result += textColor + \"\\n\";\r\n    result += xtra;\r\n    result += text;\r\n    result += \"ET\";\r\n\r\n    out(result);\r\n    usedFonts[activeFontKey] = true;\r\n    return scope;\r\n  };\r\n\r\n  // PDF supports these path painting and clip path operators:\r\n  //\r\n  // S - stroke\r\n  // s - close/stroke\r\n  // f (F) - fill non-zero\r\n  // f* - fill evenodd\r\n  // B - fill stroke nonzero\r\n  // B* - fill stroke evenodd\r\n  // b - close fill stroke nonzero\r\n  // b* - close fill stroke evenodd\r\n  // n - nothing (consume path)\r\n  // W - clip nonzero\r\n  // W* - clip evenodd\r\n  //\r\n  // In order to keep the API small, we omit the close-and-fill/stroke operators and provide a separate close()\r\n  // method.\r\n  /**\r\n   *\r\n   * @name clip\r\n   * @function\r\n   * @instance\r\n   * @param {string} rule Only possible value is 'evenodd'\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @description All .clip() after calling drawing ops with a style argument of null.\r\n   */\r\n  var clip = (API.__private__.clip = API.clip = function(rule) {\r\n    // Call .clip() after calling drawing ops with a style argument of null\r\n    // W is the PDF clipping op\r\n    if (\"evenodd\" === rule) {\r\n      out(\"W*\");\r\n    } else {\r\n      out(\"W\");\r\n    }\r\n    return this;\r\n  });\r\n\r\n  /**\r\n   * @name clipEvenOdd\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @description Modify the current clip path by intersecting it with the current path using the even-odd rule. Note\r\n   * that this will NOT consume the current path. In order to only use this path for clipping call\r\n   * {@link API.discardPath} afterwards.\r\n   */\r\n  API.clipEvenOdd = function() {\r\n    return clip(\"evenodd\");\r\n  };\r\n\r\n  /**\r\n   * Consumes the current path without any effect. Mainly used in combination with {@link clip} or\r\n   * {@link clipEvenOdd}. The PDF \"n\" operator.\r\n   * @name discardPath\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  API.__private__.discardPath = API.discardPath = function() {\r\n    out(\"n\");\r\n    return this;\r\n  };\r\n\r\n  var isValidStyle = (API.__private__.isValidStyle = function(style) {\r\n    var validStyleVariants = [\r\n      undefined,\r\n      null,\r\n      \"S\",\r\n      \"D\",\r\n      \"F\",\r\n      \"DF\",\r\n      \"FD\",\r\n      \"f\",\r\n      \"f*\",\r\n      \"B\",\r\n      \"B*\",\r\n      \"n\"\r\n    ];\r\n    var result = false;\r\n    if (validStyleVariants.indexOf(style) !== -1) {\r\n      result = true;\r\n    }\r\n    return result;\r\n  });\r\n\r\n  API.__private__.setDefaultPathOperation = API.setDefaultPathOperation = function(\r\n    operator\r\n  ) {\r\n    if (isValidStyle(operator)) {\r\n      defaultPathOperation = operator;\r\n    }\r\n    return this;\r\n  };\r\n\r\n  var getStyle = (API.__private__.getStyle = API.getStyle = function(style) {\r\n    // see path-painting operators in PDF spec\r\n    var op = defaultPathOperation; // stroke\r\n\r\n    switch (style) {\r\n      case \"D\":\r\n      case \"S\":\r\n        op = \"S\"; // stroke\r\n        break;\r\n      case \"F\":\r\n        op = \"f\"; // fill\r\n        break;\r\n      case \"FD\":\r\n      case \"DF\":\r\n        op = \"B\";\r\n        break;\r\n      case \"f\":\r\n      case \"f*\":\r\n      case \"B\":\r\n      case \"B*\":\r\n        /*\r\n               Allow direct use of these PDF path-painting operators:\r\n               - f    fill using nonzero winding number rule\r\n               - f*    fill using even-odd rule\r\n               - B    fill then stroke with fill using non-zero winding number rule\r\n               - B*    fill then stroke with fill using even-odd rule\r\n               */\r\n        op = style;\r\n        break;\r\n    }\r\n    return op;\r\n  });\r\n\r\n  /**\r\n   * Close the current path. The PDF \"h\" operator.\r\n   * @name close\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  var close = (API.close = function() {\r\n    out(\"h\");\r\n    return this;\r\n  });\r\n\r\n  /**\r\n   * Stroke the path. The PDF \"S\" operator.\r\n   * @name stroke\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  API.stroke = function() {\r\n    out(\"S\");\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Fill the current path using the nonzero winding number rule. If a pattern is provided, the path will be filled\r\n   * with this pattern, otherwise with the current fill color. Equivalent to the PDF \"f\" operator.\r\n   * @name fill\r\n   * @function\r\n   * @instance\r\n   * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  API.fill = function(pattern) {\r\n    fillWithOptionalPattern(\"f\", pattern);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Fill the current path using the even-odd rule. The PDF f* operator.\r\n   * @see API.fill\r\n   * @name fillEvenOdd\r\n   * @function\r\n   * @instance\r\n   * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  API.fillEvenOdd = function(pattern) {\r\n    fillWithOptionalPattern(\"f*\", pattern);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Fill using the nonzero winding number rule and then stroke the current Path. The PDF \"B\" operator.\r\n   * @see API.fill\r\n   * @name fillStroke\r\n   * @function\r\n   * @instance\r\n   * @param {PatternData=} pattern If provided the path will be stroked with this pattern\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  API.fillStroke = function(pattern) {\r\n    fillWithOptionalPattern(\"B\", pattern);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Fill using the even-odd rule and then stroke the current Path. The PDF \"B\" operator.\r\n   * @see API.fill\r\n   * @name fillStrokeEvenOdd\r\n   * @function\r\n   * @instance\r\n   * @param {PatternData=} pattern If provided the path will be fill-stroked with this pattern\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  API.fillStrokeEvenOdd = function(pattern) {\r\n    fillWithOptionalPattern(\"B*\", pattern);\r\n    return this;\r\n  };\r\n\r\n  var fillWithOptionalPattern = function(style, pattern) {\r\n    if (typeof pattern === \"object\") {\r\n      fillWithPattern(pattern, style);\r\n    } else {\r\n      out(style);\r\n    }\r\n  };\r\n\r\n  var putStyle = function(style) {\r\n    if (\r\n      style === null ||\r\n      (apiMode === ApiMode.ADVANCED && style === undefined)\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    style = getStyle(style);\r\n\r\n    // stroking / filling / both the path\r\n    out(style);\r\n  };\r\n\r\n  function cloneTilingPattern(patternKey, boundingBox, xStep, yStep, matrix) {\r\n    var clone = new TilingPattern(\r\n      boundingBox || this.boundingBox,\r\n      xStep || this.xStep,\r\n      yStep || this.yStep,\r\n      this.gState,\r\n      matrix || this.matrix\r\n    );\r\n    clone.stream = this.stream;\r\n    var key = patternKey + \"$$\" + this.cloneIndex++ + \"$$\";\r\n    addPattern(key, clone);\r\n    return clone;\r\n  }\r\n\r\n  var fillWithPattern = function(patternData, style) {\r\n    var patternId = patternMap[patternData.key];\r\n    var pattern = patterns[patternId];\r\n\r\n    if (pattern instanceof ShadingPattern) {\r\n      out(\"q\");\r\n\r\n      out(clipRuleFromStyle(style));\r\n\r\n      if (pattern.gState) {\r\n        API.setGState(pattern.gState);\r\n      }\r\n      out(patternData.matrix.toString() + \" cm\");\r\n      out(\"/\" + patternId + \" sh\");\r\n      out(\"Q\");\r\n    } else if (pattern instanceof TilingPattern) {\r\n      // pdf draws patterns starting at the bottom left corner and they are not affected by the global transformation,\r\n      // so we must flip them\r\n      var matrix = new Matrix(1, 0, 0, -1, 0, getPageHeight());\r\n\r\n      if (patternData.matrix) {\r\n        matrix = matrix.multiply(patternData.matrix || identityMatrix);\r\n        // we cannot apply a matrix to the pattern on use so we must abuse the pattern matrix and create new instances\r\n        // for each use\r\n        patternId = cloneTilingPattern.call(\r\n          pattern,\r\n          patternData.key,\r\n          patternData.boundingBox,\r\n          patternData.xStep,\r\n          patternData.yStep,\r\n          matrix\r\n        ).id;\r\n      }\r\n\r\n      out(\"q\");\r\n      out(\"/Pattern cs\");\r\n      out(\"/\" + patternId + \" scn\");\r\n\r\n      if (pattern.gState) {\r\n        API.setGState(pattern.gState);\r\n      }\r\n\r\n      out(style);\r\n      out(\"Q\");\r\n    }\r\n  };\r\n\r\n  var clipRuleFromStyle = function(style) {\r\n    switch (style) {\r\n      case \"f\":\r\n      case \"F\":\r\n        return \"W n\";\r\n      case \"f*\":\r\n        return \"W* n\";\r\n      case \"B\":\r\n        return \"W S\";\r\n      case \"B*\":\r\n        return \"W* S\";\r\n\r\n      // these two are for compatibility reasons (in the past, calling any primitive method with a shading pattern\r\n      // and \"n\"/\"S\" as style would still fill/fill and stroke the path)\r\n      case \"S\":\r\n        return \"W S\";\r\n      case \"n\":\r\n        return \"W n\";\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Begin a new subpath by moving the current point to coordinates (x, y). The PDF \"m\" operator.\r\n   * @param {number} x\r\n   * @param {number} y\r\n   * @name moveTo\r\n   * @function\r\n   * @instance\r\n   * @memberof jsPDF#\r\n   * @returns {jsPDF}\r\n   */\r\n  var moveTo = (API.moveTo = function(x, y) {\r\n    out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" m\");\r\n    return this;\r\n  });\r\n\r\n  /**\r\n   * Append a straight line segment from the current point to the point (x, y). The PDF \"l\" operator.\r\n   * @param {number} x\r\n   * @param {number} y\r\n   * @memberof jsPDF#\r\n   * @name lineTo\r\n   * @function\r\n   * @instance\r\n   * @memberof jsPDF#\r\n   * @returns {jsPDF}\r\n   */\r\n  var lineTo = (API.lineTo = function(x, y) {\r\n    out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" l\");\r\n    return this;\r\n  });\r\n\r\n  /**\r\n   * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point\r\n   * (x3, y3), using (x1, y1) and (x2, y2) as Bézier control points. The new current point shall be (x3, x3).\r\n   * @param {number} x1\r\n   * @param {number} y1\r\n   * @param {number} x2\r\n   * @param {number} y2\r\n   * @param {number} x3\r\n   * @param {number} y3\r\n   * @memberof jsPDF#\r\n   * @name curveTo\r\n   * @function\r\n   * @instance\r\n   * @memberof jsPDF#\r\n   * @returns {jsPDF}\r\n   */\r\n  var curveTo = (API.curveTo = function(x1, y1, x2, y2, x3, y3) {\r\n    out(\r\n      [\r\n        hpf(scale(x1)),\r\n        hpf(transformScaleY(y1)),\r\n        hpf(scale(x2)),\r\n        hpf(transformScaleY(y2)),\r\n        hpf(scale(x3)),\r\n        hpf(transformScaleY(y3)),\r\n        \"c\"\r\n      ].join(\" \")\r\n    );\r\n    return this;\r\n  });\r\n\r\n  /**\r\n   * Draw a line on the current page.\r\n   *\r\n   * @name line\r\n   * @function\r\n   * @instance\r\n   * @param {number} x1\r\n   * @param {number} y1\r\n   * @param {number} x2\r\n   * @param {number} y2\r\n   * @param {string} style A string specifying the painting style or null.  Valid styles include: 'S' [default] - stroke, 'F' - fill,  and 'DF' (or 'FD') -  fill then stroke. A null value postpones setting the style so that a shape may be composed using multiple method calls. The last drawing method call used to define the shape should not have a null style argument. default: 'S'\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   */\r\n  API.__private__.line = API.line = function(x1, y1, x2, y2, style) {\r\n    if (\r\n      isNaN(x1) ||\r\n      isNaN(y1) ||\r\n      isNaN(x2) ||\r\n      isNaN(y2) ||\r\n      !isValidStyle(style)\r\n    ) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.line\");\r\n    }\r\n    if (apiMode === ApiMode.COMPAT) {\r\n      return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1], style || \"S\");\r\n    } else {\r\n      return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1]).stroke();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * @typedef {Object} PatternData\r\n   * {Matrix|undefined} matrix\r\n   * {Number|undefined} xStep\r\n   * {Number|undefined} yStep\r\n   * {Array.<Number>|undefined} boundingBox\r\n   */\r\n\r\n  /**\r\n   * Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates.\r\n   * All data points in `lines` are relative to last line origin.\r\n   * `x`, `y` become x1,y1 for first line / curve in the set.\r\n   * For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point.\r\n   * For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1.\r\n   *\r\n   * @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, [1,1], 'F', false) // line, line, bezier curve, line\r\n   * @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves).\r\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction.\r\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n   * 'S' [default] - stroke,\r\n   * 'F' - fill,\r\n   * and 'DF' (or 'FD') -  fill then stroke.\r\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n   *\r\n   * In \"advanced\" API mode this parameter is deprecated.\r\n   * @param {Boolean=} closed If true, the path is closed with a straight line from the end of the last curve to the starting point.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name lines\r\n   */\r\n  API.__private__.lines = API.lines = function(\r\n    lines,\r\n    x,\r\n    y,\r\n    scale,\r\n    style,\r\n    closed\r\n  ) {\r\n    var scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4, tmp;\r\n\r\n    // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style)\r\n    // in effort to make all calls have similar signature like\r\n    //   function(content, coordinateX, coordinateY , miscellaneous)\r\n    // this method had its args flipped.\r\n    // code below allows backward compatibility with old arg order.\r\n    if (typeof lines === \"number\") {\r\n      tmp = y;\r\n      y = x;\r\n      x = lines;\r\n      lines = tmp;\r\n    }\r\n\r\n    scale = scale || [1, 1];\r\n    closed = closed || false;\r\n\r\n    if (\r\n      isNaN(x) ||\r\n      isNaN(y) ||\r\n      !Array.isArray(lines) ||\r\n      !Array.isArray(scale) ||\r\n      !isValidStyle(style) ||\r\n      typeof closed !== \"boolean\"\r\n    ) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.lines\");\r\n    }\r\n\r\n    // starting point\r\n    moveTo(x, y);\r\n\r\n    scalex = scale[0];\r\n    scaley = scale[1];\r\n    l = lines.length;\r\n    //, x2, y2 // bezier only. In page default measurement \"units\", *after* scaling\r\n    //, x3, y3 // bezier only. In page default measurement \"units\", *after* scaling\r\n    // ending point for all, lines and bezier. . In page default measurement \"units\", *after* scaling\r\n    x4 = x; // last / ending point = starting point for first item.\r\n    y4 = y; // last / ending point = starting point for first item.\r\n\r\n    for (i = 0; i < l; i++) {\r\n      leg = lines[i];\r\n      if (leg.length === 2) {\r\n        // simple line\r\n        x4 = leg[0] * scalex + x4; // here last x4 was prior ending point\r\n        y4 = leg[1] * scaley + y4; // here last y4 was prior ending point\r\n        lineTo(x4, y4);\r\n      } else {\r\n        // bezier curve\r\n        x2 = leg[0] * scalex + x4; // here last x4 is prior ending point\r\n        y2 = leg[1] * scaley + y4; // here last y4 is prior ending point\r\n        x3 = leg[2] * scalex + x4; // here last x4 is prior ending point\r\n        y3 = leg[3] * scaley + y4; // here last y4 is prior ending point\r\n        x4 = leg[4] * scalex + x4; // here last x4 was prior ending point\r\n        y4 = leg[5] * scaley + y4; // here last y4 was prior ending point\r\n        curveTo(x2, y2, x3, y3, x4, y4);\r\n      }\r\n    }\r\n\r\n    if (closed) {\r\n      close();\r\n    }\r\n\r\n    putStyle(style);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Similar to {@link API.lines} but all coordinates are interpreted as absolute coordinates instead of relative.\r\n   * @param {Array<Object>} lines An array of {op: operator, c: coordinates} object, where op is one of \"m\" (move to), \"l\" (line to)\r\n   * \"c\" (cubic bezier curve) and \"h\" (close (sub)path)). c is an array of coordinates. \"m\" and \"l\" expect two, \"c\"\r\n   * six and \"h\" an empty array (or undefined).\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name path\r\n   */\r\n  API.path = function(lines) {\r\n    for (var i = 0; i < lines.length; i++) {\r\n      var leg = lines[i];\r\n      var coords = leg.c;\r\n      switch (leg.op) {\r\n        case \"m\":\r\n          moveTo(coords[0], coords[1]);\r\n          break;\r\n        case \"l\":\r\n          lineTo(coords[0], coords[1]);\r\n          break;\r\n        case \"c\":\r\n          curveTo.apply(this, coords);\r\n          break;\r\n        case \"h\":\r\n          close();\r\n          break;\r\n      }\r\n    }\r\n\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Adds a rectangle to PDF.\r\n   *\r\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {number} w Width (in units declared at inception of PDF document)\r\n   * @param {number} h Height (in units declared at inception of PDF document)\r\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n   * 'S' [default] - stroke,\r\n   * 'F' - fill,\r\n   * and 'DF' (or 'FD') -  fill then stroke.\r\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n   *\r\n   * In \"advanced\" API mode this parameter is deprecated.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name rect\r\n   */\r\n  API.__private__.rect = API.rect = function(x, y, w, h, style) {\r\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h) || !isValidStyle(style)) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.rect\");\r\n    }\r\n    if (apiMode === ApiMode.COMPAT) {\r\n      h = -h;\r\n    }\r\n\r\n    out(\r\n      [\r\n        hpf(scale(x)),\r\n        hpf(transformScaleY(y)),\r\n        hpf(scale(w)),\r\n        hpf(scale(h)),\r\n        \"re\"\r\n      ].join(\" \")\r\n    );\r\n\r\n    putStyle(style);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Adds a triangle to PDF.\r\n   *\r\n   * @param {number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n   * 'S' [default] - stroke,\r\n   * 'F' - fill,\r\n   * and 'DF' (or 'FD') -  fill then stroke.\r\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n   *\r\n   * In \"advanced\" API mode this parameter is deprecated.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name triangle\r\n   */\r\n  API.__private__.triangle = API.triangle = function(\r\n    x1,\r\n    y1,\r\n    x2,\r\n    y2,\r\n    x3,\r\n    y3,\r\n    style\r\n  ) {\r\n    if (\r\n      isNaN(x1) ||\r\n      isNaN(y1) ||\r\n      isNaN(x2) ||\r\n      isNaN(y2) ||\r\n      isNaN(x3) ||\r\n      isNaN(y3) ||\r\n      !isValidStyle(style)\r\n    ) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\r\n    }\r\n    this.lines(\r\n      [\r\n        [x2 - x1, y2 - y1], // vector to point 2\r\n        [x3 - x2, y3 - y2], // vector to point 3\r\n        [x1 - x3, y1 - y3] // closing vector back to point 1\r\n      ],\r\n      x1,\r\n      y1, // start of path\r\n      [1, 1],\r\n      style,\r\n      true\r\n    );\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Adds a rectangle with rounded corners to PDF.\r\n   *\r\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {number} w Width (in units declared at inception of PDF document)\r\n   * @param {number} h Height (in units declared at inception of PDF document)\r\n   * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n   * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n   * 'S' [default] - stroke,\r\n   * 'F' - fill,\r\n   * and 'DF' (or 'FD') -  fill then stroke.\r\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n   *\r\n   * In \"advanced\" API mode this parameter is deprecated.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name roundedRect\r\n   */\r\n  API.__private__.roundedRect = API.roundedRect = function(\r\n    x,\r\n    y,\r\n    w,\r\n    h,\r\n    rx,\r\n    ry,\r\n    style\r\n  ) {\r\n    if (\r\n      isNaN(x) ||\r\n      isNaN(y) ||\r\n      isNaN(w) ||\r\n      isNaN(h) ||\r\n      isNaN(rx) ||\r\n      isNaN(ry) ||\r\n      !isValidStyle(style)\r\n    ) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\r\n    }\r\n    var MyArc = (4 / 3) * (Math.SQRT2 - 1);\r\n\r\n    rx = Math.min(rx, w * 0.5);\r\n    ry = Math.min(ry, h * 0.5);\r\n\r\n    this.lines(\r\n      [\r\n        [w - 2 * rx, 0],\r\n        [rx * MyArc, 0, rx, ry - ry * MyArc, rx, ry],\r\n        [0, h - 2 * ry],\r\n        [0, ry * MyArc, -(rx * MyArc), ry, -rx, ry],\r\n        [-w + 2 * rx, 0],\r\n        [-(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry],\r\n        [0, -h + 2 * ry],\r\n        [0, -(ry * MyArc), rx * MyArc, -ry, rx, -ry]\r\n      ],\r\n      x + rx,\r\n      y, // start of path\r\n      [1, 1],\r\n      style,\r\n      true\r\n    );\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Adds an ellipse to PDF.\r\n   *\r\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n   * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n   * 'S' [default] - stroke,\r\n   * 'F' - fill,\r\n   * and 'DF' (or 'FD') -  fill then stroke.\r\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n   *\r\n   * In \"advanced\" API mode this parameter is deprecated.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name ellipse\r\n   */\r\n  API.__private__.ellipse = API.ellipse = function(x, y, rx, ry, style) {\r\n    if (\r\n      isNaN(x) ||\r\n      isNaN(y) ||\r\n      isNaN(rx) ||\r\n      isNaN(ry) ||\r\n      !isValidStyle(style)\r\n    ) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\r\n    }\r\n    var lx = (4 / 3) * (Math.SQRT2 - 1) * rx,\r\n      ly = (4 / 3) * (Math.SQRT2 - 1) * ry;\r\n\r\n    moveTo(x + rx, y);\r\n    curveTo(x + rx, y - ly, x + lx, y - ry, x, y - ry);\r\n    curveTo(x - lx, y - ry, x - rx, y - ly, x - rx, y);\r\n    curveTo(x - rx, y + ly, x - lx, y + ry, x, y + ry);\r\n    curveTo(x + lx, y + ry, x + rx, y + ly, x + rx, y);\r\n\r\n    putStyle(style);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Adds an circle to PDF.\r\n   *\r\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n   * @param {number} r Radius (in units declared at inception of PDF document)\r\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n   * 'S' [default] - stroke,\r\n   * 'F' - fill,\r\n   * and 'DF' (or 'FD') -  fill then stroke.\r\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n   *\r\n   * In \"advanced\" API mode this parameter is deprecated.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name circle\r\n   */\r\n  API.__private__.circle = API.circle = function(x, y, r, style) {\r\n    if (isNaN(x) || isNaN(y) || isNaN(r) || !isValidStyle(style)) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.circle\");\r\n    }\r\n    return this.ellipse(x, y, r, r, style);\r\n  };\r\n\r\n  /**\r\n   * Sets text font face, variant for upcoming text elements.\r\n   * See output of jsPDF.getFontList() for possible font names, styles.\r\n   *\r\n   * @param {string} fontName Font name or family. Example: \"times\".\r\n   * @param {string} fontStyle Font style or variant. Example: \"italic\".\r\n   * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setFont\r\n   */\r\n  API.setFont = function(fontName, fontStyle, fontWeight) {\r\n    if (fontWeight) {\r\n      fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n    }\r\n    activeFontKey = getFont(fontName, fontStyle, {\r\n      disableWarning: false\r\n    });\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Gets text font face, variant for upcoming text elements.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {Object}\r\n   * @memberof jsPDF#\r\n   * @name getFont\r\n   */\r\n  var getFontEntry = (API.__private__.getFont = API.getFont = function() {\r\n    return fonts[getFont.apply(API, arguments)];\r\n  });\r\n\r\n  /**\r\n   * Returns an object - a tree of fontName to fontStyle relationships available to\r\n   * active PDF document.\r\n   *\r\n   * @public\r\n   * @function\r\n   * @instance\r\n   * @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... }\r\n   * @memberof jsPDF#\r\n   * @name getFontList\r\n   */\r\n  API.__private__.getFontList = API.getFontList = function() {\r\n    var list = {},\r\n      fontName,\r\n      fontStyle;\r\n\r\n    for (fontName in fontmap) {\r\n      if (fontmap.hasOwnProperty(fontName)) {\r\n        list[fontName] = [];\r\n        for (fontStyle in fontmap[fontName]) {\r\n          if (fontmap[fontName].hasOwnProperty(fontStyle)) {\r\n            list[fontName].push(fontStyle);\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return list;\r\n  };\r\n\r\n  /**\r\n   * Add a custom font to the current instance.\r\n   *\r\n   * @param {string} postScriptName PDF specification full name for the font.\r\n   * @param {string} id PDF-document-instance-specific label assinged to the font.\r\n   * @param {string} fontStyle Style of the Font.\r\n   * @param {number | string} fontWeight Weight of the Font.\r\n   * @param {Object} encoding Encoding_name-to-Font_metrics_object mapping.\r\n   * @function\r\n   * @instance\r\n   * @memberof jsPDF#\r\n   * @name addFont\r\n   * @returns {string} fontId\r\n   */\r\n  API.addFont = function(\r\n    postScriptName,\r\n    fontName,\r\n    fontStyle,\r\n    fontWeight,\r\n    encoding\r\n  ) {\r\n    var encodingOptions = [\r\n      \"StandardEncoding\",\r\n      \"MacRomanEncoding\",\r\n      \"Identity-H\",\r\n      \"WinAnsiEncoding\"\r\n    ];\r\n    if (arguments[3] && encodingOptions.indexOf(arguments[3]) !== -1) {\r\n      //IE 11 fix\r\n      encoding = arguments[3];\r\n    } else if (arguments[3] && encodingOptions.indexOf(arguments[3]) == -1) {\r\n      fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n    }\r\n    encoding = encoding || \"Identity-H\";\r\n    return addFont.call(this, postScriptName, fontName, fontStyle, encoding);\r\n  };\r\n\r\n  var lineWidth = options.lineWidth || 0.200025; // 2mm\r\n  /**\r\n   * Gets the line width, default: 0.200025.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {number} lineWidth\r\n   * @memberof jsPDF#\r\n   * @name getLineWidth\r\n   */\r\n  var getLineWidth = (API.__private__.getLineWidth = API.getLineWidth = function() {\r\n    return lineWidth;\r\n  });\r\n\r\n  /**\r\n   * Sets line width for upcoming lines.\r\n   *\r\n   * @param {number} width Line width (in units declared at inception of PDF document).\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setLineWidth\r\n   */\r\n  var setLineWidth = (API.__private__.setLineWidth = API.setLineWidth = function(\r\n    width\r\n  ) {\r\n    lineWidth = width;\r\n    out(hpf(scale(width)) + \" w\");\r\n    return this;\r\n  });\r\n\r\n  /**\r\n   * Sets the dash pattern for upcoming lines.\r\n   *\r\n   * To reset the settings simply call the method without any parameters.\r\n   * @param {Array<number>} dashArray An array containing 0-2 numbers. The first number sets the length of the\r\n   * dashes, the second number the length of the gaps. If the second number is missing, the gaps are considered\r\n   * to be as long as the dashes. An empty array means solid, unbroken lines.\r\n   * @param {number} dashPhase The phase lines start with.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setLineDashPattern\r\n   */\r\n  API.__private__.setLineDash = jsPDF.API.setLineDash = jsPDF.API.setLineDashPattern = function(\r\n    dashArray,\r\n    dashPhase\r\n  ) {\r\n    dashArray = dashArray || [];\r\n    dashPhase = dashPhase || 0;\r\n\r\n    if (isNaN(dashPhase) || !Array.isArray(dashArray)) {\r\n      throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\r\n    }\r\n\r\n    dashArray = dashArray\r\n      .map(function(x) {\r\n        return hpf(scale(x));\r\n      })\r\n      .join(\" \");\r\n    dashPhase = hpf(scale(dashPhase));\r\n\r\n    out(\"[\" + dashArray + \"] \" + dashPhase + \" d\");\r\n    return this;\r\n  };\r\n\r\n  var lineHeightFactor;\r\n\r\n  var getLineHeight = (API.__private__.getLineHeight = API.getLineHeight = function() {\r\n    return activeFontSize * lineHeightFactor;\r\n  });\r\n\r\n  API.__private__.getLineHeight = API.getLineHeight = function() {\r\n    return activeFontSize * lineHeightFactor;\r\n  };\r\n\r\n  /**\r\n   * Sets the LineHeightFactor of proportion.\r\n   *\r\n   * @param {number} value LineHeightFactor value. Default: 1.15.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setLineHeightFactor\r\n   */\r\n  var setLineHeightFactor = (API.__private__.setLineHeightFactor = API.setLineHeightFactor = function(\r\n    value\r\n  ) {\r\n    value = value || 1.15;\r\n    if (typeof value === \"number\") {\r\n      lineHeightFactor = value;\r\n    }\r\n    return this;\r\n  });\r\n\r\n  /**\r\n   * Gets the LineHeightFactor, default: 1.15.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {number} lineHeightFactor\r\n   * @memberof jsPDF#\r\n   * @name getLineHeightFactor\r\n   */\r\n  var getLineHeightFactor = (API.__private__.getLineHeightFactor = API.getLineHeightFactor = function() {\r\n    return lineHeightFactor;\r\n  });\r\n\r\n  setLineHeightFactor(options.lineHeight);\r\n\r\n  var getHorizontalCoordinate = (API.__private__.getHorizontalCoordinate = function(\r\n    value\r\n  ) {\r\n    return scale(value);\r\n  });\r\n\r\n  var getVerticalCoordinate = (API.__private__.getVerticalCoordinate = function(\r\n    value\r\n  ) {\r\n    if (apiMode === ApiMode.ADVANCED) {\r\n      return value;\r\n    } else {\r\n      var pageHeight =\r\n        pagesContext[currentPage].mediaBox.topRightY -\r\n        pagesContext[currentPage].mediaBox.bottomLeftY;\r\n      return pageHeight - scale(value);\r\n    }\r\n  });\r\n\r\n  var getHorizontalCoordinateString = (API.__private__.getHorizontalCoordinateString = API.getHorizontalCoordinateString = function(\r\n    value\r\n  ) {\r\n    return hpf(getHorizontalCoordinate(value));\r\n  });\r\n\r\n  var getVerticalCoordinateString = (API.__private__.getVerticalCoordinateString = API.getVerticalCoordinateString = function(\r\n    value\r\n  ) {\r\n    return hpf(getVerticalCoordinate(value));\r\n  });\r\n\r\n  var strokeColor = options.strokeColor || \"0 G\";\r\n\r\n  /**\r\n   *  Gets the stroke color for upcoming elements.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {string} colorAsHex\r\n   * @memberof jsPDF#\r\n   * @name getDrawColor\r\n   */\r\n  API.__private__.getStrokeColor = API.getDrawColor = function() {\r\n    return decodeColorString(strokeColor);\r\n  };\r\n\r\n  /**\r\n   * Sets the stroke color for upcoming elements.\r\n   *\r\n   * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n   * color space is implied.\r\n   *\r\n   * When only ch1 is given, \"Gray\" color space is implied and it\r\n   * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n   * if values are communicated as String types, or in range from 0 (black)\r\n   * to 255 (white) if communicated as Number type.\r\n   * The RGB-like 0-255 range is provided for backward compatibility.\r\n   *\r\n   * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n   * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n   * (max intensity) if values are communicated as String types, or\r\n   * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n   * as Number types.\r\n   * The RGB-like 0-255 range is provided for backward compatibility.\r\n   *\r\n   * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n   * value must be a in the range from 0.00 (0% concentration) to to\r\n   * 1.00 (100% concentration)\r\n   *\r\n   * Because JavaScript treats fixed point numbers badly (rounds to\r\n   * floating point nearest to binary representation) it is highly advised to\r\n   * communicate the fractional numbers as String types, not JavaScript Number type.\r\n   *\r\n   * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n   * @param {Number} ch2 Color channel value.\r\n   * @param {Number} ch3 Color channel value.\r\n   * @param {Number} ch4 Color channel value.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setDrawColor\r\n   */\r\n  API.__private__.setStrokeColor = API.setDrawColor = function(\r\n    ch1,\r\n    ch2,\r\n    ch3,\r\n    ch4\r\n  ) {\r\n    var options = {\r\n      ch1: ch1,\r\n      ch2: ch2,\r\n      ch3: ch3,\r\n      ch4: ch4,\r\n      pdfColorType: \"draw\",\r\n      precision: 2\r\n    };\r\n\r\n    strokeColor = encodeColorString(options);\r\n    out(strokeColor);\r\n    return this;\r\n  };\r\n\r\n  var fillColor = options.fillColor || \"0 g\";\r\n\r\n  /**\r\n   * Gets the fill color for upcoming elements.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {string} colorAsHex\r\n   * @memberof jsPDF#\r\n   * @name getFillColor\r\n   */\r\n  API.__private__.getFillColor = API.getFillColor = function() {\r\n    return decodeColorString(fillColor);\r\n  };\r\n\r\n  /**\r\n   * Sets the fill color for upcoming elements.\r\n   *\r\n   * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n   * color space is implied.\r\n   *\r\n   * When only ch1 is given, \"Gray\" color space is implied and it\r\n   * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n   * if values are communicated as String types, or in range from 0 (black)\r\n   * to 255 (white) if communicated as Number type.\r\n   * The RGB-like 0-255 range is provided for backward compatibility.\r\n   *\r\n   * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n   * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n   * (max intensity) if values are communicated as String types, or\r\n   * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n   * as Number types.\r\n   * The RGB-like 0-255 range is provided for backward compatibility.\r\n   *\r\n   * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n   * value must be a in the range from 0.00 (0% concentration) to to\r\n   * 1.00 (100% concentration)\r\n   *\r\n   * Because JavaScript treats fixed point numbers badly (rounds to\r\n   * floating point nearest to binary representation) it is highly advised to\r\n   * communicate the fractional numbers as String types, not JavaScript Number type.\r\n   *\r\n   * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n   * @param {Number} ch2 Color channel value.\r\n   * @param {Number} ch3 Color channel value.\r\n   * @param {Number} ch4 Color channel value.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setFillColor\r\n   */\r\n  API.__private__.setFillColor = API.setFillColor = function(\r\n    ch1,\r\n    ch2,\r\n    ch3,\r\n    ch4\r\n  ) {\r\n    var options = {\r\n      ch1: ch1,\r\n      ch2: ch2,\r\n      ch3: ch3,\r\n      ch4: ch4,\r\n      pdfColorType: \"fill\",\r\n      precision: 2\r\n    };\r\n\r\n    fillColor = encodeColorString(options);\r\n    out(fillColor);\r\n    return this;\r\n  };\r\n\r\n  var textColor = options.textColor || \"0 g\";\r\n  /**\r\n   * Gets the text color for upcoming elements.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {string} colorAsHex\r\n   * @memberof jsPDF#\r\n   * @name getTextColor\r\n   */\r\n  var getTextColor = (API.__private__.getTextColor = API.getTextColor = function() {\r\n    return decodeColorString(textColor);\r\n  });\r\n  /**\r\n   * Sets the text color for upcoming elements.\r\n   *\r\n   * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n   * color space is implied.\r\n   *\r\n   * When only ch1 is given, \"Gray\" color space is implied and it\r\n   * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n   * if values are communicated as String types, or in range from 0 (black)\r\n   * to 255 (white) if communicated as Number type.\r\n   * The RGB-like 0-255 range is provided for backward compatibility.\r\n   *\r\n   * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n   * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n   * (max intensity) if values are communicated as String types, or\r\n   * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n   * as Number types.\r\n   * The RGB-like 0-255 range is provided for backward compatibility.\r\n   *\r\n   * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n   * value must be a in the range from 0.00 (0% concentration) to to\r\n   * 1.00 (100% concentration)\r\n   *\r\n   * Because JavaScript treats fixed point numbers badly (rounds to\r\n   * floating point nearest to binary representation) it is highly advised to\r\n   * communicate the fractional numbers as String types, not JavaScript Number type.\r\n   *\r\n   * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n   * @param {Number} ch2 Color channel value.\r\n   * @param {Number} ch3 Color channel value.\r\n   * @param {Number} ch4 Color channel value.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setTextColor\r\n   */\r\n  API.__private__.setTextColor = API.setTextColor = function(\r\n    ch1,\r\n    ch2,\r\n    ch3,\r\n    ch4\r\n  ) {\r\n    var options = {\r\n      ch1: ch1,\r\n      ch2: ch2,\r\n      ch3: ch3,\r\n      ch4: ch4,\r\n      pdfColorType: \"text\",\r\n      precision: 3\r\n    };\r\n    textColor = encodeColorString(options);\r\n\r\n    return this;\r\n  };\r\n\r\n  var activeCharSpace = options.charSpace;\r\n\r\n  /**\r\n   * Get global value of CharSpace.\r\n   *\r\n   * @function\r\n   * @instance\r\n   * @returns {number} charSpace\r\n   * @memberof jsPDF#\r\n   * @name getCharSpace\r\n   */\r\n  var getCharSpace = (API.__private__.getCharSpace = API.getCharSpace = function() {\r\n    return parseFloat(activeCharSpace || 0);\r\n  });\r\n\r\n  /**\r\n   * Set global value of CharSpace.\r\n   *\r\n   * @param {number} charSpace\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF} jsPDF-instance\r\n   * @memberof jsPDF#\r\n   * @name setCharSpace\r\n   */\r\n  API.__private__.setCharSpace = API.setCharSpace = function(charSpace) {\r\n    if (isNaN(charSpace)) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\r\n    }\r\n    activeCharSpace = charSpace;\r\n    return this;\r\n  };\r\n\r\n  var lineCapID = 0;\r\n  /**\r\n   * Is an Object providing a mapping from human-readable to\r\n   * integer flag values designating the varieties of line cap\r\n   * and join styles.\r\n   *\r\n   * @memberof jsPDF#\r\n   * @name CapJoinStyles\r\n   */\r\n  API.CapJoinStyles = {\r\n    0: 0,\r\n    butt: 0,\r\n    but: 0,\r\n    miter: 0,\r\n    1: 1,\r\n    round: 1,\r\n    rounded: 1,\r\n    circle: 1,\r\n    2: 2,\r\n    projecting: 2,\r\n    project: 2,\r\n    square: 2,\r\n    bevel: 2\r\n  };\r\n\r\n  /**\r\n   * Sets the line cap styles.\r\n   * See {jsPDF.CapJoinStyles} for variants.\r\n   *\r\n   * @param {String|Number} style A string or number identifying the type of line cap.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setLineCap\r\n   */\r\n  API.__private__.setLineCap = API.setLineCap = function(style) {\r\n    var id = API.CapJoinStyles[style];\r\n    if (id === undefined) {\r\n      throw new Error(\r\n        \"Line cap style of '\" +\r\n          style +\r\n          \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n      );\r\n    }\r\n    lineCapID = id;\r\n    out(id + \" J\");\r\n\r\n    return this;\r\n  };\r\n\r\n  var lineJoinID = 0;\r\n  /**\r\n   * Sets the line join styles.\r\n   * See {jsPDF.CapJoinStyles} for variants.\r\n   *\r\n   * @param {String|Number} style A string or number identifying the type of line join.\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setLineJoin\r\n   */\r\n  API.__private__.setLineJoin = API.setLineJoin = function(style) {\r\n    var id = API.CapJoinStyles[style];\r\n    if (id === undefined) {\r\n      throw new Error(\r\n        \"Line join style of '\" +\r\n          style +\r\n          \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n      );\r\n    }\r\n    lineJoinID = id;\r\n    out(id + \" j\");\r\n\r\n    return this;\r\n  };\r\n\r\n  var miterLimit;\r\n  /**\r\n   * Sets the miterLimit property, which effects the maximum miter length.\r\n   *\r\n   * @param {number} length The length of the miter\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setLineMiterLimit\r\n   */\r\n  API.__private__.setLineMiterLimit = API.__private__.setMiterLimit = API.setLineMiterLimit = API.setMiterLimit = function(\r\n    length\r\n  ) {\r\n    length = length || 0;\r\n    if (isNaN(length)) {\r\n      throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");\r\n    }\r\n    out(hpf(scale(length)) + \" M\");\r\n\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * An object representing a pdf graphics state.\r\n   * @class GState\r\n   */\r\n\r\n  /**\r\n   *\r\n   * @param parameters A parameter object that contains all properties this graphics state wants to set.\r\n   * Supported are: opacity, stroke-opacity\r\n   * @constructor\r\n   */\r\n  API.GState = GState;\r\n\r\n  /**\r\n   * Sets a either previously added {@link GState} (via {@link addGState}) or a new {@link GState}.\r\n   * @param {String|GState} gState If type is string, a previously added GState is used, if type is GState\r\n   * it will be added before use.\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setGState\r\n   */\r\n  API.setGState = function(gState) {\r\n    if (typeof gState === \"string\") {\r\n      gState = gStates[gStatesMap[gState]];\r\n    } else {\r\n      gState = addGState(null, gState);\r\n    }\r\n\r\n    if (!gState.equals(activeGState)) {\r\n      out(\"/\" + gState.id + \" gs\");\r\n      activeGState = gState;\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Adds a new Graphics State. Duplicates are automatically eliminated.\r\n   * @param {String} key Might also be null, if no later reference to this gState is needed\r\n   * @param {Object} gState The gState object\r\n   */\r\n  var addGState = function(key, gState) {\r\n    // only add it if it is not already present (the keys provided by the user must be unique!)\r\n    if (key && gStatesMap[key]) return;\r\n    var duplicate = false;\r\n    for (var s in gStates) {\r\n      if (gStates.hasOwnProperty(s)) {\r\n        if (gStates[s].equals(gState)) {\r\n          duplicate = true;\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (duplicate) {\r\n      gState = gStates[s];\r\n    } else {\r\n      var gStateKey = \"GS\" + (Object.keys(gStates).length + 1).toString(10);\r\n      gStates[gStateKey] = gState;\r\n      gState.id = gStateKey;\r\n    }\r\n\r\n    // several user keys may point to the same GState object\r\n    key && (gStatesMap[key] = gState.id);\r\n\r\n    events.publish(\"addGState\", gState);\r\n\r\n    return gState;\r\n  };\r\n\r\n  /**\r\n   * Adds a new {@link GState} for later use. See {@link setGState}.\r\n   * @param {String} key\r\n   * @param {GState} gState\r\n   * @function\r\n   * @instance\r\n   * @returns {jsPDF}\r\n   *\r\n   * @memberof jsPDF#\r\n   * @name addGState\r\n   */\r\n  API.addGState = function(key, gState) {\r\n    addGState(key, gState);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Saves the current graphics state (\"pushes it on the stack\"). It can be restored by {@link restoreGraphicsState}\r\n   * later. Here, the general pdf graphics state is meant, also including the current transformation matrix,\r\n   * fill and stroke colors etc.\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name saveGraphicsState\r\n   */\r\n  API.saveGraphicsState = function() {\r\n    out(\"q\");\r\n    // as we cannot set font key and size independently we must keep track of both\r\n    fontStateStack.push({\r\n      key: activeFontKey,\r\n      size: activeFontSize,\r\n      color: textColor\r\n    });\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Restores a previously saved graphics state saved by {@link saveGraphicsState} (\"pops the stack\").\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name restoreGraphicsState\r\n   */\r\n  API.restoreGraphicsState = function() {\r\n    out(\"Q\");\r\n\r\n    // restore previous font state\r\n    var fontState = fontStateStack.pop();\r\n    activeFontKey = fontState.key;\r\n    activeFontSize = fontState.size;\r\n    textColor = fontState.color;\r\n\r\n    activeGState = null;\r\n\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Appends this matrix to the left of all previously applied matrices.\r\n   *\r\n   * @param {Matrix} matrix\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name setCurrentTransformationMatrix\r\n   */\r\n  API.setCurrentTransformationMatrix = function(matrix) {\r\n    out(matrix.toString() + \" cm\");\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Inserts a debug comment into the generated pdf.\r\n   * @function\r\n   * @instance\r\n   * @param {String} text\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name comment\r\n   */\r\n  API.comment = function(text) {\r\n    out(\"#\" + text);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Point\r\n   */\r\n  var Point = function(x, y) {\r\n    var _x = x || 0;\r\n    Object.defineProperty(this, \"x\", {\r\n      enumerable: true,\r\n      get: function() {\r\n        return _x;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          _x = parseFloat(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    var _y = y || 0;\r\n    Object.defineProperty(this, \"y\", {\r\n      enumerable: true,\r\n      get: function() {\r\n        return _y;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          _y = parseFloat(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    var _type = \"pt\";\r\n    Object.defineProperty(this, \"type\", {\r\n      enumerable: true,\r\n      get: function() {\r\n        return _type;\r\n      },\r\n      set: function(value) {\r\n        _type = value.toString();\r\n      }\r\n    });\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Rectangle\r\n   */\r\n  var Rectangle = function(x, y, w, h) {\r\n    Point.call(this, x, y);\r\n    this.type = \"rect\";\r\n\r\n    var _w = w || 0;\r\n    Object.defineProperty(this, \"w\", {\r\n      enumerable: true,\r\n      get: function() {\r\n        return _w;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          _w = parseFloat(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    var _h = h || 0;\r\n    Object.defineProperty(this, \"h\", {\r\n      enumerable: true,\r\n      get: function() {\r\n        return _h;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          _h = parseFloat(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * FormObject/RenderTarget\r\n   */\r\n\r\n  var RenderTarget = function() {\r\n    this.page = page;\r\n    this.currentPage = currentPage;\r\n    this.pages = pages.slice(0);\r\n    this.pagesContext = pagesContext.slice(0);\r\n    this.x = pageX;\r\n    this.y = pageY;\r\n    this.matrix = pageMatrix;\r\n    this.width = getPageWidth(currentPage);\r\n    this.height = getPageHeight(currentPage);\r\n    this.outputDestination = outputDestination;\r\n\r\n    this.id = \"\"; // set by endFormObject()\r\n    this.objectNumber = -1; // will be set by putXObject()\r\n  };\r\n\r\n  RenderTarget.prototype.restore = function() {\r\n    page = this.page;\r\n    currentPage = this.currentPage;\r\n    pagesContext = this.pagesContext;\r\n    pages = this.pages;\r\n    pageX = this.x;\r\n    pageY = this.y;\r\n    pageMatrix = this.matrix;\r\n    setPageWidth(currentPage, this.width);\r\n    setPageHeight(currentPage, this.height);\r\n    outputDestination = this.outputDestination;\r\n  };\r\n\r\n  var beginNewRenderTarget = function(x, y, width, height, matrix) {\r\n    // save current state\r\n    renderTargetStack.push(new RenderTarget());\r\n\r\n    // clear pages\r\n    page = currentPage = 0;\r\n    pages = [];\r\n    pageX = x;\r\n    pageY = y;\r\n\r\n    pageMatrix = matrix;\r\n\r\n    beginPage([width, height]);\r\n  };\r\n\r\n  var endFormObject = function(key) {\r\n    // only add it if it is not already present (the keys provided by the user must be unique!)\r\n    if (renderTargetMap[key]) {\r\n      renderTargetStack.pop().restore();\r\n      return;\r\n    }\r\n\r\n    // save the created xObject\r\n    var newXObject = new RenderTarget();\r\n\r\n    var xObjectId = \"Xo\" + (Object.keys(renderTargets).length + 1).toString(10);\r\n    newXObject.id = xObjectId;\r\n\r\n    renderTargetMap[key] = xObjectId;\r\n    renderTargets[xObjectId] = newXObject;\r\n\r\n    events.publish(\"addFormObject\", newXObject);\r\n\r\n    // restore state from stack\r\n    renderTargetStack.pop().restore();\r\n  };\r\n\r\n  /**\r\n   * Starts a new pdf form object, which means that all consequent draw calls target a new independent object\r\n   * until {@link endFormObject} is called. The created object can be referenced and drawn later using\r\n   * {@link doFormObject}. Nested form objects are possible.\r\n   * x, y, width, height set the bounding box that is used to clip the content.\r\n   *\r\n   * @param {number} x\r\n   * @param {number} y\r\n   * @param {number} width\r\n   * @param {number} height\r\n   * @param {Matrix} matrix The matrix that will be applied to convert the form objects coordinate system to\r\n   * the parent's.\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name beginFormObject\r\n   */\r\n  API.beginFormObject = function(x, y, width, height, matrix) {\r\n    // The user can set the output target to a new form object. Nested form objects are possible.\r\n    // Currently, they use the resource dictionary of the surrounding stream. This should be changed, as\r\n    // the PDF-Spec states:\r\n    // \"In PDF 1.2 and later versions, form XObjects may be independent of the content streams in which\r\n    // they appear, and this is strongly recommended although not requiredIn PDF 1.2 and later versions,\r\n    // form XObjects may be independent of the content streams in which they appear, and this is strongly\r\n    // recommended although not required\"\r\n    beginNewRenderTarget(x, y, width, height, matrix);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Completes and saves the form object.\r\n   * @param {String} key The key by which this form object can be referenced.\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name endFormObject\r\n   */\r\n  API.endFormObject = function(key) {\r\n    endFormObject(key);\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Draws the specified form object by referencing to the respective pdf XObject created with\r\n   * {@link API.beginFormObject} and {@link endFormObject}.\r\n   * The location is determined by matrix.\r\n   *\r\n   * @param {String} key The key to the form object.\r\n   * @param {Matrix} matrix The matrix applied before drawing the form object.\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name doFormObject\r\n   */\r\n  API.doFormObject = function(key, matrix) {\r\n    var xObject = renderTargets[renderTargetMap[key]];\r\n    out(\"q\");\r\n    out(matrix.toString() + \" cm\");\r\n    out(\"/\" + xObject.id + \" Do\");\r\n    out(\"Q\");\r\n    return this;\r\n  };\r\n\r\n  /**\r\n   * Returns the form object specified by key.\r\n   * @param key {String}\r\n   * @returns {{x: number, y: number, width: number, height: number, matrix: Matrix}}\r\n   * @function\r\n   * @returns {jsPDF}\r\n   * @memberof jsPDF#\r\n   * @name getFormObject\r\n   */\r\n  API.getFormObject = function(key) {\r\n    var xObject = renderTargets[renderTargetMap[key]];\r\n    return {\r\n      x: xObject.x,\r\n      y: xObject.y,\r\n      width: xObject.width,\r\n      height: xObject.height,\r\n      matrix: xObject.matrix\r\n    };\r\n  };\r\n\r\n  /**\r\n   * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf').\r\n   * Uses FileSaver.js-method saveAs.\r\n   *\r\n   * @memberof jsPDF#\r\n   * @name save\r\n   * @function\r\n   * @instance\r\n   * @param  {string} filename The filename including extension.\r\n   * @param  {Object} options An Object with additional options, possible options: 'returnPromise'.\r\n   * @returns {jsPDF|Promise} jsPDF-instance     */\r\n  API.save = function(filename, options) {\r\n    filename = filename || \"generated.pdf\";\r\n\r\n    options = options || {};\r\n    options.returnPromise = options.returnPromise || false;\r\n\r\n    if (options.returnPromise === false) {\r\n      saveAs(getBlob(buildDocument()), filename);\r\n      if (typeof saveAs.unload === \"function\") {\r\n        if (globalObject.setTimeout) {\r\n          setTimeout(saveAs.unload, 911);\r\n        }\r\n      }\r\n      return this;\r\n    } else {\r\n      return new Promise(function(resolve, reject) {\r\n        try {\r\n          var result = saveAs(getBlob(buildDocument()), filename);\r\n          if (typeof saveAs.unload === \"function\") {\r\n            if (globalObject.setTimeout) {\r\n              setTimeout(saveAs.unload, 911);\r\n            }\r\n          }\r\n          resolve(result);\r\n        } catch (e) {\r\n          reject(e.message);\r\n        }\r\n      });\r\n    }\r\n\r\n  };\r\n\r\n  // applying plugins (more methods) ON TOP of built-in API.\r\n  // this is intentional as we allow plugins to override\r\n  // built-ins\r\n  for (var plugin in jsPDF.API) {\r\n    if (jsPDF.API.hasOwnProperty(plugin)) {\r\n      if (plugin === \"events\" && jsPDF.API.events.length) {\r\n        (function(events, newEvents) {\r\n          // jsPDF.API.events is a JS Array of Arrays\r\n          // where each Array is a pair of event name, handler\r\n          // Events were added by plugins to the jsPDF instantiator.\r\n          // These are always added to the new instance and some ran\r\n          // during instantiation.\r\n          var eventname, handler_and_args, i;\r\n\r\n          for (i = newEvents.length - 1; i !== -1; i--) {\r\n            // subscribe takes 3 args: 'topic', function, runonce_flag\r\n            // if undefined, runonce is false.\r\n            // users can attach callback directly,\r\n            // or they can attach an array with [callback, runonce_flag]\r\n            // that's what the \"apply\" magic is for below.\r\n            eventname = newEvents[i][0];\r\n            handler_and_args = newEvents[i][1];\r\n            events.subscribe.apply(\r\n              events,\r\n              [eventname].concat(\r\n                typeof handler_and_args === \"function\"\r\n                  ? [handler_and_args]\r\n                  : handler_and_args\r\n              )\r\n            );\r\n          }\r\n        })(events, jsPDF.API.events);\r\n      } else {\r\n        API[plugin] = jsPDF.API[plugin];\r\n      }\r\n    }\r\n  }\r\n\r\n  var getPageWidth = (API.getPageWidth = function(pageNumber) {\r\n    pageNumber = pageNumber || currentPage;\r\n    return (\r\n      (pagesContext[pageNumber].mediaBox.topRightX -\r\n        pagesContext[pageNumber].mediaBox.bottomLeftX) /\r\n      scaleFactor\r\n    );\r\n  });\r\n\r\n  var setPageWidth = (API.setPageWidth = function(pageNumber, value) {\r\n    pagesContext[pageNumber].mediaBox.topRightX =\r\n      value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftX;\r\n  });\r\n\r\n  var getPageHeight = (API.getPageHeight = function(pageNumber) {\r\n    pageNumber = pageNumber || currentPage;\r\n    return (\r\n      (pagesContext[pageNumber].mediaBox.topRightY -\r\n        pagesContext[pageNumber].mediaBox.bottomLeftY) /\r\n      scaleFactor\r\n    );\r\n  });\r\n\r\n  var setPageHeight = (API.setPageHeight = function(pageNumber, value) {\r\n    pagesContext[pageNumber].mediaBox.topRightY =\r\n      value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftY;\r\n  });\r\n\r\n  /**\r\n   * Object exposing internal API to plugins\r\n   * @public\r\n   * @ignore\r\n   */\r\n  API.internal = {\r\n    pdfEscape: pdfEscape,\r\n    getStyle: getStyle,\r\n    getFont: getFontEntry,\r\n    getFontSize: getFontSize,\r\n    getCharSpace: getCharSpace,\r\n    getTextColor: getTextColor,\r\n    getLineHeight: getLineHeight,\r\n    getLineHeightFactor: getLineHeightFactor,\r\n    getLineWidth: getLineWidth,\r\n    write: write,\r\n    getHorizontalCoordinate: getHorizontalCoordinate,\r\n    getVerticalCoordinate: getVerticalCoordinate,\r\n    getCoordinateString: getHorizontalCoordinateString,\r\n    getVerticalCoordinateString: getVerticalCoordinateString,\r\n    collections: {},\r\n    newObject: newObject,\r\n    newAdditionalObject: newAdditionalObject,\r\n    newObjectDeferred: newObjectDeferred,\r\n    newObjectDeferredBegin: newObjectDeferredBegin,\r\n    getFilters: getFilters,\r\n    putStream: putStream,\r\n    events: events,\r\n    scaleFactor: scaleFactor,\r\n    pageSize: {\r\n      getWidth: function() {\r\n        return getPageWidth(currentPage);\r\n      },\r\n      setWidth: function(value) {\r\n        setPageWidth(currentPage, value);\r\n      },\r\n      getHeight: function() {\r\n        return getPageHeight(currentPage);\r\n      },\r\n      setHeight: function(value) {\r\n        setPageHeight(currentPage, value);\r\n      }\r\n    },\r\n    encryptionOptions: encryptionOptions,\r\n    encryption: encryption,\r\n    getEncryptor: getEncryptor,\r\n    output: output,\r\n    getNumberOfPages: getNumberOfPages,\r\n    pages: pages,\r\n    out: out,\r\n    f2: f2,\r\n    f3: f3,\r\n    getPageInfo: getPageInfo,\r\n    getPageInfoByObjId: getPageInfoByObjId,\r\n    getCurrentPageInfo: getCurrentPageInfo,\r\n    getPDFVersion: getPdfVersion,\r\n    Point: Point,\r\n    Rectangle: Rectangle,\r\n    Matrix: Matrix,\r\n    hasHotfix: hasHotfix //Expose the hasHotfix check so plugins can also check them.\r\n  };\r\n\r\n  Object.defineProperty(API.internal.pageSize, \"width\", {\r\n    get: function() {\r\n      return getPageWidth(currentPage);\r\n    },\r\n    set: function(value) {\r\n      setPageWidth(currentPage, value);\r\n    },\r\n    enumerable: true,\r\n    configurable: true\r\n  });\r\n  Object.defineProperty(API.internal.pageSize, \"height\", {\r\n    get: function() {\r\n      return getPageHeight(currentPage);\r\n    },\r\n    set: function(value) {\r\n      setPageHeight(currentPage, value);\r\n    },\r\n    enumerable: true,\r\n    configurable: true\r\n  });\r\n\r\n  //////////////////////////////////////////////////////\r\n  // continuing initialization of jsPDF Document object\r\n  //////////////////////////////////////////////////////\r\n  // Add the first page automatically\r\n  addFonts.call(API, standardFonts);\r\n  activeFontKey = \"F1\";\r\n  _addPage(format, orientation);\r\n\r\n  events.publish(\"initialized\");\r\n  return API;\r\n}\r\n\r\n/**\r\n * jsPDF.API is a STATIC property of jsPDF class.\r\n * jsPDF.API is an object you can add methods and properties to.\r\n * The methods / properties you add will show up in new jsPDF objects.\r\n *\r\n * One property is prepopulated. It is the 'events' Object. Plugin authors can add topics,\r\n * callbacks to this object. These will be reassigned to all new instances of jsPDF.\r\n *\r\n * @static\r\n * @public\r\n * @memberof jsPDF#\r\n * @name API\r\n *\r\n * @example\r\n * jsPDF.API.mymethod = function(){\r\n *   // 'this' will be ref to internal API object. see jsPDF source\r\n *   // , so you can refer to built-in methods like so:\r\n *   //     this.line(....)\r\n *   //     this.text(....)\r\n * }\r\n * var pdfdoc = new jsPDF()\r\n * pdfdoc.mymethod() // <- !!!!!!\r\n */\r\njsPDF.API = {\r\n  events: []\r\n};\r\n/**\r\n * The version of jsPDF.\r\n * @name version\r\n * @type {string}\r\n * @memberof jsPDF#\r\n */\r\njsPDF.version = \"0.0.0\";\r\n\r\nexport { jsPDF, ShadingPattern, TilingPattern, GState };\r\nexport default jsPDF;\r\n", "/* global jsPDF */\n/**\n * @license\n * Copyright (c) 2016 Alexander Weidt,\n * https://github.com/BiggA94\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF AcroForm Plugin\n * @module AcroForm\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nvar jsPDFAPI = jsPDF.API;\nvar scaleFactor = 1;\n\nvar pdfEscape = function(value) {\n  return value\n    .replace(/\\\\/g, \"\\\\\\\\\")\n    .replace(/\\(/g, \"\\\\(\")\n    .replace(/\\)/g, \"\\\\)\");\n};\nvar pdfUnescape = function(value) {\n  return value\n    .replace(/\\\\\\\\/g, \"\\\\\")\n    .replace(/\\\\\\(/g, \"(\")\n    .replace(/\\\\\\)/g, \")\");\n};\n\nvar f2 = function(number) {\n  return number.toFixed(2); // Ie, %.2f\n};\n\nvar f5 = function(number) {\n  return number.toFixed(5); // Ie, %.2f\n};\n\njsPDFAPI.__acroform__ = {};\nvar inherit = function(child, parent) {\n  child.prototype = Object.create(parent.prototype);\n  child.prototype.constructor = child;\n};\n\nvar scale = function(x) {\n  return x * scaleFactor;\n};\n\nvar createFormXObject = function(formObject) {\n  var xobj = new AcroFormXObject();\n  var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n  var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n  xobj.BBox = [0, 0, Number(f2(width)), Number(f2(height))];\n  return xobj;\n};\n\n/**\n * Bit-Operations\n */\nvar setBit = (jsPDFAPI.__acroform__.setBit = function(number, bitPosition) {\n  number = number || 0;\n  bitPosition = bitPosition || 0;\n\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.setBit\"\n    );\n  }\n  var bitMask = 1 << bitPosition;\n\n  number |= bitMask;\n\n  return number;\n});\n\nvar clearBit = (jsPDFAPI.__acroform__.clearBit = function(number, bitPosition) {\n  number = number || 0;\n  bitPosition = bitPosition || 0;\n\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\"\n    );\n  }\n  var bitMask = 1 << bitPosition;\n\n  number &= ~bitMask;\n\n  return number;\n});\n\nvar getBit = (jsPDFAPI.__acroform__.getBit = function(number, bitPosition) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.getBit\"\n    );\n  }\n  return (number & (1 << bitPosition)) === 0 ? 0 : 1;\n});\n\n/*\n * Ff starts counting the bit position at 1 and not like javascript at 0\n */\nvar getBitForPdf = (jsPDFAPI.__acroform__.getBitForPdf = function(\n  number,\n  bitPosition\n) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\"\n    );\n  }\n  return getBit(number, bitPosition - 1);\n});\n\nvar setBitForPdf = (jsPDFAPI.__acroform__.setBitForPdf = function(\n  number,\n  bitPosition\n) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\"\n    );\n  }\n  return setBit(number, bitPosition - 1);\n});\n\nvar clearBitForPdf = (jsPDFAPI.__acroform__.clearBitForPdf = function(\n  number,\n  bitPosition\n) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\"\n    );\n  }\n  return clearBit(number, bitPosition - 1);\n});\n\nvar calculateCoordinates = (jsPDFAPI.__acroform__.calculateCoordinates = function(\n  args,\n  scope\n) {\n  var getHorizontalCoordinate = scope.internal.getHorizontalCoordinate;\n  var getVerticalCoordinate = scope.internal.getVerticalCoordinate;\n  var x = args[0];\n  var y = args[1];\n  var w = args[2];\n  var h = args[3];\n\n  var coordinates = {};\n\n  coordinates.lowerLeft_X = getHorizontalCoordinate(x) || 0;\n  coordinates.lowerLeft_Y = getVerticalCoordinate(y + h) || 0;\n  coordinates.upperRight_X = getHorizontalCoordinate(x + w) || 0;\n  coordinates.upperRight_Y = getVerticalCoordinate(y) || 0;\n\n  return [\n    Number(f2(coordinates.lowerLeft_X)),\n    Number(f2(coordinates.lowerLeft_Y)),\n    Number(f2(coordinates.upperRight_X)),\n    Number(f2(coordinates.upperRight_Y))\n  ];\n});\n\nvar calculateAppearanceStream = function(formObject) {\n  if (formObject.appearanceStreamContent) {\n    return formObject.appearanceStreamContent;\n  }\n\n  if (!formObject.V && !formObject.DV) {\n    return;\n  }\n\n  // else calculate it\n\n  var stream = [];\n  var text = formObject._V || formObject.DV;\n  var calcRes = calculateX(formObject, text);\n  var fontKey = formObject.scope.internal.getFont(\n    formObject.fontName,\n    formObject.fontStyle\n  ).id;\n\n  //PDF 32000-1:2008, page 444\n  stream.push(\"/Tx BMC\");\n  stream.push(\"q\");\n  stream.push(\"BT\"); // Begin Text\n  stream.push(formObject.scope.__private__.encodeColorString(formObject.color));\n  stream.push(\"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf\");\n  stream.push(\"1 0 0 1 0 0 Tm\"); // Transformation Matrix\n  stream.push(calcRes.text);\n  stream.push(\"ET\"); // End Text\n  stream.push(\"Q\");\n  stream.push(\"EMC\");\n\n  var appearanceStreamContent = createFormXObject(formObject);\n  appearanceStreamContent.scope = formObject.scope;\n  appearanceStreamContent.stream = stream.join(\"\\n\");\n  return appearanceStreamContent;\n};\n\nvar calculateX = function(formObject, text) {\n  var maxFontSize =\n    formObject.fontSize === 0 ? formObject.maxFontSize : formObject.fontSize;\n  var returnValue = {\n    text: \"\",\n    fontSize: \"\"\n  };\n  // Remove Brackets\n  text = text.substr(0, 1) == \"(\" ? text.substr(1) : text;\n  text =\n    text.substr(text.length - 1) == \")\"\n      ? text.substr(0, text.length - 1)\n      : text;\n  // split into array of words\n  var textSplit = text.split(\" \");\n  if (formObject.multiline) {\n    textSplit = textSplit.map(word => word.split(\"\\n\"));\n  } else {\n    textSplit = textSplit.map(word => [word]);\n  }\n\n  var fontSize = maxFontSize; // The Starting fontSize (The Maximum)\n  var lineSpacing = 2;\n  var borderPadding = 2;\n\n  var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n  height = height < 0 ? -height : height;\n  var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n  width = width < 0 ? -width : width;\n\n  var isSmallerThanWidth = function(i, lastLine, fontSize) {\n    if (i + 1 < textSplit.length) {\n      var tmp = lastLine + \" \" + textSplit[i + 1][0];\n      var TextWidth = calculateFontSpace(tmp, formObject, fontSize).width;\n      var FieldWidth = width - 2 * borderPadding;\n      return TextWidth <= FieldWidth;\n    } else {\n      return false;\n    }\n  };\n\n  fontSize++;\n  FontSize: while (fontSize > 0) {\n    text = \"\";\n    fontSize--;\n    var textHeight = calculateFontSpace(\"3\", formObject, fontSize).height;\n    var startY = formObject.multiline\n      ? height - fontSize\n      : (height - textHeight) / 2;\n    startY += lineSpacing;\n    var startX;\n\n    var lastY = startY;\n    var firstWordInLine = 0,\n      lastWordInLine = 0;\n    var lastLength;\n    var currWord = 0;\n\n    if (fontSize <= 0) {\n      // In case, the Text doesn't fit at all\n      fontSize = 12;\n      text = \"(...) Tj\\n\";\n      text +=\n        \"% Width of Text: \" +\n        calculateFontSpace(text, formObject, fontSize).width +\n        \", FieldWidth:\" +\n        width +\n        \"\\n\";\n      break;\n    }\n\n    var lastLine = \"\";\n    var lineCount = 0;\n    Line: for (var i = 0; i < textSplit.length; i++) {\n      if (textSplit.hasOwnProperty(i)) {\n        let isWithNewLine = false;\n        if (textSplit[i].length !== 1 && currWord !== textSplit[i].length - 1) {\n          if (\n            (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n            height\n          ) {\n            continue FontSize;\n          }\n\n          lastLine += textSplit[i][currWord];\n          isWithNewLine = true;\n          lastWordInLine = i;\n          i--;\n        } else {\n          lastLine += textSplit[i][currWord] + \" \";\n          lastLine =\n            lastLine.substr(lastLine.length - 1) == \" \"\n              ? lastLine.substr(0, lastLine.length - 1)\n              : lastLine;\n          var key = parseInt(i);\n          var nextLineIsSmaller = isSmallerThanWidth(key, lastLine, fontSize);\n          var isLastWord = i >= textSplit.length - 1;\n\n          if (nextLineIsSmaller && !isLastWord) {\n            lastLine += \" \";\n            currWord = 0;\n            continue; // Line\n          } else if (!nextLineIsSmaller && !isLastWord) {\n            if (!formObject.multiline) {\n              continue FontSize;\n            } else {\n              if (\n                (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n                height\n              ) {\n                // If the Text is higher than the\n                // FieldObject\n                continue FontSize;\n              }\n              lastWordInLine = key;\n              // go on\n            }\n          } else if (isLastWord) {\n            lastWordInLine = key;\n          } else {\n            if (\n              formObject.multiline &&\n              (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n                height\n            ) {\n              // If the Text is higher than the FieldObject\n              continue FontSize;\n            }\n          }\n        }\n        // Remove last blank\n\n        var line = \"\";\n\n        for (var x = firstWordInLine; x <= lastWordInLine; x++) {\n          var currLine = textSplit[x];\n          if (formObject.multiline) {\n            if (x === lastWordInLine) {\n              line += currLine[currWord] + \" \";\n              currWord = (currWord + 1) % currLine.length;\n              continue;\n            }\n            if (x === firstWordInLine) {\n              line += currLine[currLine.length - 1] + \" \";\n              continue;\n            }\n          }\n          line += currLine[0] + \" \";\n        }\n\n        // Remove last blank\n        line =\n          line.substr(line.length - 1) == \" \"\n            ? line.substr(0, line.length - 1)\n            : line;\n        // lastLength -= blankSpace.width;\n        lastLength = calculateFontSpace(line, formObject, fontSize).width;\n\n        // Calculate startX\n        switch (formObject.textAlign) {\n          case \"right\":\n            startX = width - lastLength - borderPadding;\n            break;\n          case \"center\":\n            startX = (width - lastLength) / 2;\n            break;\n          case \"left\":\n          default:\n            startX = borderPadding;\n            break;\n        }\n        text += f2(startX) + \" \" + f2(lastY) + \" Td\\n\";\n        text += \"(\" + pdfEscape(line) + \") Tj\\n\";\n        // reset X in PDF\n        text += -f2(startX) + \" 0 Td\\n\";\n\n        // After a Line, adjust y position\n        lastY = -(fontSize + lineSpacing);\n\n        // Reset for next iteration step\n        lastLength = 0;\n        firstWordInLine = isWithNewLine ? lastWordInLine : lastWordInLine + 1;\n        lineCount++;\n\n        lastLine = \"\";\n        continue Line;\n      }\n    }\n    break;\n  }\n\n  returnValue.text = text;\n  returnValue.fontSize = fontSize;\n\n  return returnValue;\n};\n\n/**\n * Small workaround for calculating the TextMetric approximately.\n *\n * @param text\n * @param fontsize\n * @returns {TextMetrics} (Has Height and Width)\n */\nvar calculateFontSpace = function(text, formObject, fontSize) {\n  var font = formObject.scope.internal.getFont(\n    formObject.fontName,\n    formObject.fontStyle\n  );\n  var width =\n    formObject.scope.getStringUnitWidth(text, {\n      font: font,\n      fontSize: parseFloat(fontSize),\n      charSpace: 0\n    }) * parseFloat(fontSize);\n  var height =\n    formObject.scope.getStringUnitWidth(\"3\", {\n      font: font,\n      fontSize: parseFloat(fontSize),\n      charSpace: 0\n    }) *\n    parseFloat(fontSize) *\n    1.5;\n  return { height: height, width: width };\n};\n\nvar acroformPluginTemplate = {\n  fields: [],\n  xForms: [],\n  /**\n   * acroFormDictionaryRoot contains information about the AcroForm\n   * Dictionary 0: The Event-Token, the AcroFormDictionaryCallback has\n   * 1: The Object ID of the Root\n   */\n  acroFormDictionaryRoot: null,\n  /**\n   * After the PDF gets evaluated, the reference to the root has to be\n   * reset, this indicates, whether the root has already been printed\n   * out\n   */\n  printedOut: false,\n  internal: null,\n  isInitialized: false\n};\n\nvar annotReferenceCallback = function(scope) {\n  //set objId to undefined and force it to get a new objId on buildDocument\n  scope.internal.acroformPlugin.acroFormDictionaryRoot.objId = undefined;\n  var fields = scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n  for (var i in fields) {\n    if (fields.hasOwnProperty(i)) {\n      var formObject = fields[i];\n      //set objId to undefined and force it to get a new objId on buildDocument\n      formObject.objId = undefined;\n      // add Annot Reference!\n      if (formObject.hasAnnotation) {\n        // If theres an Annotation Widget in the Form Object, put the\n        // Reference in the /Annot array\n        createAnnotationReference(formObject, scope);\n      }\n    }\n  }\n};\n\nvar putForm = function(formObject) {\n  if (formObject.scope.internal.acroformPlugin.printedOut) {\n    formObject.scope.internal.acroformPlugin.printedOut = false;\n    formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot = null;\n  }\n  formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(\n    formObject\n  );\n};\n/**\n * Create the Reference to the widgetAnnotation, so that it gets referenced\n * in the Annot[] int the+ (Requires the Annotation Plugin)\n */\nvar createAnnotationReference = function(object, scope) {\n  var options = {\n    type: \"reference\",\n    object: object\n  };\n  var findEntry = function(entry) {\n    return entry.type === options.type && entry.object === options.object;\n  };\n  if (\n    scope.internal\n      .getPageInfo(object.page)\n      .pageContext.annotations.find(findEntry) === undefined\n  ) {\n    scope.internal\n      .getPageInfo(object.page)\n      .pageContext.annotations.push(options);\n  }\n};\n\n// Callbacks\n\nvar putCatalogCallback = function(scope) {\n  // Put reference to AcroForm to DocumentCatalog\n  if (\n    typeof scope.internal.acroformPlugin.acroFormDictionaryRoot !== \"undefined\"\n  ) {\n    // for safety, shouldn't normally be the case\n    scope.internal.write(\n      \"/AcroForm \" +\n        scope.internal.acroformPlugin.acroFormDictionaryRoot.objId +\n        \" \" +\n        0 +\n        \" R\"\n    );\n  } else {\n    throw new Error(\"putCatalogCallback: Root missing.\");\n  }\n};\n\n/**\n * Adds /Acroform X 0 R to Document Catalog, and creates the AcroForm\n * Dictionary\n */\nvar AcroFormDictionaryCallback = function(scope) {\n  // Remove event\n  scope.internal.events.unsubscribe(\n    scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID\n  );\n  delete scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID;\n  scope.internal.acroformPlugin.printedOut = true;\n};\n\n/**\n * Creates the single Fields and writes them into the Document\n *\n * If fieldArray is set, use the fields that are inside it instead of the\n * fields from the AcroRoot (for the FormXObjects...)\n */\nvar createFieldCallback = function(fieldArray, scope) {\n  var standardFields = !fieldArray;\n\n  if (!fieldArray) {\n    // in case there is no fieldArray specified, we want to print out\n    // the Fields of the AcroForm\n    // Print out Root\n    scope.internal.newObjectDeferredBegin(\n      scope.internal.acroformPlugin.acroFormDictionaryRoot.objId,\n      true\n    );\n    scope.internal.acroformPlugin.acroFormDictionaryRoot.putStream();\n  }\n\n  fieldArray =\n    fieldArray || scope.internal.acroformPlugin.acroFormDictionaryRoot.Kids;\n\n  for (var i in fieldArray) {\n    if (fieldArray.hasOwnProperty(i)) {\n      var fieldObject = fieldArray[i];\n      var keyValueList = [];\n      var oldRect = fieldObject.Rect;\n\n      if (fieldObject.Rect) {\n        fieldObject.Rect = calculateCoordinates(fieldObject.Rect, scope);\n      }\n\n      // Start Writing the Object\n      scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n      fieldObject.DA = AcroFormAppearance.createDefaultAppearanceStream(\n        fieldObject\n      );\n\n      if (\n        typeof fieldObject === \"object\" &&\n        typeof fieldObject.getKeyValueListForStream === \"function\"\n      ) {\n        keyValueList = fieldObject.getKeyValueListForStream();\n      }\n\n      fieldObject.Rect = oldRect;\n\n      if (\n        fieldObject.hasAppearanceStream &&\n        !fieldObject.appearanceStreamContent\n      ) {\n        // Calculate Appearance\n        var appearance = calculateAppearanceStream(fieldObject);\n        keyValueList.push({ key: \"AP\", value: \"<</N \" + appearance + \">>\" });\n\n        scope.internal.acroformPlugin.xForms.push(appearance);\n      }\n\n      // Assume AppearanceStreamContent is a Array with N,R,D (at least\n      // one of them!)\n      if (fieldObject.appearanceStreamContent) {\n        var appearanceStreamString = \"\";\n        // Iterate over N,R and D\n        for (var k in fieldObject.appearanceStreamContent) {\n          if (fieldObject.appearanceStreamContent.hasOwnProperty(k)) {\n            var value = fieldObject.appearanceStreamContent[k];\n            appearanceStreamString += \"/\" + k + \" \";\n            appearanceStreamString += \"<<\";\n            if (Object.keys(value).length >= 1 || Array.isArray(value)) {\n              // appearanceStream is an Array or Object!\n              for (var i in value) {\n                if (value.hasOwnProperty(i)) {\n                  var obj = value[i];\n                  if (typeof obj === \"function\") {\n                    // if Function is referenced, call it in order\n                    // to get the FormXObject\n                    obj = obj.call(scope, fieldObject);\n                  }\n                  appearanceStreamString += \"/\" + i + \" \" + obj + \" \";\n\n                  // In case the XForm is already used, e.g. OffState\n                  // of CheckBoxes, don't add it\n                  if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n                    scope.internal.acroformPlugin.xForms.push(obj);\n                }\n              }\n            } else {\n              obj = value;\n              if (typeof obj === \"function\") {\n                // if Function is referenced, call it in order to\n                // get the FormXObject\n                obj = obj.call(scope, fieldObject);\n              }\n              appearanceStreamString += \"/\" + i + \" \" + obj;\n              if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n                scope.internal.acroformPlugin.xForms.push(obj);\n            }\n            appearanceStreamString += \">>\";\n          }\n        }\n\n        // appearance stream is a normal Object..\n        keyValueList.push({\n          key: \"AP\",\n          value: \"<<\\n\" + appearanceStreamString + \">>\"\n        });\n      }\n\n      scope.internal.putStream({\n        additionalKeyValues: keyValueList,\n        objectId: fieldObject.objId\n      });\n\n      scope.internal.out(\"endobj\");\n    }\n  }\n  if (standardFields) {\n    createXFormObjectCallback(scope.internal.acroformPlugin.xForms, scope);\n  }\n};\n\nvar createXFormObjectCallback = function(fieldArray, scope) {\n  for (var i in fieldArray) {\n    if (fieldArray.hasOwnProperty(i)) {\n      var key = i;\n      var fieldObject = fieldArray[i];\n      // Start Writing the Object\n      scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n      if (\n        typeof fieldObject === \"object\" &&\n        typeof fieldObject.putStream === \"function\"\n      ) {\n        fieldObject.putStream();\n      }\n      delete fieldArray[key];\n    }\n  }\n};\n\nvar initializeAcroForm = function(scope, formObject) {\n  formObject.scope = scope;\n  if (\n    scope.internal !== undefined &&\n    (scope.internal.acroformPlugin === undefined ||\n      scope.internal.acroformPlugin.isInitialized === false)\n  ) {\n    AcroFormField.FieldNum = 0;\n    scope.internal.acroformPlugin = JSON.parse(\n      JSON.stringify(acroformPluginTemplate)\n    );\n    if (scope.internal.acroformPlugin.acroFormDictionaryRoot) {\n      throw new Error(\"Exception while creating AcroformDictionary\");\n    }\n    scaleFactor = scope.internal.scaleFactor;\n    // The Object Number of the AcroForm Dictionary\n    scope.internal.acroformPlugin.acroFormDictionaryRoot = new AcroFormDictionary();\n    scope.internal.acroformPlugin.acroFormDictionaryRoot.scope = scope;\n\n    // add Callback for creating the AcroForm Dictionary\n    scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID = scope.internal.events.subscribe(\n      \"postPutResources\",\n      function() {\n        AcroFormDictionaryCallback(scope);\n      }\n    );\n\n    scope.internal.events.subscribe(\"buildDocument\", function() {\n      annotReferenceCallback(scope);\n    }); // buildDocument\n\n    // Register event, that is triggered when the DocumentCatalog is\n    // written, in order to add /AcroForm\n\n    scope.internal.events.subscribe(\"putCatalog\", function() {\n      putCatalogCallback(scope);\n    });\n\n    // Register event, that creates all Fields\n    scope.internal.events.subscribe(\"postPutPages\", function(fieldArray) {\n      createFieldCallback(fieldArray, scope);\n    });\n\n    scope.internal.acroformPlugin.isInitialized = true;\n  }\n};\n\n//PDF 32000-1:2008, page 26, 7.3.6\nvar arrayToPdfArray = (jsPDFAPI.__acroform__.arrayToPdfArray = function(\n  array,\n  objId,\n  scope\n) {\n  var encryptor = function(data) {\n    return data;\n  };\n  if (Array.isArray(array)) {\n    var content = \"[\";\n    for (var i = 0; i < array.length; i++) {\n      if (i !== 0) {\n        content += \" \";\n      }\n      switch (typeof array[i]) {\n        case \"boolean\":\n        case \"number\":\n        case \"object\":\n          content += array[i].toString();\n          break;\n        case \"string\":\n          if (array[i].substr(0, 1) !== \"/\") {\n            if (typeof objId !== \"undefined\" && scope)\n              encryptor = scope.internal.getEncryptor(objId);\n            content += \"(\" + pdfEscape(encryptor(array[i].toString())) + \")\";\n          } else {\n            content += array[i].toString();\n          }\n          break;\n      }\n    }\n    content += \"]\";\n    return content;\n  }\n  throw new Error(\n    \"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\"\n  );\n});\nfunction getMatches(string, regex, index) {\n  index || (index = 1); // default to the first capturing group\n  var matches = [];\n  var match;\n  while ((match = regex.exec(string))) {\n    matches.push(match[index]);\n  }\n  return matches;\n}\nvar pdfArrayToStringArray = function(array) {\n  var result = [];\n  if (typeof array === \"string\") {\n    result = getMatches(array, /\\((.*?)\\)/g);\n  }\n  return result;\n};\n\nvar toPdfString = function(string, objId, scope) {\n  var encryptor = function(data) {\n    return data;\n  };\n  if (typeof objId !== \"undefined\" && scope)\n    encryptor = scope.internal.getEncryptor(objId);\n  string = string || \"\";\n  string.toString();\n  string = \"(\" + pdfEscape(encryptor(string)) + \")\";\n  return string;\n};\n\n// ##########################\n// Classes\n// ##########################\n\n/**\n * @class AcroFormPDFObject\n * @classdesc A AcroFormPDFObject\n */\nvar AcroFormPDFObject = function() {\n  this._objId = undefined;\n  this._scope = undefined;\n\n  /**\n   * @name AcroFormPDFObject#objId\n   * @type {any}\n   */\n  Object.defineProperty(this, \"objId\", {\n    get: function() {\n      if (typeof this._objId === \"undefined\") {\n        if (typeof this.scope === \"undefined\") {\n          return undefined;\n        }\n        this._objId = this.scope.internal.newObjectDeferred();\n      }\n      return this._objId;\n    },\n    set: function(value) {\n      this._objId = value;\n    }\n  });\n  Object.defineProperty(this, \"scope\", {\n    value: this._scope,\n    writable: true\n  });\n};\n\n/**\n * @function AcroFormPDFObject.toString\n */\nAcroFormPDFObject.prototype.toString = function() {\n  return this.objId + \" 0 R\";\n};\n\nAcroFormPDFObject.prototype.putStream = function() {\n  var keyValueList = this.getKeyValueListForStream();\n  this.scope.internal.putStream({\n    data: this.stream,\n    additionalKeyValues: keyValueList,\n    objectId: this.objId\n  });\n  this.scope.internal.out(\"endobj\");\n};\n\n/**\n * Returns an key-value-List of all non-configurable Variables from the Object\n *\n * @name getKeyValueListForStream\n * @returns {string}\n */\nAcroFormPDFObject.prototype.getKeyValueListForStream = function() {\n  var keyValueList = [];\n  var keys = Object.getOwnPropertyNames(this).filter(function(key) {\n    return (\n      key != \"content\" &&\n      key != \"appearanceStreamContent\" &&\n      key != \"scope\" &&\n      key != \"objId\" &&\n      key.substring(0, 1) != \"_\"\n    );\n  });\n\n  for (var i in keys) {\n    if (Object.getOwnPropertyDescriptor(this, keys[i]).configurable === false) {\n      var key = keys[i];\n      var value = this[key];\n\n      if (value) {\n        if (Array.isArray(value)) {\n          keyValueList.push({\n            key: key,\n            value: arrayToPdfArray(value, this.objId, this.scope)\n          });\n        } else if (value instanceof AcroFormPDFObject) {\n          // In case it is a reference to another PDFObject,\n          // take the reference number\n          value.scope = this.scope;\n          keyValueList.push({ key: key, value: value.objId + \" 0 R\" });\n        } else if (typeof value !== \"function\") {\n          keyValueList.push({ key: key, value: value });\n        }\n      }\n    }\n  }\n  return keyValueList;\n};\n\nvar AcroFormXObject = function() {\n  AcroFormPDFObject.call(this);\n\n  Object.defineProperty(this, \"Type\", {\n    value: \"/XObject\",\n    configurable: false,\n    writable: true\n  });\n\n  Object.defineProperty(this, \"Subtype\", {\n    value: \"/Form\",\n    configurable: false,\n    writable: true\n  });\n\n  Object.defineProperty(this, \"FormType\", {\n    value: 1,\n    configurable: false,\n    writable: true\n  });\n\n  var _BBox = [];\n  Object.defineProperty(this, \"BBox\", {\n    configurable: false,\n    get: function() {\n      return _BBox;\n    },\n    set: function(value) {\n      _BBox = value;\n    }\n  });\n\n  Object.defineProperty(this, \"Resources\", {\n    value: \"2 0 R\",\n    configurable: false,\n    writable: true\n  });\n\n  var _stream;\n  Object.defineProperty(this, \"stream\", {\n    enumerable: false,\n    configurable: true,\n    set: function(value) {\n      _stream = value.trim();\n    },\n    get: function() {\n      if (_stream) {\n        return _stream;\n      } else {\n        return null;\n      }\n    }\n  });\n};\n\ninherit(AcroFormXObject, AcroFormPDFObject);\n\nvar AcroFormDictionary = function() {\n  AcroFormPDFObject.call(this);\n\n  var _Kids = [];\n\n  Object.defineProperty(this, \"Kids\", {\n    enumerable: false,\n    configurable: true,\n    get: function() {\n      if (_Kids.length > 0) {\n        return _Kids;\n      } else {\n        return undefined;\n      }\n    }\n  });\n  Object.defineProperty(this, \"Fields\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _Kids;\n    }\n  });\n\n  // Default Appearance\n  var _DA;\n  Object.defineProperty(this, \"DA\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_DA) {\n        return undefined;\n      }\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      return \"(\" + pdfEscape(encryptor(_DA)) + \")\";\n    },\n    set: function(value) {\n      _DA = value;\n    }\n  });\n};\n\ninherit(AcroFormDictionary, AcroFormPDFObject);\n\n/**\n * The Field Object contains the Variables, that every Field needs\n *\n * @class AcroFormField\n * @classdesc An AcroForm FieldObject\n */\nvar AcroFormField = function() {\n  AcroFormPDFObject.call(this);\n\n  //Annotation-Flag See Table 165\n  var _F = 4;\n  Object.defineProperty(this, \"F\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _F;\n    },\n    set: function(value) {\n      if (!isNaN(value)) {\n        _F = value;\n      } else {\n        throw new Error(\n          'Invalid value \"' + value + '\" for attribute F supplied.'\n        );\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.2) If set, print the annotation when the page is printed. If clear, never print the annotation, regardless of wether is is displayed on the screen.\n   * NOTE 2 This can be useful for annotations representing interactive pushbuttons, which would serve no meaningful purpose on the printed page.\n   *\n   * @name AcroFormField#showWhenPrinted\n   * @default true\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"showWhenPrinted\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(_F, 3));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.F = setBitForPdf(_F, 3);\n      } else {\n        this.F = clearBitForPdf(_F, 3);\n      }\n    }\n  });\n\n  var _Ff = 0;\n  Object.defineProperty(this, \"Ff\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _Ff;\n    },\n    set: function(value) {\n      if (!isNaN(value)) {\n        _Ff = value;\n      } else {\n        throw new Error(\n          'Invalid value \"' + value + '\" for attribute Ff supplied.'\n        );\n      }\n    }\n  });\n\n  var _Rect = [];\n  Object.defineProperty(this, \"Rect\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (_Rect.length === 0) {\n        return undefined;\n      }\n      return _Rect;\n    },\n    set: function(value) {\n      if (typeof value !== \"undefined\") {\n        _Rect = value;\n      } else {\n        _Rect = [];\n      }\n    }\n  });\n\n  /**\n   * The x-position of the field.\n   *\n   * @name AcroFormField#x\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"x\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[0])) {\n        return 0;\n      }\n      return _Rect[0];\n    },\n    set: function(value) {\n      _Rect[0] = value;\n    }\n  });\n\n  /**\n   * The y-position of the field.\n   *\n   * @name AcroFormField#y\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"y\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[1])) {\n        return 0;\n      }\n      return _Rect[1];\n    },\n    set: function(value) {\n      _Rect[1] = value;\n    }\n  });\n\n  /**\n   * The width of the field.\n   *\n   * @name AcroFormField#width\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"width\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[2])) {\n        return 0;\n      }\n      return _Rect[2];\n    },\n    set: function(value) {\n      _Rect[2] = value;\n    }\n  });\n\n  /**\n   * The height of the field.\n   *\n   * @name AcroFormField#height\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"height\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[3])) {\n        return 0;\n      }\n      return _Rect[3];\n    },\n    set: function(value) {\n      _Rect[3] = value;\n    }\n  });\n\n  var _FT = \"\";\n  Object.defineProperty(this, \"FT\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _FT;\n    },\n    set: function(value) {\n      switch (value) {\n        case \"/Btn\":\n        case \"/Tx\":\n        case \"/Ch\":\n        case \"/Sig\":\n          _FT = value;\n          break;\n        default:\n          throw new Error(\n            'Invalid value \"' + value + '\" for attribute FT supplied.'\n          );\n      }\n    }\n  });\n\n  var _T = null;\n\n  Object.defineProperty(this, \"T\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      if (!_T || _T.length < 1) {\n        // In case of a Child from a Radio´Group, you don't need a FieldName\n        if (this instanceof AcroFormChildClass) {\n          return undefined;\n        }\n        _T = \"FieldObject\" + AcroFormField.FieldNum++;\n      }\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      return \"(\" + pdfEscape(encryptor(_T)) + \")\";\n    },\n    set: function(value) {\n      _T = value.toString();\n    }\n  });\n\n  /**\n   * (Optional) The partial field name (see 12.7.3.2, “Field Names”).\n   *\n   * @name AcroFormField#fieldName\n   * @default null\n   * @type {string}\n   */\n  Object.defineProperty(this, \"fieldName\", {\n    configurable: true,\n    enumerable: true,\n    get: function() {\n      return _T;\n    },\n    set: function(value) {\n      _T = value;\n    }\n  });\n\n  var _fontName = \"helvetica\";\n  /**\n   * The fontName of the font to be used.\n   *\n   * @name AcroFormField#fontName\n   * @default 'helvetica'\n   * @type {string}\n   */\n  Object.defineProperty(this, \"fontName\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _fontName;\n    },\n    set: function(value) {\n      _fontName = value;\n    }\n  });\n\n  var _fontStyle = \"normal\";\n  /**\n   * The fontStyle of the font to be used.\n   *\n   * @name AcroFormField#fontStyle\n   * @default 'normal'\n   * @type {string}\n   */\n  Object.defineProperty(this, \"fontStyle\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _fontStyle;\n    },\n    set: function(value) {\n      _fontStyle = value;\n    }\n  });\n\n  var _fontSize = 0;\n  /**\n   * The fontSize of the font to be used.\n   *\n   * @name AcroFormField#fontSize\n   * @default 0 (for auto)\n   * @type {number}\n   */\n  Object.defineProperty(this, \"fontSize\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _fontSize;\n    },\n    set: function(value) {\n      _fontSize = value;\n    }\n  });\n\n  var _maxFontSize = undefined;\n  /**\n   * The maximum fontSize of the font to be used.\n   *\n   * @name AcroFormField#maxFontSize\n   * @default 0 (for auto)\n   * @type {number}\n   */\n  Object.defineProperty(this, \"maxFontSize\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (_maxFontSize === undefined) {\n        // use the old default value here - the value is some kind of random as it depends on the scaleFactor (user unit)\n        // (\"50\" is transformed to the \"user space\" but then used in \"pdf space\")\n        return 50 / scaleFactor;\n      } else {\n        return _maxFontSize;\n      }\n    },\n    set: function(value) {\n      _maxFontSize = value;\n    }\n  });\n\n  var _color = \"black\";\n  /**\n   * The color of the text\n   *\n   * @name AcroFormField#color\n   * @default 'black'\n   * @type {string|rgba}\n   */\n  Object.defineProperty(this, \"color\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _color;\n    },\n    set: function(value) {\n      _color = value;\n    }\n  });\n\n  var _DA = \"/F1 0 Tf 0 g\";\n  // Defines the default appearance (Needed for variable Text)\n  Object.defineProperty(this, \"DA\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      if (\n        !_DA ||\n        this instanceof AcroFormChildClass ||\n        this instanceof AcroFormTextField\n      ) {\n        return undefined;\n      }\n      return toPdfString(_DA, this.objId, this.scope);\n    },\n    set: function(value) {\n      value = value.toString();\n      _DA = value;\n    }\n  });\n\n  var _DV = null;\n  Object.defineProperty(this, \"DV\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_DV) {\n        return undefined;\n      }\n      if (this instanceof AcroFormButton === false) {\n        return toPdfString(_DV, this.objId, this.scope);\n      }\n      return _DV;\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === false) {\n        if (value.substr(0, 1) === \"(\") {\n          _DV = pdfUnescape(value.substr(1, value.length - 2));\n        } else {\n          _DV = pdfUnescape(value);\n        }\n      } else {\n        _DV = value;\n      }\n    }\n  });\n\n  /**\n   * (Optional; inheritable) The default value to which the field reverts when a reset-form action is executed (see 12.7.5.3, “Reset-Form Action”). The format of this value is the same as that of value.\n   *\n   * @name AcroFormField#defaultValue\n   * @default null\n   * @type {any}\n   */\n  Object.defineProperty(this, \"defaultValue\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (this instanceof AcroFormButton === true) {\n        return pdfUnescape(_DV.substr(1, _DV.length - 1));\n      } else {\n        return _DV;\n      }\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === true) {\n        _DV = \"/\" + value;\n      } else {\n        _DV = value;\n      }\n    }\n  });\n\n  var _V = null;\n  Object.defineProperty(this, \"_V\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_V) {\n        return undefined;\n      }\n      return _V;\n    },\n    set: function(value) {\n      this.V = value;\n    }\n  });\n  Object.defineProperty(this, \"V\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_V) {\n        return undefined;\n      }\n      if (this instanceof AcroFormButton === false) {\n        return toPdfString(_V, this.objId, this.scope);\n      }\n      return _V;\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === false) {\n        if (value.substr(0, 1) === \"(\") {\n          _V = pdfUnescape(value.substr(1, value.length - 2));\n        } else {\n          _V = pdfUnescape(value);\n        }\n      } else {\n        _V = value;\n      }\n    }\n  });\n\n  /**\n   * (Optional; inheritable) The field’s value, whose format varies depending on the field type. See the descriptions of individual field types for further information.\n   *\n   * @name AcroFormField#value\n   * @default null\n   * @type {any}\n   */\n  Object.defineProperty(this, \"value\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (this instanceof AcroFormButton === true) {\n        return pdfUnescape(_V.substr(1, _V.length - 1));\n      } else {\n        return _V;\n      }\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === true) {\n        _V = \"/\" + value;\n      } else {\n        _V = value;\n      }\n    }\n  });\n\n  /**\n   * Check if field has annotations\n   *\n   * @name AcroFormField#hasAnnotation\n   * @readonly\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"hasAnnotation\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return this.Rect;\n    }\n  });\n\n  Object.defineProperty(this, \"Type\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return this.hasAnnotation ? \"/Annot\" : null;\n    }\n  });\n\n  Object.defineProperty(this, \"Subtype\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return this.hasAnnotation ? \"/Widget\" : null;\n    }\n  });\n\n  var _hasAppearanceStream = false;\n  /**\n   * true if field has an appearanceStream\n   *\n   * @name AcroFormField#hasAppearanceStream\n   * @readonly\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"hasAppearanceStream\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _hasAppearanceStream;\n    },\n    set: function(value) {\n      value = Boolean(value);\n      _hasAppearanceStream = value;\n    }\n  });\n\n  /**\n   * The page on which the AcroFormField is placed\n   *\n   * @name AcroFormField#page\n   * @type {number}\n   */\n  var _page;\n  Object.defineProperty(this, \"page\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_page) {\n        return undefined;\n      }\n      return _page;\n    },\n    set: function(value) {\n      _page = value;\n    }\n  });\n\n  /**\n   * If set, the user may not change the value of the field. Any associated widget annotations will not interact with the user; that is, they will not respond to mouse clicks or change their appearance in response to mouse motions. This flag is useful for fields whose values are computed or imported from a database.\n   *\n   * @name AcroFormField#readOnly\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"readOnly\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 1));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 1);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 1);\n      }\n    }\n  });\n\n  /**\n   * If set, the field shall have a value at the time it is exported by a submitform action (see 12.7.5.2, “Submit-Form Action”).\n   *\n   * @name AcroFormField#required\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"required\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 2));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 2);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 2);\n      }\n    }\n  });\n\n  /**\n   * If set, the field shall not be exported by a submit-form action (see 12.7.5.2, “Submit-Form Action”)\n   *\n   * @name AcroFormField#noExport\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"noExport\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 3));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 3);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 3);\n      }\n    }\n  });\n\n  var _Q = null;\n  Object.defineProperty(this, \"Q\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      if (_Q === null) {\n        return undefined;\n      }\n      return _Q;\n    },\n    set: function(value) {\n      if ([0, 1, 2].indexOf(value) !== -1) {\n        _Q = value;\n      } else {\n        throw new Error(\n          'Invalid value \"' + value + '\" for attribute Q supplied.'\n        );\n      }\n    }\n  });\n\n  /**\n   * (Optional; inheritable) A code specifying the form of quadding (justification) that shall be used in displaying the text:\n   * 'left', 'center', 'right'\n   *\n   * @name AcroFormField#textAlign\n   * @default 'left'\n   * @type {string}\n   */\n  Object.defineProperty(this, \"textAlign\", {\n    get: function() {\n      var result;\n      switch (_Q) {\n        case 0:\n        default:\n          result = \"left\";\n          break;\n        case 1:\n          result = \"center\";\n          break;\n        case 2:\n          result = \"right\";\n          break;\n      }\n      return result;\n    },\n    configurable: true,\n    enumerable: true,\n    set: function(value) {\n      switch (value) {\n        case \"right\":\n        case 2:\n          _Q = 2;\n          break;\n        case \"center\":\n        case 1:\n          _Q = 1;\n          break;\n        case \"left\":\n        case 0:\n        default:\n          _Q = 0;\n      }\n    }\n  });\n};\n\ninherit(AcroFormField, AcroFormPDFObject);\n\n/**\n * @class AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormChoiceField = function() {\n  AcroFormField.call(this);\n  // Field Type = Choice Field\n  this.FT = \"/Ch\";\n  // options\n  this.V = \"()\";\n\n  this.fontName = \"zapfdingbats\";\n  // Top Index\n  var _TI = 0;\n\n  Object.defineProperty(this, \"TI\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _TI;\n    },\n    set: function(value) {\n      _TI = value;\n    }\n  });\n\n  /**\n   * (Optional) For scrollable list boxes, the top index (the index in the Opt array of the first option visible in the list). Default value: 0.\n   *\n   * @name AcroFormChoiceField#topIndex\n   * @default 0\n   * @type {number}\n   */\n  Object.defineProperty(this, \"topIndex\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _TI;\n    },\n    set: function(value) {\n      _TI = value;\n    }\n  });\n\n  var _Opt = [];\n  Object.defineProperty(this, \"Opt\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return arrayToPdfArray(_Opt, this.objId, this.scope);\n    },\n    set: function(value) {\n      _Opt = pdfArrayToStringArray(value);\n    }\n  });\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name getOptions\n   * @function\n   * @instance\n   * @returns {array} array of Options\n   */\n  this.getOptions = function() {\n    return _Opt;\n  };\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name setOptions\n   * @function\n   * @instance\n   * @param {array} value\n   */\n  this.setOptions = function(value) {\n    _Opt = value;\n    if (this.sort) {\n      _Opt.sort();\n    }\n  };\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name addOption\n   * @function\n   * @instance\n   * @param {string} value\n   */\n  this.addOption = function(value) {\n    value = value || \"\";\n    value = value.toString();\n    _Opt.push(value);\n    if (this.sort) {\n      _Opt.sort();\n    }\n  };\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name removeOption\n   * @function\n   * @instance\n   * @param {string} value\n   * @param {boolean} allEntries (default: false)\n   */\n  this.removeOption = function(value, allEntries) {\n    allEntries = allEntries || false;\n    value = value || \"\";\n    value = value.toString();\n\n    while (_Opt.indexOf(value) !== -1) {\n      _Opt.splice(_Opt.indexOf(value), 1);\n      if (allEntries === false) {\n        break;\n      }\n    }\n  };\n\n  /**\n   * If set, the field is a combo box; if clear, the field is a list box.\n   *\n   * @name AcroFormChoiceField#combo\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"combo\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 18));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 18);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 18);\n      }\n    }\n  });\n\n  /**\n   * If set, the combo box shall include an editable text box as well as a drop-down list; if clear, it shall include only a drop-down list. This flag shall be used only if the Combo flag is set.\n   *\n   * @name AcroFormChoiceField#edit\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"edit\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 19));\n    },\n    set: function(value) {\n      //PDF 32000-1:2008, page 444\n      if (this.combo === true) {\n        if (Boolean(value) === true) {\n          this.Ff = setBitForPdf(this.Ff, 19);\n        } else {\n          this.Ff = clearBitForPdf(this.Ff, 19);\n        }\n      }\n    }\n  });\n\n  /**\n   * If set, the field’s option items shall be sorted alphabetically. This flag is intended for use by writers, not by readers. Conforming readers shall display the options in the order in which they occur in the Opt array (see Table 231).\n   *\n   * @name AcroFormChoiceField#sort\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"sort\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 20));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 20);\n        _Opt.sort();\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 20);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, more than one of the field’s option items may be selected simultaneously; if clear, at most one item shall be selected\n   *\n   * @name AcroFormChoiceField#multiSelect\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"multiSelect\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 22));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 22);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 22);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, text entered in the field shall not be spellchecked. This flag shall not be used unless the Combo and Edit flags are both set.\n   *\n   * @name AcroFormChoiceField#doNotSpellCheck\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"doNotSpellCheck\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 23));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 23);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 23);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) If set, the new value shall be committed as soon as a selection is made (commonly with the pointing device). In this case, supplying a value for a field involves three actions: selecting the field for fill-in, selecting a choice for the fill-in value, and leaving that field, which finalizes or “commits” the data choice and triggers any actions associated with the entry or changing of this data. If this flag is on, then processing does not wait for leaving the field action to occur, but immediately proceeds to the third step.\n   * This option enables applications to perform an action once a selection is made, without requiring the user to exit the field. If clear, the new value is not committed until the user exits the field.\n   *\n   * @name AcroFormChoiceField#commitOnSelChange\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"commitOnSelChange\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 27));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 27);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 27);\n      }\n    }\n  });\n\n  this.hasAppearanceStream = false;\n};\ninherit(AcroFormChoiceField, AcroFormField);\n\n/**\n * @class AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormListBox = function() {\n  AcroFormChoiceField.call(this);\n  this.fontName = \"helvetica\";\n\n  //PDF 32000-1:2008, page 444\n  this.combo = false;\n};\ninherit(AcroFormListBox, AcroFormChoiceField);\n\n/**\n * @class AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormComboBox = function() {\n  AcroFormListBox.call(this);\n  this.combo = true;\n};\ninherit(AcroFormComboBox, AcroFormListBox);\n\n/**\n * @class AcroFormEditBox\n * @extends AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormEditBox = function() {\n  AcroFormComboBox.call(this);\n  this.edit = true;\n};\ninherit(AcroFormEditBox, AcroFormComboBox);\n\n/**\n * @class AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormButton = function() {\n  AcroFormField.call(this);\n  this.FT = \"/Btn\";\n\n  /**\n   * (Radio buttons only) If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. If clear, clicking the selected button deselects it, leaving no button selected.\n   *\n   * @name AcroFormButton#noToggleToOff\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"noToggleToOff\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 15));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 15);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 15);\n      }\n    }\n  });\n\n  /**\n   * If set, the field is a set of radio buttons; if clear, the field is a checkbox. This flag may be set only if the Pushbutton flag is clear.\n   *\n   * @name AcroFormButton#radio\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"radio\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 16));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 16);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 16);\n      }\n    }\n  });\n\n  /**\n   * If set, the field is a pushbutton that does not retain a permanent value.\n   *\n   * @name AcroFormButton#pushButton\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"pushButton\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 17));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 17);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 17);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) If set, a group of radio buttons within a radio button field that use the same value for the on state will turn on and off in unison; that is if one is checked, they are all checked. If clear, the buttons are mutually exclusive (the same behavior as HTML radio buttons).\n   *\n   * @name AcroFormButton#radioIsUnison\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"radioIsUnison\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 26));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 26);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 26);\n      }\n    }\n  });\n\n  var _MK = {};\n  Object.defineProperty(this, \"MK\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      if (Object.keys(_MK).length !== 0) {\n        var result = [];\n        result.push(\"<<\");\n        var key;\n        for (key in _MK) {\n          result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n        }\n        result.push(\">>\");\n        return result.join(\"\\n\");\n      }\n      return undefined;\n    },\n    set: function(value) {\n      if (typeof value === \"object\") {\n        _MK = value;\n      }\n    }\n  });\n\n  /**\n   * From the PDF reference:\n   * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n   * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n   *\n   * - '8' = Cross,\n   * - 'l' =  Circle,\n   * - '' = nothing\n   * @name AcroFormButton#caption\n   * @type {string}\n   */\n  Object.defineProperty(this, \"caption\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _MK.CA || \"\";\n    },\n    set: function(value) {\n      if (typeof value === \"string\") {\n        _MK.CA = value;\n      }\n    }\n  });\n\n  var _AS;\n  Object.defineProperty(this, \"AS\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _AS;\n    },\n    set: function(value) {\n      _AS = value;\n    }\n  });\n\n  /**\n   * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n   *\n   * @name AcroFormButton#appearanceState\n   * @type {any}\n   */\n  Object.defineProperty(this, \"appearanceState\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _AS.substr(1, _AS.length - 1);\n    },\n    set: function(value) {\n      _AS = \"/\" + value;\n    }\n  });\n};\ninherit(AcroFormButton, AcroFormField);\n\n/**\n * @class AcroFormPushButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormPushButton = function() {\n  AcroFormButton.call(this);\n  this.pushButton = true;\n};\ninherit(AcroFormPushButton, AcroFormButton);\n\n/**\n * @class AcroFormRadioButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormRadioButton = function() {\n  AcroFormButton.call(this);\n  this.radio = true;\n  this.pushButton = false;\n\n  var _Kids = [];\n  Object.defineProperty(this, \"Kids\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _Kids;\n    },\n    set: function(value) {\n      if (typeof value !== \"undefined\") {\n        _Kids = value;\n      } else {\n        _Kids = [];\n      }\n    }\n  });\n};\ninherit(AcroFormRadioButton, AcroFormButton);\n\n/**\n * The Child class of a RadioButton (the radioGroup) -> The single Buttons\n *\n * @class AcroFormChildClass\n * @extends AcroFormField\n * @ignore\n */\nvar AcroFormChildClass = function() {\n  AcroFormField.call(this);\n\n  var _parent;\n  Object.defineProperty(this, \"Parent\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _parent;\n    },\n    set: function(value) {\n      _parent = value;\n    }\n  });\n\n  var _optionName;\n  Object.defineProperty(this, \"optionName\", {\n    enumerable: false,\n    configurable: true,\n    get: function() {\n      return _optionName;\n    },\n    set: function(value) {\n      _optionName = value;\n    }\n  });\n\n  var _MK = {};\n  Object.defineProperty(this, \"MK\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      var result = [];\n      result.push(\"<<\");\n      var key;\n      for (key in _MK) {\n        result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n      }\n      result.push(\">>\");\n      return result.join(\"\\n\");\n    },\n    set: function(value) {\n      if (typeof value === \"object\") {\n        _MK = value;\n      }\n    }\n  });\n\n  /**\n   * From the PDF reference:\n   * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n   * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n   *\n   * - '8' = Cross,\n   * - 'l' =  Circle,\n   * - '' = nothing\n   * @name AcroFormButton#caption\n   * @type {string}\n   */\n  Object.defineProperty(this, \"caption\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _MK.CA || \"\";\n    },\n    set: function(value) {\n      if (typeof value === \"string\") {\n        _MK.CA = value;\n      }\n    }\n  });\n\n  var _AS;\n  Object.defineProperty(this, \"AS\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _AS;\n    },\n    set: function(value) {\n      _AS = value;\n    }\n  });\n\n  /**\n   * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n   *\n   * @name AcroFormButton#appearanceState\n   * @type {any}\n   */\n  Object.defineProperty(this, \"appearanceState\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _AS.substr(1, _AS.length - 1);\n    },\n    set: function(value) {\n      _AS = \"/\" + value;\n    }\n  });\n  this.caption = \"l\";\n  this.appearanceState = \"Off\";\n  // todo: set AppearanceType as variable that can be set from the\n  // outside...\n  this._AppearanceType = AcroFormAppearance.RadioButton.Circle;\n  // The Default appearanceType is the Circle\n  this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(\n    this.optionName\n  );\n};\ninherit(AcroFormChildClass, AcroFormField);\n\nAcroFormRadioButton.prototype.setAppearance = function(appearance) {\n  if (!(\"createAppearanceStream\" in appearance && \"getCA\" in appearance)) {\n    throw new Error(\n      \"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\"\n    );\n  }\n  for (var objId in this.Kids) {\n    if (this.Kids.hasOwnProperty(objId)) {\n      var child = this.Kids[objId];\n      child.appearanceStreamContent = appearance.createAppearanceStream(\n        child.optionName\n      );\n      child.caption = appearance.getCA();\n    }\n  }\n};\n\nAcroFormRadioButton.prototype.createOption = function(name) {\n  // Create new Child for RadioGroup\n  var child = new AcroFormChildClass();\n  child.Parent = this;\n  child.optionName = name;\n  // Add to Parent\n  this.Kids.push(child);\n\n  addField.call(this.scope, child);\n\n  return child;\n};\n\n/**\n * @class AcroFormCheckBox\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormCheckBox = function() {\n  AcroFormButton.call(this);\n\n  this.fontName = \"zapfdingbats\";\n  this.caption = \"3\";\n  this.appearanceState = \"On\";\n  this.value = \"On\";\n  this.textAlign = \"center\";\n  this.appearanceStreamContent = AcroFormAppearance.CheckBox.createAppearanceStream();\n};\ninherit(AcroFormCheckBox, AcroFormButton);\n\n/**\n * @class AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormTextField = function() {\n  AcroFormField.call(this);\n  this.FT = \"/Tx\";\n\n  /**\n   * If set, the field may contain multiple lines of text; if clear, the field’s text shall be restricted to a single line.\n   *\n   * @name AcroFormTextField#multiline\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"multiline\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 13));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 13);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 13);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, the text entered in the field represents the pathname of a file whose contents shall be submitted as the value of the field.\n   *\n   * @name AcroFormTextField#fileSelect\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"fileSelect\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 21));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 21);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 21);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, text entered in the field shall not be spell-checked.\n   *\n   * @name AcroFormTextField#doNotSpellCheck\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"doNotSpellCheck\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 23));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 23);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 23);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, the field shall not scroll (horizontally for single-line fields, vertically for multiple-line fields) to accommodate more text than fits within its annotation rectangle. Once the field is full, no further text shall be accepted for interactive form filling; for noninteractive form filling, the filler should take care not to add more character than will visibly fit in the defined area.\n   *\n   * @name AcroFormTextField#doNotScroll\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"doNotScroll\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 24));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 24);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 24);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) May be set only if the MaxLen entry is present in the text field dictionary (see Table 229) and if the Multiline, Password, and FileSelect flags are clear. If set, the field shall be automatically divided into as many equally spaced positions, or combs, as the value of MaxLen, and the text is laid out into those combs.\n   *\n   * @name AcroFormTextField#comb\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"comb\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 25));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 25);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 25);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) If set, the value of this field shall be a rich text string (see 12.7.3.4, “Rich Text Strings”). If the field has a value, the RV entry of the field dictionary (Table 222) shall specify the rich text string.\n   *\n   * @name AcroFormTextField#richText\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"richText\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 26));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 26);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 26);\n      }\n    }\n  });\n\n  var _MaxLen = null;\n  Object.defineProperty(this, \"MaxLen\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _MaxLen;\n    },\n    set: function(value) {\n      _MaxLen = value;\n    }\n  });\n\n  /**\n   * (Optional; inheritable) The maximum length of the field’s text, in characters.\n   *\n   * @name AcroFormTextField#maxLength\n   * @type {number}\n   */\n  Object.defineProperty(this, \"maxLength\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _MaxLen;\n    },\n    set: function(value) {\n      if (Number.isInteger(value)) {\n        _MaxLen = value;\n      }\n    }\n  });\n\n  Object.defineProperty(this, \"hasAppearanceStream\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return this.V || this.DV;\n    }\n  });\n};\ninherit(AcroFormTextField, AcroFormField);\n\n/**\n * @class AcroFormPasswordField\n * @extends AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormPasswordField = function() {\n  AcroFormTextField.call(this);\n\n  /**\n   * If set, the field is intended for entering a secure password that should not be echoed visibly to the screen. Characters typed from the keyboard shall instead be echoed in some unreadable form, such as asterisks or bullet characters.\n   * NOTE To protect password confidentiality, readers should never store the value of the text field in the PDF file if this flag is set.\n   *\n   * @name AcroFormTextField#password\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"password\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 14));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 14);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 14);\n      }\n    }\n  });\n  this.password = true;\n};\ninherit(AcroFormPasswordField, AcroFormTextField);\n\n// Contains Methods for creating standard appearances\nvar AcroFormAppearance = {\n  CheckBox: {\n    createAppearanceStream: function() {\n      var appearance = {\n        N: {\n          On: AcroFormAppearance.CheckBox.YesNormal\n        },\n        D: {\n          On: AcroFormAppearance.CheckBox.YesPushDown,\n          Off: AcroFormAppearance.CheckBox.OffPushDown\n        }\n      };\n\n      return appearance;\n    },\n    /**\n     * Returns the standard On Appearance for a CheckBox\n     *\n     * @returns {AcroFormXObject}\n     */\n    YesPushDown: function(formObject) {\n      var xobj = createFormXObject(formObject);\n      xobj.scope = formObject.scope;\n      var stream = [];\n      var fontKey = formObject.scope.internal.getFont(\n        formObject.fontName,\n        formObject.fontStyle\n      ).id;\n      var encodedColor = formObject.scope.__private__.encodeColorString(\n        formObject.color\n      );\n      var calcRes = calculateX(formObject, formObject.caption);\n      stream.push(\"0.749023 g\");\n      stream.push(\n        \"0 0 \" +\n          f2(AcroFormAppearance.internal.getWidth(formObject)) +\n          \" \" +\n          f2(AcroFormAppearance.internal.getHeight(formObject)) +\n          \" re\"\n      );\n      stream.push(\"f\");\n      stream.push(\"BMC\");\n      stream.push(\"q\");\n      stream.push(\"0 0 1 rg\");\n      stream.push(\n        \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n      );\n      stream.push(\"BT\");\n      stream.push(calcRes.text);\n      stream.push(\"ET\");\n      stream.push(\"Q\");\n      stream.push(\"EMC\");\n      xobj.stream = stream.join(\"\\n\");\n      return xobj;\n    },\n\n    YesNormal: function(formObject) {\n      var xobj = createFormXObject(formObject);\n      xobj.scope = formObject.scope;\n      var fontKey = formObject.scope.internal.getFont(\n        formObject.fontName,\n        formObject.fontStyle\n      ).id;\n      var encodedColor = formObject.scope.__private__.encodeColorString(\n        formObject.color\n      );\n      var stream = [];\n      var height = AcroFormAppearance.internal.getHeight(formObject);\n      var width = AcroFormAppearance.internal.getWidth(formObject);\n      var calcRes = calculateX(formObject, formObject.caption);\n      stream.push(\"1 g\");\n      stream.push(\"0 0 \" + f2(width) + \" \" + f2(height) + \" re\");\n      stream.push(\"f\");\n      stream.push(\"q\");\n      stream.push(\"0 0 1 rg\");\n      stream.push(\"0 0 \" + f2(width - 1) + \" \" + f2(height - 1) + \" re\");\n      stream.push(\"W\");\n      stream.push(\"n\");\n      stream.push(\"0 g\");\n      stream.push(\"BT\");\n      stream.push(\n        \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n      );\n      stream.push(calcRes.text);\n      stream.push(\"ET\");\n      stream.push(\"Q\");\n      xobj.stream = stream.join(\"\\n\");\n      return xobj;\n    },\n\n    /**\n     * Returns the standard Off Appearance for a CheckBox\n     *\n     * @returns {AcroFormXObject}\n     */\n    OffPushDown: function(formObject) {\n      var xobj = createFormXObject(formObject);\n      xobj.scope = formObject.scope;\n      var stream = [];\n      stream.push(\"0.749023 g\");\n      stream.push(\n        \"0 0 \" +\n          f2(AcroFormAppearance.internal.getWidth(formObject)) +\n          \" \" +\n          f2(AcroFormAppearance.internal.getHeight(formObject)) +\n          \" re\"\n      );\n      stream.push(\"f\");\n      xobj.stream = stream.join(\"\\n\");\n      return xobj;\n    }\n  },\n\n  RadioButton: {\n    Circle: {\n      createAppearanceStream: function(name) {\n        var appearanceStreamContent = {\n          D: {\n            Off: AcroFormAppearance.RadioButton.Circle.OffPushDown\n          },\n          N: {}\n        };\n        appearanceStreamContent.N[name] =\n          AcroFormAppearance.RadioButton.Circle.YesNormal;\n        appearanceStreamContent.D[name] =\n          AcroFormAppearance.RadioButton.Circle.YesPushDown;\n        return appearanceStreamContent;\n      },\n      getCA: function() {\n        return \"l\";\n      },\n\n      YesNormal: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        // Make the Radius of the Circle relative to min(height, width) of formObject\n        var DotRadius =\n          AcroFormAppearance.internal.getWidth(formObject) <=\n          AcroFormAppearance.internal.getHeight(formObject)\n            ? AcroFormAppearance.internal.getWidth(formObject) / 4\n            : AcroFormAppearance.internal.getHeight(formObject) / 4;\n        // The Borderpadding...\n        DotRadius = Number((DotRadius * 0.9).toFixed(5));\n        var c = AcroFormAppearance.internal.Bezier_C;\n        var DotRadiusBezier = Number((DotRadius * c).toFixed(5));\n        /*\n         * The Following is a Circle created with Bezier-Curves.\n         */\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(DotRadius + \" 0 m\");\n        stream.push(\n          DotRadius +\n            \" \" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadius +\n            \" 0 \" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          \"-\" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            DotRadiusBezier +\n            \" -\" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\n          \"-\" +\n            DotRadius +\n            \" -\" +\n            DotRadiusBezier +\n            \" -\" +\n            DotRadiusBezier +\n            \" -\" +\n            DotRadius +\n            \" 0 -\" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          DotRadiusBezier +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      YesPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        var DotRadius =\n          AcroFormAppearance.internal.getWidth(formObject) <=\n          AcroFormAppearance.internal.getHeight(formObject)\n            ? AcroFormAppearance.internal.getWidth(formObject) / 4\n            : AcroFormAppearance.internal.getHeight(formObject) / 4;\n        // The Borderpadding...\n        DotRadius = Number((DotRadius * 0.9).toFixed(5));\n        // Save results for later use; no need to waste\n        // processor ticks on doing math\n        var k = Number((DotRadius * 2).toFixed(5));\n        var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n        var dc = Number(\n          (DotRadius * AcroFormAppearance.internal.Bezier_C).toFixed(5)\n        );\n\n        stream.push(\"0.749023 g\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(k + \" 0 m\");\n        stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n        stream.push(\n          \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n        );\n        stream.push(\n          \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n        );\n        stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        stream.push(\"0 g\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(DotRadius + \" 0 m\");\n        stream.push(\n          \"\" +\n            DotRadius +\n            \" \" +\n            dc +\n            \" \" +\n            dc +\n            \" \" +\n            DotRadius +\n            \" 0 \" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          \"-\" +\n            dc +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            dc +\n            \" -\" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\n          \"-\" +\n            DotRadius +\n            \" -\" +\n            dc +\n            \" -\" +\n            dc +\n            \" -\" +\n            DotRadius +\n            \" 0 -\" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          dc +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            dc +\n            \" \" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      OffPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        var DotRadius =\n          AcroFormAppearance.internal.getWidth(formObject) <=\n          AcroFormAppearance.internal.getHeight(formObject)\n            ? AcroFormAppearance.internal.getWidth(formObject) / 4\n            : AcroFormAppearance.internal.getHeight(formObject) / 4;\n        // The Borderpadding...\n        DotRadius = Number((DotRadius * 0.9).toFixed(5));\n        // Save results for later use; no need to waste\n        // processor ticks on doing math\n        var k = Number((DotRadius * 2).toFixed(5));\n        var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n\n        stream.push(\"0.749023 g\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(k + \" 0 m\");\n        stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n        stream.push(\n          \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n        );\n        stream.push(\n          \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n        );\n        stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      }\n    },\n\n    Cross: {\n      /**\n       * Creates the Actual AppearanceDictionary-References\n       *\n       * @param {string} name\n       * @returns {Object}\n       * @ignore\n       */\n      createAppearanceStream: function(name) {\n        var appearanceStreamContent = {\n          D: {\n            Off: AcroFormAppearance.RadioButton.Cross.OffPushDown\n          },\n          N: {}\n        };\n        appearanceStreamContent.N[name] =\n          AcroFormAppearance.RadioButton.Cross.YesNormal;\n        appearanceStreamContent.D[name] =\n          AcroFormAppearance.RadioButton.Cross.YesPushDown;\n        return appearanceStreamContent;\n      },\n      getCA: function() {\n        return \"8\";\n      },\n\n      YesNormal: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        var cross = AcroFormAppearance.internal.calculateCross(formObject);\n        stream.push(\"q\");\n        stream.push(\n          \"1 1 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n            \" re\"\n        );\n        stream.push(\"W\");\n        stream.push(\"n\");\n        stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n        stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n        stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n        stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n        stream.push(\"s\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      YesPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var cross = AcroFormAppearance.internal.calculateCross(formObject);\n        var stream = [];\n        stream.push(\"0.749023 g\");\n        stream.push(\n          \"0 0 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject)) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject)) +\n            \" re\"\n        );\n        stream.push(\"f\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 1 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n            \" re\"\n        );\n        stream.push(\"W\");\n        stream.push(\"n\");\n        stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n        stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n        stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n        stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n        stream.push(\"s\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      OffPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        stream.push(\"0.749023 g\");\n        stream.push(\n          \"0 0 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject)) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject)) +\n            \" re\"\n        );\n        stream.push(\"f\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      }\n    }\n  },\n\n  /**\n   * Returns the standard Appearance\n   *\n   * @returns {AcroFormXObject}\n   */\n  createDefaultAppearanceStream: function(formObject) {\n    // Set Helvetica to Standard Font (size: auto)\n    // Color: Black\n    var fontKey = formObject.scope.internal.getFont(\n      formObject.fontName,\n      formObject.fontStyle\n    ).id;\n    var encodedColor = formObject.scope.__private__.encodeColorString(\n      formObject.color\n    );\n    var fontSize = formObject.fontSize;\n    var result = \"/\" + fontKey + \" \" + fontSize + \" Tf \" + encodedColor;\n    return result;\n  }\n};\n\nAcroFormAppearance.internal = {\n  Bezier_C: 0.551915024494,\n\n  calculateCross: function(formObject) {\n    var width = AcroFormAppearance.internal.getWidth(formObject);\n    var height = AcroFormAppearance.internal.getHeight(formObject);\n    var a = Math.min(width, height);\n\n    var cross = {\n      x1: {\n        // upperLeft\n        x: (width - a) / 2,\n        y: (height - a) / 2 + a // height - borderPadding\n      },\n      x2: {\n        // lowerRight\n        x: (width - a) / 2 + a,\n        y: (height - a) / 2 // borderPadding\n      },\n      x3: {\n        // lowerLeft\n        x: (width - a) / 2,\n        y: (height - a) / 2 // borderPadding\n      },\n      x4: {\n        // upperRight\n        x: (width - a) / 2 + a,\n        y: (height - a) / 2 + a // height - borderPadding\n      }\n    };\n\n    return cross;\n  }\n};\nAcroFormAppearance.internal.getWidth = function(formObject) {\n  var result = 0;\n  if (typeof formObject === \"object\") {\n    result = scale(formObject.Rect[2]);\n  }\n  return result;\n};\nAcroFormAppearance.internal.getHeight = function(formObject) {\n  var result = 0;\n  if (typeof formObject === \"object\") {\n    result = scale(formObject.Rect[3]);\n  }\n  return result;\n};\n\n// Public:\n\n/**\n * Add an AcroForm-Field to the jsPDF-instance\n *\n * @name addField\n * @function\n * @instance\n * @param {Object} fieldObject\n * @returns {jsPDF}\n */\nvar addField = (jsPDFAPI.addField = function(fieldObject) {\n  initializeAcroForm(this, fieldObject);\n\n  if (fieldObject instanceof AcroFormField) {\n    putForm(fieldObject);\n  } else {\n    throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n  }\n  fieldObject.page = fieldObject.scope.internal.getCurrentPageInfo().pageNumber;\n  return this;\n});\n\njsPDFAPI.AcroFormChoiceField = AcroFormChoiceField;\njsPDFAPI.AcroFormListBox = AcroFormListBox;\njsPDFAPI.AcroFormComboBox = AcroFormComboBox;\njsPDFAPI.AcroFormEditBox = AcroFormEditBox;\njsPDFAPI.AcroFormButton = AcroFormButton;\njsPDFAPI.AcroFormPushButton = AcroFormPushButton;\njsPDFAPI.AcroFormRadioButton = AcroFormRadioButton;\njsPDFAPI.AcroFormCheckBox = AcroFormCheckBox;\njsPDFAPI.AcroFormTextField = AcroFormTextField;\njsPDFAPI.AcroFormPasswordField = AcroFormPasswordField;\njsPDFAPI.AcroFormAppearance = AcroFormAppearance;\n\njsPDFAPI.AcroForm = {\n  ChoiceField: AcroFormChoiceField,\n  ListBox: AcroFormListBox,\n  ComboBox: AcroFormComboBox,\n  EditBox: AcroFormEditBox,\n  Button: AcroFormButton,\n  PushButton: AcroFormPushButton,\n  RadioButton: AcroFormRadioButton,\n  CheckBox: AcroFormCheckBox,\n  TextField: AcroFormTextField,\n  PasswordField: AcroFormPasswordField,\n  Appearance: AcroFormAppearance\n};\n\njsPDF.AcroForm = {\n  ChoiceField: AcroFormChoiceField,\n  ListBox: AcroFormListBox,\n  ComboBox: AcroFormComboBox,\n  EditBox: AcroFormEditBox,\n  Button: AcroFormButton,\n  PushButton: AcroFormPushButton,\n  RadioButton: AcroFormRadioButton,\n  CheckBox: AcroFormCheckBox,\n  TextField: AcroFormTextField,\n  PasswordField: AcroFormPasswordField,\n  Appearance: AcroFormAppearance\n};\n\nvar AcroForm = jsPDF.AcroForm;\n\nexport {\n  AcroForm,\n  AcroFormChoiceField,\n  AcroFormListBox,\n  AcroFormComboBox,\n  AcroFormEditBox,\n  AcroFormButton,\n  AcroFormPushButton,\n  AcroFormRadioButton,\n  AcroFormCheckBox,\n  AcroFormTextField,\n  AcroFormPasswordField,\n  AcroFormAppearance\n};\n", "function toLookup(arr) {\n  return arr.reduce(function(lookup, name, index) {\n    lookup[name] = index;\n\n    return lookup;\n  }, {});\n}\n\nvar fontStyleOrder = {\n  italic: [\"italic\", \"oblique\", \"normal\"],\n  oblique: [\"oblique\", \"italic\", \"normal\"],\n  normal: [\"normal\", \"oblique\", \"italic\"]\n};\n\nvar fontStretchOrder = [\n  \"ultra-condensed\",\n  \"extra-condensed\",\n  \"condensed\",\n  \"semi-condensed\",\n  \"normal\",\n  \"semi-expanded\",\n  \"expanded\",\n  \"extra-expanded\",\n  \"ultra-expanded\"\n];\n\n// For a given font-stretch value, we need to know where to start our search\n// from in the fontStretchOrder list.\nvar fontStretchLookup = toLookup(fontStretchOrder);\n\nvar fontWeights = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nvar fontWeightsLookup = toLookup(fontWeights);\n\nfunction normalizeFontStretch(stretch) {\n  stretch = stretch || \"normal\";\n\n  return typeof fontStretchLookup[stretch] === \"number\" ? stretch : \"normal\";\n}\n\nfunction normalizeFontStyle(style) {\n  style = style || \"normal\";\n\n  return fontStyleOrder[style] ? style : \"normal\";\n}\n\nfunction normalizeFontWeight(weight) {\n  if (!weight) {\n    return 400;\n  }\n\n  if (typeof weight === \"number\") {\n    // Ignore values which aren't valid font-weights.\n    return weight >= 100 && weight <= 900 && weight % 100 === 0 ? weight : 400;\n  }\n\n  if (/^\\d00$/.test(weight)) {\n    return parseInt(weight);\n  }\n\n  switch (weight) {\n    case \"bold\":\n      return 700;\n\n    case \"normal\":\n    default:\n      return 400;\n  }\n}\n\nexport function normalizeFontFace(fontFace) {\n  var family = fontFace.family.replace(/\"|'/g, \"\").toLowerCase();\n\n  var style = normalizeFontStyle(fontFace.style);\n  var weight = normalizeFontWeight(fontFace.weight);\n  var stretch = normalizeFontStretch(fontFace.stretch);\n\n  return {\n    family: family,\n    style: style,\n    weight: weight,\n    stretch: stretch,\n    src: fontFace.src || [],\n\n    // The ref property maps this font-face to the font\n    // added by the .addFont() method.\n    ref: fontFace.ref || {\n      name: family,\n      style: [stretch, style, weight].join(\" \")\n    }\n  };\n}\n\n/**\n * Turns a list of font-faces into a map, for easier lookup when resolving\n * fonts.\n * @private\n */\nexport function buildFontFaceMap(fontFaces) {\n  var map = {};\n\n  for (var i = 0; i < fontFaces.length; ++i) {\n    var normalized = normalizeFontFace(fontFaces[i]);\n\n    var name = normalized.family;\n    var stretch = normalized.stretch;\n    var style = normalized.style;\n    var weight = normalized.weight;\n\n    map[name] = map[name] || {};\n\n    map[name][stretch] = map[name][stretch] || {};\n    map[name][stretch][style] = map[name][stretch][style] || {};\n    map[name][stretch][style][weight] = normalized;\n  }\n\n  return map;\n}\n\n/**\n * Searches a map of stretches, weights, etc. in the given direction and\n * then, if no match has been found, in the opposite directions.\n *\n * @param {Object.<string, any>} matchingSet A map of the various font variations.\n * @param {any[]} order The order of the different variations\n * @param {number} pivot The starting point of the search in the order list.\n * @param {number} dir The initial direction of the search (desc = -1, asc = 1)\n * @private\n */\n\nfunction searchFromPivot(matchingSet, order, pivot, dir) {\n  var i;\n\n  for (i = pivot; i >= 0 && i < order.length; i += dir) {\n    if (matchingSet[order[i]]) {\n      return matchingSet[order[i]];\n    }\n  }\n\n  for (i = pivot; i >= 0 && i < order.length; i -= dir) {\n    if (matchingSet[order[i]]) {\n      return matchingSet[order[i]];\n    }\n  }\n}\n\nfunction resolveFontStretch(stretch, matchingSet) {\n  if (matchingSet[stretch]) {\n    return matchingSet[stretch];\n  }\n\n  var pivot = fontStretchLookup[stretch];\n\n  // If the font-stretch value is normal or more condensed, we want to\n  // start with a descending search, otherwise we should do ascending.\n  var dir = pivot <= fontStretchLookup[\"normal\"] ? -1 : 1;\n  var match = searchFromPivot(matchingSet, fontStretchOrder, pivot, dir);\n\n  if (!match) {\n    // Since a font-family cannot exist without having at least one stretch value\n    // we should never reach this point.\n    throw new Error(\n      \"Could not find a matching font-stretch value for \" + stretch\n    );\n  }\n\n  return match;\n}\n\nfunction resolveFontStyle(fontStyle, matchingSet) {\n  if (matchingSet[fontStyle]) {\n    return matchingSet[fontStyle];\n  }\n\n  var ordering = fontStyleOrder[fontStyle];\n\n  for (var i = 0; i < ordering.length; ++i) {\n    if (matchingSet[ordering[i]]) {\n      return matchingSet[ordering[i]];\n    }\n  }\n\n  // Since a font-family cannot exist without having at least one style value\n  // we should never reach this point.\n  throw new Error(\"Could not find a matching font-style for \" + fontStyle);\n}\n\nfunction resolveFontWeight(weight, matchingSet) {\n  if (matchingSet[weight]) {\n    return matchingSet[weight];\n  }\n\n  if (weight === 400 && matchingSet[500]) {\n    return matchingSet[500];\n  }\n\n  if (weight === 500 && matchingSet[400]) {\n    return matchingSet[400];\n  }\n\n  var pivot = fontWeightsLookup[weight];\n\n  // If the font-stretch value is normal or more condensed, we want to\n  // start with a descending search, otherwise we should do ascending.\n  var dir = weight < 400 ? -1 : 1;\n  var match = searchFromPivot(matchingSet, fontWeights, pivot, dir);\n\n  if (!match) {\n    // Since a font-family cannot exist without having at least one stretch value\n    // we should never reach this point.\n    throw new Error(\n      \"Could not find a matching font-weight for value \" + weight\n    );\n  }\n\n  return match;\n}\n\nvar defaultGenericFontFamilies = {\n  \"sans-serif\": \"helvetica\",\n  fixed: \"courier\",\n  monospace: \"courier\",\n  terminal: \"courier\",\n  cursive: \"times\",\n  fantasy: \"times\",\n  serif: \"times\"\n};\n\nvar systemFonts = {\n  caption: \"times\",\n  icon: \"times\",\n  menu: \"times\",\n  \"message-box\": \"times\",\n  \"small-caption\": \"times\",\n  \"status-bar\": \"times\"\n};\n\nfunction ruleToString(rule) {\n  return [rule.stretch, rule.style, rule.weight, rule.family].join(\" \");\n}\n\nexport function resolveFontFace(fontFaceMap, rules, opts) {\n  opts = opts || {};\n\n  var defaultFontFamily = opts.defaultFontFamily || \"times\";\n  var genericFontFamilies = Object.assign(\n    {},\n    defaultGenericFontFamilies,\n    opts.genericFontFamilies || {}\n  );\n\n  var rule = null;\n  var matches = null;\n\n  for (var i = 0; i < rules.length; ++i) {\n    rule = normalizeFontFace(rules[i]);\n\n    if (genericFontFamilies[rule.family]) {\n      rule.family = genericFontFamilies[rule.family];\n    }\n\n    if (fontFaceMap.hasOwnProperty(rule.family)) {\n      matches = fontFaceMap[rule.family];\n\n      break;\n    }\n  }\n\n  // Always fallback to a known font family.\n  matches = matches || fontFaceMap[defaultFontFamily];\n\n  if (!matches) {\n    // At this point we should definitiely have a font family, but if we\n    // don't there is something wrong with our configuration\n    throw new Error(\n      \"Could not find a font-family for the rule '\" +\n        ruleToString(rule) +\n        \"' and default family '\" +\n        defaultFontFamily +\n        \"'.\"\n    );\n  }\n\n  matches = resolveFontStretch(rule.stretch, matches);\n  matches = resolveFontStyle(rule.style, matches);\n  matches = resolveFontWeight(rule.weight, matches);\n\n  if (!matches) {\n    // We should've fount\n    throw new Error(\n      \"Failed to resolve a font for the rule '\" + ruleToString(rule) + \"'.\"\n    );\n  }\n\n  return matches;\n}\n\n/**\n * Builds a style id for use with the addFont() method.\n * @param {FontFace} font\n * @private\n */\nexport function toStyleName(font) {\n  return [font.weight, font.style, font.stretch].join(\" \");\n}\n\nfunction eatWhiteSpace(input) {\n  return input.trimLeft();\n}\n\nfunction parseQuotedFontFamily(input, quote) {\n  var index = 0;\n\n  while (index < input.length) {\n    var current = input.charAt(index);\n\n    if (current === quote) {\n      return [input.substring(0, index), input.substring(index + 1)];\n    }\n\n    index += 1;\n  }\n\n  // Unexpected end of input\n  return null;\n}\n\nfunction parseNonQuotedFontFamily(input) {\n  // It implements part of the identifier parser here: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n  //\n  // NOTE: This parser pretty much ignores escaped identifiers and that there is a thing called unicode.\n  //\n  // Breakdown of regexp:\n  // -[a-z_]     - when identifier starts with a hyphen, you're not allowed to have another hyphen or a digit\n  // [a-z_]      - allow a-z and underscore at beginning of input\n  // [a-z0-9_-]* - after that, anything goes\n  var match = input.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);\n\n  // non quoted value contains illegal characters\n  if (match === null) {\n    return null;\n  }\n\n  return [match[0], input.substring(match[0].length)];\n}\n\nvar defaultFont = [\"times\"];\n\nexport function parseFontFamily(input) {\n  var result = [];\n  var ch, parsed;\n  var remaining = input.trim();\n\n  if (remaining === \"\") {\n    return defaultFont;\n  }\n\n  if (remaining in systemFonts) {\n    return [systemFonts[remaining]];\n  }\n\n  while (remaining !== \"\") {\n    parsed = null;\n    remaining = eatWhiteSpace(remaining);\n    ch = remaining.charAt(0);\n\n    switch (ch) {\n      case '\"':\n      case \"'\":\n        parsed = parseQuotedFontFamily(remaining.substring(1), ch);\n        break;\n\n      default:\n        parsed = parseNonQuotedFontFamily(remaining);\n        break;\n    }\n\n    if (parsed === null) {\n      return defaultFont;\n    }\n\n    result.push(parsed[0]);\n\n    remaining = eatWhiteSpace(parsed[1]);\n\n    // We expect end of input or a comma separator here\n    if (remaining !== \"\" && remaining.charAt(0) !== \",\") {\n      return defaultFont;\n    }\n\n    remaining = remaining.replace(/^,/, \"\");\n  }\n\n  return result;\n}\n", "/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n *               2013 Chris Dowling, https://github.com/gingerchris\n *               2013 Trinh Ho, https://github.com/ineedfat\n *               2013 Edwin Alejandro Perez, https://github.com/eaparango\n *               2013 Norah Smith, https://github.com/burnburnrocket\n *               2014 Diego Casorran, https://github.com/diegocr\n *               2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/**\n * @name addImage\n * @module\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob, btoa } from \"../libs/AtobBtoa.js\";\n\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var namespace = \"addImage_\";\n  jsPDFAPI.__addimage__ = {};\n\n  var UNKNOWN = \"UNKNOWN\";\n\n  // Heuristic selection of a good batch for large array .apply. Not limiting make the call overflow.\n  // With too small batch iteration will be slow as more calls are made,\n  // higher values cause larger and slower garbage collection.\n  var ARRAY_APPLY_BATCH = 8192;\n\n  var imageFileTypeHeaders = {\n    PNG: [[0x89, 0x50, 0x4e, 0x47]],\n    TIFF: [\n      [0x4d, 0x4d, 0x00, 0x2a], //Motorola\n      [0x49, 0x49, 0x2a, 0x00] //Intel\n    ],\n    JPEG: [\n      [\n        0xff,\n        0xd8,\n        0xff,\n        0xe0,\n        undefined,\n        undefined,\n        0x4a,\n        0x46,\n        0x49,\n        0x46,\n        0x00\n      ], //JFIF\n      [\n        0xff,\n        0xd8,\n        0xff,\n        0xe1,\n        undefined,\n        undefined,\n        0x45,\n        0x78,\n        0x69,\n        0x66,\n        0x00,\n        0x00\n      ], //Exif\n      [0xff, 0xd8, 0xff, 0xdb], //JPEG RAW\n      [0xff, 0xd8, 0xff, 0xee] //EXIF RAW\n    ],\n    JPEG2000: [[0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20]],\n    GIF87a: [[0x47, 0x49, 0x46, 0x38, 0x37, 0x61]],\n    GIF89a: [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61]],\n    WEBP: [\n      [\n        0x52,\n        0x49,\n        0x46,\n        0x46,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        0x57,\n        0x45,\n        0x42,\n        0x50\n      ]\n    ],\n    BMP: [\n      [0x42, 0x4d], //BM - Windows 3.1x, 95, NT, ... etc.\n      [0x42, 0x41], //BA - OS/2 struct bitmap array\n      [0x43, 0x49], //CI - OS/2 struct color icon\n      [0x43, 0x50], //CP - OS/2 const color pointer\n      [0x49, 0x43], //IC - OS/2 struct icon\n      [0x50, 0x54] //PT - OS/2 pointer\n    ]\n  };\n\n  /**\n   * Recognize filetype of Image by magic-bytes\n   *\n   * https://en.wikipedia.org/wiki/List_of_file_signatures\n   *\n   * @name getImageFileTypeByImageData\n   * @public\n   * @function\n   * @param {string|arraybuffer} imageData imageData as binary String or arraybuffer\n   * @param {string} format format of file if filetype-recognition fails, e.g. 'JPEG'\n   *\n   * @returns {string} filetype of Image\n   */\n  var getImageFileTypeByImageData = (jsPDFAPI.__addimage__.getImageFileTypeByImageData = function(\n    imageData,\n    fallbackFormat\n  ) {\n    fallbackFormat = fallbackFormat || UNKNOWN;\n    var i;\n    var j;\n    var result = UNKNOWN;\n    var headerSchemata;\n    var compareResult;\n    var fileType;\n\n    if (\n      fallbackFormat === \"RGBA\" ||\n      (imageData.data !== undefined &&\n        imageData.data instanceof Uint8ClampedArray &&\n        \"height\" in imageData &&\n        \"width\" in imageData)\n    ) {\n      return \"RGBA\";\n    }\n\n    if (isArrayBufferView(imageData)) {\n      for (fileType in imageFileTypeHeaders) {\n        headerSchemata = imageFileTypeHeaders[fileType];\n        for (i = 0; i < headerSchemata.length; i += 1) {\n          compareResult = true;\n          for (j = 0; j < headerSchemata[i].length; j += 1) {\n            if (headerSchemata[i][j] === undefined) {\n              continue;\n            }\n            if (headerSchemata[i][j] !== imageData[j]) {\n              compareResult = false;\n              break;\n            }\n          }\n          if (compareResult === true) {\n            result = fileType;\n            break;\n          }\n        }\n      }\n    } else {\n      for (fileType in imageFileTypeHeaders) {\n        headerSchemata = imageFileTypeHeaders[fileType];\n        for (i = 0; i < headerSchemata.length; i += 1) {\n          compareResult = true;\n          for (j = 0; j < headerSchemata[i].length; j += 1) {\n            if (headerSchemata[i][j] === undefined) {\n              continue;\n            }\n            if (headerSchemata[i][j] !== imageData.charCodeAt(j)) {\n              compareResult = false;\n              break;\n            }\n          }\n          if (compareResult === true) {\n            result = fileType;\n            break;\n          }\n        }\n      }\n    }\n\n    if (result === UNKNOWN && fallbackFormat !== UNKNOWN) {\n      result = fallbackFormat;\n    }\n    return result;\n  });\n\n  // Image functionality ported from pdf.js\n  var putImage = function(image) {\n    var out = this.internal.write;\n    var putStream = this.internal.putStream;\n    var getFilters = this.internal.getFilters;\n\n    var filter = getFilters();\n    while (filter.indexOf(\"FlateEncode\") !== -1) {\n      filter.splice(filter.indexOf(\"FlateEncode\"), 1);\n    }\n\n    image.objectId = this.internal.newObject();\n\n    var additionalKeyValues = [];\n    additionalKeyValues.push({ key: \"Type\", value: \"/XObject\" });\n    additionalKeyValues.push({ key: \"Subtype\", value: \"/Image\" });\n    additionalKeyValues.push({ key: \"Width\", value: image.width });\n    additionalKeyValues.push({ key: \"Height\", value: image.height });\n\n    if (image.colorSpace === color_spaces.INDEXED) {\n      additionalKeyValues.push({\n        key: \"ColorSpace\",\n        value:\n          \"[/Indexed /DeviceRGB \" +\n          // if an indexed png defines more than one colour with transparency, we've created a sMask\n          (image.palette.length / 3 - 1) +\n          \" \" +\n          (\"sMask\" in image && typeof image.sMask !== \"undefined\"\n            ? image.objectId + 2\n            : image.objectId + 1) +\n          \" 0 R]\"\n      });\n    } else {\n      additionalKeyValues.push({\n        key: \"ColorSpace\",\n        value: \"/\" + image.colorSpace\n      });\n      if (image.colorSpace === color_spaces.DEVICE_CMYK) {\n        additionalKeyValues.push({ key: \"Decode\", value: \"[1 0 1 0 1 0 1 0]\" });\n      }\n    }\n    additionalKeyValues.push({\n      key: \"BitsPerComponent\",\n      value: image.bitsPerComponent\n    });\n    if (\n      \"decodeParameters\" in image &&\n      typeof image.decodeParameters !== \"undefined\"\n    ) {\n      additionalKeyValues.push({\n        key: \"DecodeParms\",\n        value: \"<<\" + image.decodeParameters + \">>\"\n      });\n    }\n    if (\"transparency\" in image && Array.isArray(image.transparency)) {\n      var transparency = \"\",\n        i = 0,\n        len = image.transparency.length;\n      for (; i < len; i++)\n        transparency +=\n          image.transparency[i] + \" \" + image.transparency[i] + \" \";\n\n      additionalKeyValues.push({\n        key: \"Mask\",\n        value: \"[\" + transparency + \"]\"\n      });\n    }\n    if (typeof image.sMask !== \"undefined\") {\n      additionalKeyValues.push({\n        key: \"SMask\",\n        value: image.objectId + 1 + \" 0 R\"\n      });\n    }\n\n    var alreadyAppliedFilters =\n      typeof image.filter !== \"undefined\" ? [\"/\" + image.filter] : undefined;\n\n    putStream({\n      data: image.data,\n      additionalKeyValues: additionalKeyValues,\n      alreadyAppliedFilters: alreadyAppliedFilters,\n      objectId: image.objectId\n    });\n\n    out(\"endobj\");\n\n    // Soft mask\n    if (\"sMask\" in image && typeof image.sMask !== \"undefined\") {\n      var decodeParameters =\n        \"/Predictor \" +\n        image.predictor +\n        \" /Colors 1 /BitsPerComponent \" +\n        image.bitsPerComponent +\n        \" /Columns \" +\n        image.width;\n      var sMask = {\n        width: image.width,\n        height: image.height,\n        colorSpace: \"DeviceGray\",\n        bitsPerComponent: image.bitsPerComponent,\n        decodeParameters: decodeParameters,\n        data: image.sMask\n      };\n      if (\"filter\" in image) {\n        sMask.filter = image.filter;\n      }\n      putImage.call(this, sMask);\n    }\n\n    //Palette\n    if (image.colorSpace === color_spaces.INDEXED) {\n      var objId = this.internal.newObject();\n      //out('<< /Filter / ' + img['f'] +' /Length ' + img['pal'].length + '>>');\n      //putStream(zlib.compress(img['pal']));\n      putStream({\n        data: arrayBufferToBinaryString(new Uint8Array(image.palette)),\n        objectId: objId\n      });\n      out(\"endobj\");\n    }\n  };\n  var putResourcesCallback = function() {\n    var images = this.internal.collections[namespace + \"images\"];\n    for (var i in images) {\n      putImage.call(this, images[i]);\n    }\n  };\n  var putXObjectsDictCallback = function() {\n    var images = this.internal.collections[namespace + \"images\"],\n      out = this.internal.write,\n      image;\n    for (var i in images) {\n      image = images[i];\n      out(\"/I\" + image.index, image.objectId, \"0\", \"R\");\n    }\n  };\n\n  var checkCompressValue = function(value) {\n    if (value && typeof value === \"string\") value = value.toUpperCase();\n    return value in jsPDFAPI.image_compression ? value : image_compression.NONE;\n  };\n\n  var initialize = function() {\n    if (!this.internal.collections[namespace + \"images\"]) {\n      this.internal.collections[namespace + \"images\"] = {};\n      this.internal.events.subscribe(\"putResources\", putResourcesCallback);\n      this.internal.events.subscribe(\"putXobjectDict\", putXObjectsDictCallback);\n    }\n  };\n\n  var getImages = function() {\n    var images = this.internal.collections[namespace + \"images\"];\n    initialize.call(this);\n    return images;\n  };\n  var getImageIndex = function() {\n    return Object.keys(this.internal.collections[namespace + \"images\"]).length;\n  };\n  var notDefined = function(value) {\n    return typeof value === \"undefined\" || value === null || value.length === 0;\n  };\n  var generateAliasFromImageData = function(imageData) {\n    if (typeof imageData === \"string\" || isArrayBufferView(imageData)) {\n      return sHashCode(imageData);\n    } else if (isArrayBufferView(imageData.data)) {\n      return sHashCode(imageData.data);\n    }\n\n    return null;\n  };\n\n  var isImageTypeSupported = function(type) {\n    return typeof jsPDFAPI[\"process\" + type.toUpperCase()] === \"function\";\n  };\n\n  var isDOMElement = function(object) {\n    return typeof object === \"object\" && object.nodeType === 1;\n  };\n\n  var getImageDataFromElement = function(element, format) {\n    //if element is an image which uses data url definition, just return the dataurl\n    if (element.nodeName === \"IMG\" && element.hasAttribute(\"src\")) {\n      var src = \"\" + element.getAttribute(\"src\");\n\n      //is base64 encoded dataUrl, directly process it\n      if (src.indexOf(\"data:image/\") === 0) {\n        return atob(\n          unescape(src)\n            .split(\"base64,\")\n            .pop()\n        );\n      }\n\n      //it is probably an url, try to load it\n      var tmpImageData = jsPDFAPI.loadFile(src, true);\n      if (tmpImageData !== undefined) {\n        return tmpImageData;\n      }\n    }\n\n    if (element.nodeName === \"CANVAS\") {\n      if (element.width === 0 || element.height === 0) {\n        throw new Error(\n          \"Given canvas must have data. Canvas width: \" +\n            element.width +\n            \", height: \" +\n            element.height\n        );\n      }\n      var mimeType;\n      switch (format) {\n        case \"PNG\":\n          mimeType = \"image/png\";\n          break;\n        case \"WEBP\":\n          mimeType = \"image/webp\";\n          break;\n        case \"JPEG\":\n        case \"JPG\":\n        default:\n          mimeType = \"image/jpeg\";\n          break;\n      }\n      return atob(\n        element\n          .toDataURL(mimeType, 1.0)\n          .split(\"base64,\")\n          .pop()\n      );\n    }\n  };\n\n  var checkImagesForAlias = function(alias) {\n    var images = this.internal.collections[namespace + \"images\"];\n    if (images) {\n      for (var e in images) {\n        if (alias === images[e].alias) {\n          return images[e];\n        }\n      }\n    }\n  };\n\n  var determineWidthAndHeight = function(width, height, image) {\n    if (!width && !height) {\n      width = -96;\n      height = -96;\n    }\n    if (width < 0) {\n      width = (-1 * image.width * 72) / width / this.internal.scaleFactor;\n    }\n    if (height < 0) {\n      height = (-1 * image.height * 72) / height / this.internal.scaleFactor;\n    }\n    if (width === 0) {\n      width = (height * image.width) / image.height;\n    }\n    if (height === 0) {\n      height = (width * image.height) / image.width;\n    }\n\n    return [width, height];\n  };\n\n  var writeImageToPDF = function(x, y, width, height, image, rotation) {\n    var dims = determineWidthAndHeight.call(this, width, height, image),\n      coord = this.internal.getCoordinateString,\n      vcoord = this.internal.getVerticalCoordinateString;\n\n    var images = getImages.call(this);\n\n    width = dims[0];\n    height = dims[1];\n    images[image.index] = image;\n\n    if (rotation) {\n      rotation *= Math.PI / 180;\n      var c = Math.cos(rotation);\n      var s = Math.sin(rotation);\n      //like in pdf Reference do it 4 digits instead of 2\n      var f4 = function(number) {\n        return number.toFixed(4);\n      };\n      var rotationTransformationMatrix = [\n        f4(c),\n        f4(s),\n        f4(s * -1),\n        f4(c),\n        0,\n        0,\n        \"cm\"\n      ];\n    }\n    this.internal.write(\"q\"); //Save graphics state\n    if (rotation) {\n      this.internal.write(\n        [1, \"0\", \"0\", 1, coord(x), vcoord(y + height), \"cm\"].join(\" \")\n      ); //Translate\n      this.internal.write(rotationTransformationMatrix.join(\" \")); //Rotate\n      this.internal.write(\n        [coord(width), \"0\", \"0\", coord(height), \"0\", \"0\", \"cm\"].join(\" \")\n      ); //Scale\n    } else {\n      this.internal.write(\n        [\n          coord(width),\n          \"0\",\n          \"0\",\n          coord(height),\n          coord(x),\n          vcoord(y + height),\n          \"cm\"\n        ].join(\" \")\n      ); //Translate and Scale\n    }\n\n    if (this.isAdvancedAPI()) {\n      // draw image bottom up when in \"advanced\" API mode\n      this.internal.write([1, 0, 0, -1, 0, 0, \"cm\"].join(\" \"));\n    }\n\n    this.internal.write(\"/I\" + image.index + \" Do\"); //Paint Image\n    this.internal.write(\"Q\"); //Restore graphics state\n  };\n\n  /**\n   * COLOR SPACES\n   */\n  var color_spaces = (jsPDFAPI.color_spaces = {\n    DEVICE_RGB: \"DeviceRGB\",\n    DEVICE_GRAY: \"DeviceGray\",\n    DEVICE_CMYK: \"DeviceCMYK\",\n    CAL_GREY: \"CalGray\",\n    CAL_RGB: \"CalRGB\",\n    LAB: \"Lab\",\n    ICC_BASED: \"ICCBased\",\n    INDEXED: \"Indexed\",\n    PATTERN: \"Pattern\",\n    SEPARATION: \"Separation\",\n    DEVICE_N: \"DeviceN\"\n  });\n\n  /**\n   * DECODE METHODS\n   */\n  jsPDFAPI.decode = {\n    DCT_DECODE: \"DCTDecode\",\n    FLATE_DECODE: \"FlateDecode\",\n    LZW_DECODE: \"LZWDecode\",\n    JPX_DECODE: \"JPXDecode\",\n    JBIG2_DECODE: \"JBIG2Decode\",\n    ASCII85_DECODE: \"ASCII85Decode\",\n    ASCII_HEX_DECODE: \"ASCIIHexDecode\",\n    RUN_LENGTH_DECODE: \"RunLengthDecode\",\n    CCITT_FAX_DECODE: \"CCITTFaxDecode\"\n  };\n\n  /**\n   * IMAGE COMPRESSION TYPES\n   */\n  var image_compression = (jsPDFAPI.image_compression = {\n    NONE: \"NONE\",\n    FAST: \"FAST\",\n    MEDIUM: \"MEDIUM\",\n    SLOW: \"SLOW\"\n  });\n\n  /**\n   * @name sHashCode\n   * @function\n   * @param {string} data\n   * @returns {string}\n   */\n  var sHashCode = (jsPDFAPI.__addimage__.sHashCode = function(data) {\n    var hash = 0,\n      i,\n      len;\n\n    if (typeof data === \"string\") {\n      len = data.length;\n      for (i = 0; i < len; i++) {\n        hash = (hash << 5) - hash + data.charCodeAt(i);\n        hash |= 0; // Convert to 32bit integer\n      }\n    } else if (isArrayBufferView(data)) {\n      len = data.byteLength / 2;\n      for (i = 0; i < len; i++) {\n        hash = (hash << 5) - hash + data[i];\n        hash |= 0; // Convert to 32bit integer\n      }\n    }\n    return hash;\n  });\n\n  /**\n   * Validates if given String is a valid Base64-String\n   *\n   * @name validateStringAsBase64\n   * @public\n   * @function\n   * @param {String} possible Base64-String\n   *\n   * @returns {boolean}\n   */\n  var validateStringAsBase64 = (jsPDFAPI.__addimage__.validateStringAsBase64 = function(\n    possibleBase64String\n  ) {\n    possibleBase64String = possibleBase64String || \"\";\n    possibleBase64String.toString().trim();\n\n    var result = true;\n\n    if (possibleBase64String.length === 0) {\n      result = false;\n    }\n\n    if (possibleBase64String.length % 4 !== 0) {\n      result = false;\n    }\n\n    if (\n      /^[A-Za-z0-9+/]+$/.test(\n        possibleBase64String.substr(0, possibleBase64String.length - 2)\n      ) === false\n    ) {\n      result = false;\n    }\n\n    if (\n      /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(\n        possibleBase64String.substr(-2)\n      ) === false\n    ) {\n      result = false;\n    }\n    return result;\n  });\n\n  /**\n   * Strips out and returns info from a valid base64 data URI\n   *\n   * @name extractImageFromDataUrl\n   * @function\n   * @param {string} dataUrl a valid data URI of format 'data:[<MIME-type>][;base64],<data>'\n   * @returns {Array}an Array containing the following\n   * [0] the complete data URI\n   * [1] <MIME-type>\n   * [2] format - the second part of the mime-type i.e 'png' in 'image/png'\n   * [4] <data>\n   */\n  var extractImageFromDataUrl = (jsPDFAPI.__addimage__.extractImageFromDataUrl = function(\n    dataUrl\n  ) {\n    dataUrl = dataUrl || \"\";\n    var dataUrlParts = dataUrl.split(\"base64,\");\n    var result = null;\n\n    if (dataUrlParts.length === 2) {\n      var extractedInfo = /^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(\n        dataUrlParts[0]\n      );\n      if (Array.isArray(extractedInfo)) {\n        result = {\n          mimeType: extractedInfo[1],\n          charset: extractedInfo[2],\n          data: dataUrlParts[1]\n        };\n      }\n    }\n    return result;\n  });\n\n  /**\n   * Check to see if ArrayBuffer is supported\n   *\n   * @name supportsArrayBuffer\n   * @function\n   * @returns {boolean}\n   */\n  var supportsArrayBuffer = (jsPDFAPI.__addimage__.supportsArrayBuffer = function() {\n    return (\n      typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\"\n    );\n  });\n\n  /**\n   * Tests supplied object to determine if ArrayBuffer\n   *\n   * @name isArrayBuffer\n   * @function\n   * @param {Object} object an Object\n   *\n   * @returns {boolean}\n   */\n  jsPDFAPI.__addimage__.isArrayBuffer = function(object) {\n    return supportsArrayBuffer() && object instanceof ArrayBuffer;\n  };\n\n  /**\n   * Tests supplied object to determine if it implements the ArrayBufferView (TypedArray) interface\n   *\n   * @name isArrayBufferView\n   * @function\n   * @param {Object} object an Object\n   * @returns {boolean}\n   */\n  var isArrayBufferView = (jsPDFAPI.__addimage__.isArrayBufferView = function(\n    object\n  ) {\n    return (\n      supportsArrayBuffer() &&\n      typeof Uint32Array !== \"undefined\" &&\n      (object instanceof Int8Array ||\n        object instanceof Uint8Array ||\n        (typeof Uint8ClampedArray !== \"undefined\" &&\n          object instanceof Uint8ClampedArray) ||\n        object instanceof Int16Array ||\n        object instanceof Uint16Array ||\n        object instanceof Int32Array ||\n        object instanceof Uint32Array ||\n        object instanceof Float32Array ||\n        object instanceof Float64Array)\n    );\n  });\n\n  /**\n   * Convert Binary String to ArrayBuffer\n   *\n   * @name binaryStringToUint8Array\n   * @public\n   * @function\n   * @param {string} BinaryString with ImageData\n   * @returns {Uint8Array}\n   */\n  var binaryStringToUint8Array = (jsPDFAPI.__addimage__.binaryStringToUint8Array = function(\n    binary_string\n  ) {\n    var len = binary_string.length;\n    var bytes = new Uint8Array(len);\n    for (var i = 0; i < len; i++) {\n      bytes[i] = binary_string.charCodeAt(i);\n    }\n    return bytes;\n  });\n\n  /**\n   * Convert the Buffer to a Binary String\n   *\n   * @name arrayBufferToBinaryString\n   * @public\n   * @function\n   * @param {ArrayBuffer|ArrayBufferView} ArrayBuffer buffer or bufferView with ImageData\n   *\n   * @returns {String}\n   */\n  var arrayBufferToBinaryString = (jsPDFAPI.__addimage__.arrayBufferToBinaryString = function(\n    buffer\n  ) {\n    var out = \"\";\n    // There are calls with both ArrayBuffer and already converted Uint8Array or other BufferView.\n    // Do not copy the array if input is already an array.\n    var buf = isArrayBufferView(buffer) ? buffer : new Uint8Array(buffer);\n    for (var i = 0; i < buf.length; i += ARRAY_APPLY_BATCH) {\n      // Limit the amount of characters being parsed to prevent overflow.\n      // Note that while TextDecoder would be faster, it does not have the same\n      // functionality as fromCharCode with any provided encodings as of 3/2021.\n      out += String.fromCharCode.apply(\n        null,\n        buf.subarray(i, i + ARRAY_APPLY_BATCH)\n      );\n    }\n    return out;\n  });\n\n  /**\n   * Possible parameter for addImage, an RGBA buffer with size.\n   *\n   * @typedef {Object} RGBAData\n   * @property {Uint8ClampedArray} data - Single dimensional array of RGBA values. For example from canvas getImageData.\n   * @property {number} width - Image width as the data does not carry this information in itself.\n   * @property {number} height - Image height as the data does not carry this information in itself.\n   */\n\n  /**\n   * Adds an Image to the PDF.\n   *\n   * @name addImage\n   * @public\n   * @function\n   * @param {string|HTMLImageElement|HTMLCanvasElement|Uint8Array|RGBAData} imageData imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement or object containing RGBA array (like output from canvas.getImageData).\n   * @param {string} format format of file if filetype-recognition fails or in case of a Canvas-Element needs to be specified (default for Canvas is JPEG), e.g. 'JPEG', 'PNG', 'WEBP'\n   * @param {number} x x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} width width of the image (in units declared at inception of PDF document)\n   * @param {number} height height of the Image (in units declared at inception of PDF document)\n   * @param {string} alias alias of the image (if used multiple times)\n   * @param {string} compression compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n   * @param {number} rotation rotation of the image in degrees (0-359)\n   *\n   * @returns jsPDF\n   */\n  jsPDFAPI.addImage = function() {\n    var imageData, format, x, y, w, h, alias, compression, rotation;\n\n    imageData = arguments[0];\n    if (typeof arguments[1] === \"number\") {\n      format = UNKNOWN;\n      x = arguments[1];\n      y = arguments[2];\n      w = arguments[3];\n      h = arguments[4];\n      alias = arguments[5];\n      compression = arguments[6];\n      rotation = arguments[7];\n    } else {\n      format = arguments[1];\n      x = arguments[2];\n      y = arguments[3];\n      w = arguments[4];\n      h = arguments[5];\n      alias = arguments[6];\n      compression = arguments[7];\n      rotation = arguments[8];\n    }\n\n    if (\n      typeof imageData === \"object\" &&\n      !isDOMElement(imageData) &&\n      \"imageData\" in imageData\n    ) {\n      var options = imageData;\n\n      imageData = options.imageData;\n      format = options.format || format || UNKNOWN;\n      x = options.x || x || 0;\n      y = options.y || y || 0;\n      w = options.w || options.width || w;\n      h = options.h || options.height || h;\n      alias = options.alias || alias;\n      compression = options.compression || compression;\n      rotation = options.rotation || options.angle || rotation;\n    }\n\n    //If compression is not explicitly set, determine if we should use compression\n    var filter = this.internal.getFilters();\n    if (compression === undefined && filter.indexOf(\"FlateEncode\") !== -1) {\n      compression = \"SLOW\";\n    }\n\n    if (isNaN(x) || isNaN(y)) {\n      throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n    }\n\n    initialize.call(this);\n\n    var image = processImageData.call(\n      this,\n      imageData,\n      format,\n      alias,\n      compression\n    );\n\n    writeImageToPDF.call(this, x, y, w, h, image, rotation);\n\n    return this;\n  };\n\n  var processImageData = function(imageData, format, alias, compression) {\n    var result, dataAsBinaryString;\n\n    if (\n      typeof imageData === \"string\" &&\n      getImageFileTypeByImageData(imageData) === UNKNOWN\n    ) {\n      imageData = unescape(imageData);\n      var tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n      if (tmpImageData !== \"\") {\n        imageData = tmpImageData;\n      } else {\n        tmpImageData = jsPDFAPI.loadFile(imageData, true);\n        if (tmpImageData !== undefined) {\n          imageData = tmpImageData;\n        }\n      }\n    }\n\n    if (isDOMElement(imageData)) {\n      imageData = getImageDataFromElement(imageData, format);\n    }\n\n    format = getImageFileTypeByImageData(imageData, format);\n    if (!isImageTypeSupported(format)) {\n      throw new Error(\n        \"addImage does not support files of type '\" +\n          format +\n          \"', please ensure that a plugin for '\" +\n          format +\n          \"' support is added.\"\n      );\n    }\n\n    // now do the heavy lifting\n\n    if (notDefined(alias)) {\n      alias = generateAliasFromImageData(imageData);\n    }\n    result = checkImagesForAlias.call(this, alias);\n\n    if (!result) {\n      if (supportsArrayBuffer()) {\n        // no need to convert if imageData is already uint8array\n        if (!(imageData instanceof Uint8Array) && format !== \"RGBA\") {\n          dataAsBinaryString = imageData;\n          imageData = binaryStringToUint8Array(imageData);\n        }\n      }\n\n      result = this[\"process\" + format.toUpperCase()](\n        imageData,\n        getImageIndex.call(this),\n        alias,\n        checkCompressValue(compression),\n        dataAsBinaryString\n      );\n    }\n\n    if (!result) {\n      throw new Error(\"An unknown error occurred whilst processing the image.\");\n    }\n    return result;\n  };\n\n  /**\n   * @name convertBase64ToBinaryString\n   * @function\n   * @param {string} stringData\n   * @returns {string} binary string\n   */\n  var convertBase64ToBinaryString = (jsPDFAPI.__addimage__.convertBase64ToBinaryString = function(\n    stringData,\n    throwError\n  ) {\n    throwError = typeof throwError === \"boolean\" ? throwError : true;\n    var base64Info;\n    var imageData = \"\";\n    var rawData;\n\n    if (typeof stringData === \"string\") {\n      base64Info = extractImageFromDataUrl(stringData);\n      rawData = base64Info !== null ? base64Info.data : stringData;\n\n      try {\n        imageData = atob(rawData);\n      } catch (e) {\n        if (throwError) {\n          if (!validateStringAsBase64(rawData)) {\n            throw new Error(\n              \"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \"\n            );\n          } else {\n            throw new Error(\n              \"atob-Error in jsPDF.convertBase64ToBinaryString \" + e.message\n            );\n          }\n        }\n      }\n    }\n    return imageData;\n  });\n\n  /**\n   * @name getImageProperties\n   * @function\n   * @param {Object} imageData\n   * @returns {Object}\n   */\n  jsPDFAPI.getImageProperties = function(imageData) {\n    var image;\n    var tmpImageData = \"\";\n    var format;\n\n    if (isDOMElement(imageData)) {\n      imageData = getImageDataFromElement(imageData);\n    }\n\n    if (\n      typeof imageData === \"string\" &&\n      getImageFileTypeByImageData(imageData) === UNKNOWN\n    ) {\n      tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n      if (tmpImageData === \"\") {\n        tmpImageData = jsPDFAPI.loadFile(imageData) || \"\";\n      }\n      imageData = tmpImageData;\n    }\n\n    format = getImageFileTypeByImageData(imageData);\n    if (!isImageTypeSupported(format)) {\n      throw new Error(\n        \"addImage does not support files of type '\" +\n          format +\n          \"', please ensure that a plugin for '\" +\n          format +\n          \"' support is added.\"\n      );\n    }\n\n    if (supportsArrayBuffer() && !(imageData instanceof Uint8Array)) {\n      imageData = binaryStringToUint8Array(imageData);\n    }\n\n    image = this[\"process\" + format.toUpperCase()](imageData);\n\n    if (!image) {\n      throw new Error(\"An unknown error occurred whilst processing the image\");\n    }\n\n    image.fileType = format;\n\n    return image;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF Annotations PlugIn\n *\n * There are many types of annotations in a PDF document. Annotations are placed\n * on a page at a particular location. They are not 'attached' to an object.\n * <br />\n * This plugin current supports <br />\n * <li> Goto Page (set pageNumber and top in options)\n * <li> Goto Name (set name and top in options)\n * <li> Goto URL (set url in options)\n * <p>\n * \tThe destination magnification factor can also be specified when goto is a page number or a named destination. (see documentation below)\n *  (set magFactor in options).  XYZ is the default.\n * </p>\n * <p>\n *  Links, Text, Popup, and FreeText are supported.\n * </p>\n * <p>\n * Options In PDF spec Not Implemented Yet\n * <li> link border\n * <li> named target\n * <li> page coordinates\n * <li> destination page scaling and layout\n * <li> actions other than URL and GotoPage\n * <li> background / hover actions\n * </p>\n * @name annotations\n * @module\n */\n\n/*\n    Destination Magnification Factors\n    See PDF 1.3 Page 386 for meanings and options\n\n    [supported]\n\tXYZ (options; left top zoom)\n\tFit (no options)\n\tFitH (options: top)\n\tFitV (options: left)\n\n\t[not supported]\n\tFitR\n\tFitB\n\tFitBH\n\tFitBV\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var notEmpty = function(obj) {\n    if (typeof obj != \"undefined\") {\n      if (obj != \"\") {\n        return true;\n      }\n    }\n  };\n\n  jsPDF.API.events.push([\n    \"addPage\",\n    function(addPageData) {\n      var pageInfo = this.internal.getPageInfo(addPageData.pageNumber);\n      pageInfo.pageContext.annotations = [];\n    }\n  ]);\n\n  jsPDFAPI.events.push([\n    \"putPage\",\n    function(putPageData) {\n      var getHorizontalCoordinateString = this.internal.getCoordinateString;\n      var getVerticalCoordinateString = this.internal\n        .getVerticalCoordinateString;\n      var pageInfo = this.internal.getPageInfoByObjId(putPageData.objId);\n      var pageAnnos = putPageData.pageContext.annotations;\n\n      var anno, rect, line;\n      var found = false;\n      for (var a = 0; a < pageAnnos.length && !found; a++) {\n        anno = pageAnnos[a];\n        switch (anno.type) {\n          case \"link\":\n            if (\n              notEmpty(anno.options.url) ||\n              notEmpty(anno.options.pageNumber)\n            ) {\n              found = true;\n            }\n            break;\n          case \"reference\":\n          case \"text\":\n          case \"freetext\":\n            found = true;\n            break;\n        }\n      }\n      if (found == false) {\n        return;\n      }\n\n      this.internal.write(\"/Annots [\");\n      for (var i = 0; i < pageAnnos.length; i++) {\n        anno = pageAnnos[i];\n        var escape = this.internal.pdfEscape;\n        var encryptor = this.internal.getEncryptor(putPageData.objId);\n\n        switch (anno.type) {\n          case \"reference\":\n            // References to Widget Annotations (for AcroForm Fields)\n            this.internal.write(\" \" + anno.object.objId + \" 0 R \");\n            break;\n          case \"text\":\n            // Create a an object for both the text and the popup\n            var objText = this.internal.newAdditionalObject();\n            var objPopup = this.internal.newAdditionalObject();\n            var encryptorText = this.internal.getEncryptor(objText.objId);\n\n            var title = anno.title || \"Note\";\n            rect =\n              \"/Rect [\" +\n              getHorizontalCoordinateString(anno.bounds.x) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n              \" \" +\n              getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y) +\n              \"] \";\n\n            line =\n              \"<</Type /Annot /Subtype /\" +\n              \"Text\" +\n              \" \" +\n              rect +\n              \"/Contents (\" +\n              escape(encryptorText(anno.contents)) +\n              \")\";\n            line += \" /Popup \" + objPopup.objId + \" 0 R\";\n            line += \" /P \" + pageInfo.objId + \" 0 R\";\n            line += \" /T (\" + escape(encryptorText(title)) + \") >>\";\n            objText.content = line;\n\n            var parent = objText.objId + \" 0 R\";\n            var popoff = 30;\n            rect =\n              \"/Rect [\" +\n              getHorizontalCoordinateString(anno.bounds.x + popoff) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n              \" \" +\n              getHorizontalCoordinateString(\n                anno.bounds.x + anno.bounds.w + popoff\n              ) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y) +\n              \"] \";\n            line =\n              \"<</Type /Annot /Subtype /\" +\n              \"Popup\" +\n              \" \" +\n              rect +\n              \" /Parent \" +\n              parent;\n            if (anno.open) {\n              line += \" /Open true\";\n            }\n            line += \" >>\";\n            objPopup.content = line;\n\n            this.internal.write(objText.objId, \"0 R\", objPopup.objId, \"0 R\");\n\n            break;\n          case \"freetext\":\n            rect =\n              \"/Rect [\" +\n              getHorizontalCoordinateString(anno.bounds.x) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y) +\n              \" \" +\n              getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n              \"] \";\n            var color = anno.color || \"#000000\";\n            line =\n              \"<</Type /Annot /Subtype /\" +\n              \"FreeText\" +\n              \" \" +\n              rect +\n              \"/Contents (\" +\n              escape(encryptor(anno.contents)) +\n              \")\";\n            line +=\n              \" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#\" +\n              color +\n              \")\";\n            line += \" /Border [0 0 0]\";\n            line += \" >>\";\n            this.internal.write(line);\n            break;\n          case \"link\":\n            if (anno.options.name) {\n              var loc = this.annotations._nameMap[anno.options.name];\n              anno.options.pageNumber = loc.page;\n              anno.options.top = loc.y;\n            } else {\n              if (!anno.options.top) {\n                anno.options.top = 0;\n              }\n            }\n\n            rect =\n              \"/Rect [\" +\n              anno.finalBounds.x +\n              \" \" +\n              anno.finalBounds.y +\n              \" \" +\n              anno.finalBounds.w +\n              \" \" +\n              anno.finalBounds.h +\n              \"] \";\n\n            line = \"\";\n            if (anno.options.url) {\n              line =\n                \"<</Type /Annot /Subtype /Link \" +\n                rect +\n                \"/Border [0 0 0] /A <</S /URI /URI (\" +\n                escape(encryptor(anno.options.url)) +\n                \") >>\";\n            } else if (anno.options.pageNumber) {\n              // first page is 0\n              var info = this.internal.getPageInfo(anno.options.pageNumber);\n              line =\n                \"<</Type /Annot /Subtype /Link \" +\n                rect +\n                \"/Border [0 0 0] /Dest [\" +\n                info.objId +\n                \" 0 R\";\n              anno.options.magFactor = anno.options.magFactor || \"XYZ\";\n              switch (anno.options.magFactor) {\n                case \"Fit\":\n                  line += \" /Fit]\";\n                  break;\n                case \"FitH\":\n                  line += \" /FitH \" + anno.options.top + \"]\";\n                  break;\n                case \"FitV\":\n                  anno.options.left = anno.options.left || 0;\n                  line += \" /FitV \" + anno.options.left + \"]\";\n                  break;\n                case \"XYZ\":\n                default:\n                  var top = getVerticalCoordinateString(anno.options.top);\n                  anno.options.left = anno.options.left || 0;\n                  // 0 or null zoom will not change zoom factor\n                  if (typeof anno.options.zoom === \"undefined\") {\n                    anno.options.zoom = 0;\n                  }\n                  line +=\n                    \" /XYZ \" +\n                    anno.options.left +\n                    \" \" +\n                    top +\n                    \" \" +\n                    anno.options.zoom +\n                    \"]\";\n                  break;\n              }\n            }\n\n            if (line != \"\") {\n              line += \" >>\";\n              this.internal.write(line);\n            }\n            break;\n        }\n      }\n      this.internal.write(\"]\");\n    }\n  ]);\n\n  /**\n   * @name createAnnotation\n   * @function\n   * @param {Object} options\n   */\n  jsPDFAPI.createAnnotation = function(options) {\n    var pageInfo = this.internal.getCurrentPageInfo();\n    switch (options.type) {\n      case \"link\":\n        this.link(\n          options.bounds.x,\n          options.bounds.y,\n          options.bounds.w,\n          options.bounds.h,\n          options\n        );\n        break;\n      case \"text\":\n      case \"freetext\":\n        pageInfo.pageContext.annotations.push(options);\n        break;\n    }\n  };\n\n  /**\n   * Create a link\n   *\n   * valid options\n   * <li> pageNumber or url [required]\n   * <p>If pageNumber is specified, top and zoom may also be specified</p>\n   * @name link\n   * @function\n   * @param {number} x\n   * @param {number} y\n   * @param {number} w\n   * @param {number} h\n   * @param {Object} options\n   */\n  jsPDFAPI.link = function(x, y, w, h, options) {\n    var pageInfo = this.internal.getCurrentPageInfo();\n    var getHorizontalCoordinateString = this.internal.getCoordinateString;\n    var getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n\n    pageInfo.pageContext.annotations.push({\n      finalBounds: {\n        x: getHorizontalCoordinateString(x),\n        y: getVerticalCoordinateString(y),\n        w: getHorizontalCoordinateString(x + w),\n        h: getVerticalCoordinateString(y + h)\n      },\n      options: options,\n      type: \"link\"\n    });\n  };\n\n  /**\n   * Currently only supports single line text.\n   * Returns the width of the text/link\n   *\n   * @name textWithLink\n   * @function\n   * @param {string} text\n   * @param {number} x\n   * @param {number} y\n   * @param {Object} options\n   * @returns {number} width the width of the text/link\n   */\n  jsPDFAPI.textWithLink = function(text, x, y, options) {\n    var totalLineWidth = this.getTextWidth(text);\n    var lineHeight = this.internal.getLineHeight() / this.internal.scaleFactor;\n    var linkHeight, linkWidth;\n\n    // Checking if maxWidth option is passed to determine lineWidth and number of lines for each line\n    if (options.maxWidth !== undefined) {\n      var { maxWidth } = options;\n      linkWidth = maxWidth;\n      var numOfLines = this.splitTextToSize(text, linkWidth).length;\n      linkHeight = Math.ceil(lineHeight * numOfLines);\n    } else {\n      linkWidth = totalLineWidth;\n      linkHeight = lineHeight;\n    }\n\n    this.text(text, x, y, options);\n\n    //TODO We really need the text baseline height to do this correctly.\n    // Or ability to draw text on top, bottom, center, or baseline.\n    y += lineHeight * 0.2;\n    //handle x position based on the align option\n    if (options.align === \"center\") {\n      x = x - totalLineWidth / 2; //since starting from center move the x position by half of text width\n    }\n    if (options.align === \"right\") {\n      x = x - totalLineWidth;\n    }\n    this.link(x, y - lineHeight, linkWidth, linkHeight, options);\n    return totalLineWidth;\n  };\n\n  //TODO move into external library\n  /**\n   * @name getTextWidth\n   * @function\n   * @param {string} text\n   * @returns {number} txtWidth\n   */\n  jsPDFAPI.getTextWidth = function(text) {\n    var fontSize = this.internal.getFontSize();\n    var txtWidth =\n      (this.getStringUnitWidth(text) * fontSize) / this.internal.scaleFactor;\n    return txtWidth;\n  };\n\n  return this;\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF arabic parser PlugIn\n *\n * @name arabic\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * Arabic shape substitutions: char code => (isolated, final, initial, medial).\n   * Arabic Substition A\n   */\n  var arabicSubstitionA = {\n    0x0621: [0xfe80], // ARABIC LETTER HAMZA\n    0x0622: [0xfe81, 0xfe82], // ARABIC LETTER ALEF WITH MADDA ABOVE\n    0x0623: [0xfe83, 0xfe84], // ARABIC LETTER ALEF WITH HAMZA ABOVE\n    0x0624: [0xfe85, 0xfe86], // ARABIC LETTER WAW WITH HAMZA ABOVE\n    0x0625: [0xfe87, 0xfe88], // ARABIC LETTER ALEF WITH HAMZA BELOW\n    0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // ARABIC LETTER YEH WITH HAMZA ABOVE\n    0x0627: [0xfe8d, 0xfe8e], // ARABIC LETTER ALEF\n    0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // ARABIC LETTER BEH\n    0x0629: [0xfe93, 0xfe94], // ARABIC LETTER TEH MARBUTA\n    0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // ARABIC LETTER TEH\n    0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // ARABIC LETTER THEH\n    0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // ARABIC LETTER JEEM\n    0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // ARABIC LETTER HAH\n    0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // ARABIC LETTER KHAH\n    0x062f: [0xfea9, 0xfeaa], // ARABIC LETTER DAL\n    0x0630: [0xfeab, 0xfeac], // ARABIC LETTER THAL\n    0x0631: [0xfead, 0xfeae], // ARABIC LETTER REH\n    0x0632: [0xfeaf, 0xfeb0], // ARABIC LETTER ZAIN\n    0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // ARABIC LETTER SEEN\n    0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // ARABIC LETTER SHEEN\n    0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // ARABIC LETTER SAD\n    0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // ARABIC LETTER DAD\n    0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // ARABIC LETTER TAH\n    0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // ARABIC LETTER ZAH\n    0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // ARABIC LETTER AIN\n    0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // ARABIC LETTER GHAIN\n    0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // ARABIC LETTER FEH\n    0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // ARABIC LETTER QAF\n    0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // ARABIC LETTER KAF\n    0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // ARABIC LETTER LAM\n    0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // ARABIC LETTER MEEM\n    0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // ARABIC LETTER NOON\n    0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // ARABIC LETTER HEH\n    0x0648: [0xfeed, 0xfeee], // ARABIC LETTER WAW\n    0x0649: [0xfeef, 0xfef0, 64488, 64489], // ARABIC LETTER ALEF MAKSURA\n    0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // ARABIC LETTER YEH\n    0x0671: [0xfb50, 0xfb51], // ARABIC LETTER ALEF WASLA\n    0x0677: [0xfbdd], // ARABIC LETTER U WITH HAMZA ABOVE\n    0x0679: [0xfb66, 0xfb67, 0xfb68, 0xfb69], // ARABIC LETTER TTEH\n    0x067a: [0xfb5e, 0xfb5f, 0xfb60, 0xfb61], // ARABIC LETTER TTEHEH\n    0x067b: [0xfb52, 0xfb53, 0xfb54, 0xfb55], // ARABIC LETTER BEEH\n    0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // ARABIC LETTER PEH\n    0x067f: [0xfb62, 0xfb63, 0xfb64, 0xfb65], // ARABIC LETTER TEHEH\n    0x0680: [0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d], // ARABIC LETTER BEHEH\n    0x0683: [0xfb76, 0xfb77, 0xfb78, 0xfb79], // ARABIC LETTER NYEH\n    0x0684: [0xfb72, 0xfb73, 0xfb74, 0xfb75], // ARABIC LETTER DYEH\n    0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // ARABIC LETTER TCHEH\n    0x0687: [0xfb7e, 0xfb7f, 0xfb80, 0xfb81], // ARABIC LETTER TCHEHEH\n    0x0688: [0xfb88, 0xfb89], // ARABIC LETTER DDAL\n    0x068c: [0xfb84, 0xfb85], // ARABIC LETTER DAHAL\n    0x068d: [0xfb82, 0xfb83], // ARABIC LETTER DDAHAL\n    0x068e: [0xfb86, 0xfb87], // ARABIC LETTER DUL\n    0x0691: [0xfb8c, 0xfb8d], // ARABIC LETTER RREH\n    0x0698: [0xfb8a, 0xfb8b], // ARABIC LETTER JEH\n    0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // ARABIC LETTER VEH\n    0x06a6: [0xfb6e, 0xfb6f, 0xfb70, 0xfb71], // ARABIC LETTER PEHEH\n    0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // ARABIC LETTER KEHEH\n    0x06ad: [0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], // ARABIC LETTER NG\n    0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // ARABIC LETTER GAF\n    0x06b1: [0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], // ARABIC LETTER NGOEH\n    0x06b3: [0xfb96, 0xfb97, 0xfb98, 0xfb99], // ARABIC LETTER GUEH\n    0x06ba: [0xfb9e, 0xfb9f], // ARABIC LETTER NOON GHUNNA\n    0x06bb: [0xfba0, 0xfba1, 0xfba2, 0xfba3], // ARABIC LETTER RNOON\n    0x06be: [0xfbaa, 0xfbab, 0xfbac, 0xfbad], // ARABIC LETTER HEH DOACHASHMEE\n    0x06c0: [0xfba4, 0xfba5], // ARABIC LETTER HEH WITH YEH ABOVE\n    0x06c1: [0xfba6, 0xfba7, 0xfba8, 0xfba9], // ARABIC LETTER HEH GOAL\n    0x06c5: [0xfbe0, 0xfbe1], // ARABIC LETTER KIRGHIZ OE\n    0x06c6: [0xfbd9, 0xfbda], // ARABIC LETTER OE\n    0x06c7: [0xfbd7, 0xfbd8], // ARABIC LETTER U\n    0x06c8: [0xfbdb, 0xfbdc], // ARABIC LETTER YU\n    0x06c9: [0xfbe2, 0xfbe3], // ARABIC LETTER KIRGHIZ YU\n    0x06cb: [0xfbde, 0xfbdf], // ARABIC LETTER VE\n    0x06cc: [0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], // ARABIC LETTER FARSI YEH\n    0x06d0: [0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7], //ARABIC LETTER E\n    0x06d2: [0xfbae, 0xfbaf], // ARABIC LETTER YEH BARREE\n    0x06d3: [0xfbb0, 0xfbb1] // ARABIC LETTER YEH BARREE WITH HAMZA ABOVE\n  };\n\n  /*\n    var ligaturesSubstitutionA = {\n        0xFBEA: []// ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM\n    };\n    */\n\n  var ligatures = {\n    0xfedf: {\n      0xfe82: 0xfef5, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM\n      0xfe84: 0xfef7, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM\n      0xfe88: 0xfef9, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM\n      0xfe8e: 0xfefb // ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM\n    },\n    0xfee0: {\n      0xfe82: 0xfef6, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM\n      0xfe84: 0xfef8, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM\n      0xfe88: 0xfefa, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM\n      0xfe8e: 0xfefc // ARABIC LIGATURE LAM WITH ALEF FINAL FORM\n    },\n    0xfe8d: { 0xfedf: { 0xfee0: { 0xfeea: 0xfdf2 } } }, // ALLAH\n    0x0651: {\n      0x064c: 0xfc5e, // Shadda + Dammatan\n      0x064d: 0xfc5f, // Shadda + Kasratan\n      0x064e: 0xfc60, // Shadda + Fatha\n      0x064f: 0xfc61, // Shadda + Damma\n      0x0650: 0xfc62 // Shadda + Kasra\n    }\n  };\n\n  var arabic_diacritics = {\n    1612: 64606, // Shadda + Dammatan\n    1613: 64607, // Shadda + Kasratan\n    1614: 64608, // Shadda + Fatha\n    1615: 64609, // Shadda + Damma\n    1616: 64610 // Shadda + Kasra\n  };\n\n  var alfletter = [1570, 1571, 1573, 1575];\n\n  var noChangeInForm = -1;\n  var isolatedForm = 0;\n  var finalForm = 1;\n  var initialForm = 2;\n  var medialForm = 3;\n\n  jsPDFAPI.__arabicParser__ = {};\n\n  //private\n  var isInArabicSubstitutionA = (jsPDFAPI.__arabicParser__.isInArabicSubstitutionA = function(\n    letter\n  ) {\n    return typeof arabicSubstitionA[letter.charCodeAt(0)] !== \"undefined\";\n  });\n\n  var isArabicLetter = (jsPDFAPI.__arabicParser__.isArabicLetter = function(\n    letter\n  ) {\n    return (\n      typeof letter === \"string\" &&\n      /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(\n        letter\n      )\n    );\n  });\n\n  var isArabicEndLetter = (jsPDFAPI.__arabicParser__.isArabicEndLetter = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length <= 2\n    );\n  });\n\n  var isArabicAlfLetter = (jsPDFAPI.__arabicParser__.isArabicAlfLetter = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) && alfletter.indexOf(letter.charCodeAt(0)) >= 0\n    );\n  });\n\n  jsPDFAPI.__arabicParser__.arabicLetterHasIsolatedForm = function(letter) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length >= 1\n    );\n  };\n\n  var arabicLetterHasFinalForm = (jsPDFAPI.__arabicParser__.arabicLetterHasFinalForm = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length >= 2\n    );\n  });\n\n  jsPDFAPI.__arabicParser__.arabicLetterHasInitialForm = function(letter) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length >= 3\n    );\n  };\n\n  var arabicLetterHasMedialForm = (jsPDFAPI.__arabicParser__.arabicLetterHasMedialForm = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length == 4\n    );\n  });\n\n  var resolveLigatures = (jsPDFAPI.__arabicParser__.resolveLigatures = function(\n    letters\n  ) {\n    var i = 0;\n    var tmpLigatures = ligatures;\n    var result = \"\";\n    var effectedLetters = 0;\n\n    for (i = 0; i < letters.length; i += 1) {\n      if (typeof tmpLigatures[letters.charCodeAt(i)] !== \"undefined\") {\n        effectedLetters++;\n        tmpLigatures = tmpLigatures[letters.charCodeAt(i)];\n\n        if (typeof tmpLigatures === \"number\") {\n          result += String.fromCharCode(tmpLigatures);\n          tmpLigatures = ligatures;\n          effectedLetters = 0;\n        }\n        if (i === letters.length - 1) {\n          tmpLigatures = ligatures;\n          result += letters.charAt(i - (effectedLetters - 1));\n          i = i - (effectedLetters - 1);\n          effectedLetters = 0;\n        }\n      } else {\n        tmpLigatures = ligatures;\n        result += letters.charAt(i - effectedLetters);\n        i = i - effectedLetters;\n        effectedLetters = 0;\n      }\n    }\n\n    return result;\n  });\n\n  jsPDFAPI.__arabicParser__.isArabicDiacritic = function(letter) {\n    return (\n      letter !== undefined &&\n      arabic_diacritics[letter.charCodeAt(0)] !== undefined\n    );\n  };\n\n  var getCorrectForm = (jsPDFAPI.__arabicParser__.getCorrectForm = function(\n    currentChar,\n    beforeChar,\n    nextChar\n  ) {\n    if (!isArabicLetter(currentChar)) {\n      return -1;\n    }\n\n    if (isInArabicSubstitutionA(currentChar) === false) {\n      return noChangeInForm;\n    }\n    if (\n      !arabicLetterHasFinalForm(currentChar) ||\n      (!isArabicLetter(beforeChar) && !isArabicLetter(nextChar)) ||\n      (!isArabicLetter(nextChar) && isArabicEndLetter(beforeChar)) ||\n      (isArabicEndLetter(currentChar) && !isArabicLetter(beforeChar)) ||\n      (isArabicEndLetter(currentChar) && isArabicAlfLetter(beforeChar)) ||\n      (isArabicEndLetter(currentChar) && isArabicEndLetter(beforeChar))\n    ) {\n      return isolatedForm;\n    }\n\n    if (\n      arabicLetterHasMedialForm(currentChar) &&\n      isArabicLetter(beforeChar) &&\n      !isArabicEndLetter(beforeChar) &&\n      isArabicLetter(nextChar) &&\n      arabicLetterHasFinalForm(nextChar)\n    ) {\n      return medialForm;\n    }\n\n    if (isArabicEndLetter(currentChar) || !isArabicLetter(nextChar)) {\n      return finalForm;\n    }\n    return initialForm;\n  });\n\n  /**\n   * @name processArabic\n   * @function\n   * @param {string} text\n   * @returns {string}\n   */\n  var parseArabic = function(text) {\n    text = text || \"\";\n\n    var result = \"\";\n    var i = 0;\n    var j = 0;\n    var position = 0;\n    var currentLetter = \"\";\n    var prevLetter = \"\";\n    var nextLetter = \"\";\n\n    var words = text.split(\"\\\\s+\");\n    var newWords = [];\n    for (i = 0; i < words.length; i += 1) {\n      newWords.push(\"\");\n      for (j = 0; j < words[i].length; j += 1) {\n        currentLetter = words[i][j];\n        prevLetter = words[i][j - 1];\n        nextLetter = words[i][j + 1];\n        if (isArabicLetter(currentLetter)) {\n          position = getCorrectForm(currentLetter, prevLetter, nextLetter);\n          if (position !== -1) {\n            newWords[i] += String.fromCharCode(\n              arabicSubstitionA[currentLetter.charCodeAt(0)][position]\n            );\n          } else {\n            newWords[i] += currentLetter;\n          }\n        } else {\n          newWords[i] += currentLetter;\n        }\n      }\n\n      newWords[i] = resolveLigatures(newWords[i]);\n    }\n    result = newWords.join(\" \");\n\n    return result;\n  };\n\n  var processArabic = (jsPDFAPI.__arabicParser__.processArabic = jsPDFAPI.processArabic = function() {\n    var text =\n      typeof arguments[0] === \"string\" ? arguments[0] : arguments[0].text;\n    var tmpText = [];\n    var result;\n\n    if (Array.isArray(text)) {\n      var i = 0;\n      tmpText = [];\n      for (i = 0; i < text.length; i += 1) {\n        if (Array.isArray(text[i])) {\n          tmpText.push([parseArabic(text[i][0]), text[i][1], text[i][2]]);\n        } else {\n          tmpText.push([parseArabic(text[i])]);\n        }\n      }\n      result = tmpText;\n    } else {\n      result = parseArabic(text);\n    }\n    if (typeof arguments[0] === \"string\") {\n      return result;\n    } else {\n      arguments[0].text = result;\n      return arguments[0];\n    }\n  });\n\n  jsPDFAPI.events.push([\"preProcessText\", processArabic]);\n})(jsPDF.API);\n", "/** @license\n * jsPDF Autoprint Plugin\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name autoprint\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * Makes the PDF automatically open the print-Dialog when opened in a PDF-viewer.\n   *\n   * @name autoPrint\n   * @function\n   * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .\n   * @returns {jsPDF}\n   * @example\n   * var doc = new jsPDF();\n   * doc.text(10, 10, 'This is a test');\n   * doc.autoPrint({variant: 'non-conform'});\n   * doc.save('autoprint.pdf');\n   */\n  jsPDFAPI.autoPrint = function(options) {\n    \"use strict\";\n    var refAutoPrintTag;\n    options = options || {};\n    options.variant = options.variant || \"non-conform\";\n\n    switch (options.variant) {\n      case \"javascript\":\n        //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb\n        this.addJS(\"print({});\");\n        break;\n      case \"non-conform\":\n      default:\n        this.internal.events.subscribe(\"postPutResources\", function() {\n          refAutoPrintTag = this.internal.newObject();\n          this.internal.out(\"<<\");\n          this.internal.out(\"/S /Named\");\n          this.internal.out(\"/Type /Action\");\n          this.internal.out(\"/N /Print\");\n          this.internal.out(\">>\");\n          this.internal.out(\"endobj\");\n        });\n\n        this.internal.events.subscribe(\"putCatalog\", function() {\n          this.internal.out(\"/OpenAction \" + refAutoPrintTag + \" 0 R\");\n        });\n        break;\n    }\n    return this;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Canvas PlugIn\n * This plugin mimics the HTML5 Canvas\n *\n * The goal is to provide a way for current canvas users to print directly to a PDF.\n * @name canvas\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * @class Canvas\n   * @classdesc A Canvas Wrapper for jsPDF\n   */\n  var Canvas = function() {\n    var jsPdfInstance = undefined;\n    Object.defineProperty(this, \"pdf\", {\n      get: function() {\n        return jsPdfInstance;\n      },\n      set: function(value) {\n        jsPdfInstance = value;\n      }\n    });\n\n    var _width = 150;\n    /**\n     * The height property is a positive integer reflecting the height HTML attribute of the <canvas> element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 150 is used.\n     * This is one of the two properties, the other being width, that controls the size of the canvas.\n     *\n     * @name width\n     */\n    Object.defineProperty(this, \"width\", {\n      get: function() {\n        return _width;\n      },\n      set: function(value) {\n        if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n          _width = 150;\n        } else {\n          _width = value;\n        }\n        if (this.getContext(\"2d\").pageWrapXEnabled) {\n          this.getContext(\"2d\").pageWrapX = _width + 1;\n        }\n      }\n    });\n\n    var _height = 300;\n    /**\n     * The width property is a positive integer reflecting the width HTML attribute of the <canvas> element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 300 is used.\n     * This is one of the two properties, the other being height, that controls the size of the canvas.\n     *\n     * @name height\n     */\n    Object.defineProperty(this, \"height\", {\n      get: function() {\n        return _height;\n      },\n      set: function(value) {\n        if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n          _height = 300;\n        } else {\n          _height = value;\n        }\n        if (this.getContext(\"2d\").pageWrapYEnabled) {\n          this.getContext(\"2d\").pageWrapY = _height + 1;\n        }\n      }\n    });\n\n    var _childNodes = [];\n    Object.defineProperty(this, \"childNodes\", {\n      get: function() {\n        return _childNodes;\n      },\n      set: function(value) {\n        _childNodes = value;\n      }\n    });\n\n    var _style = {};\n    Object.defineProperty(this, \"style\", {\n      get: function() {\n        return _style;\n      },\n      set: function(value) {\n        _style = value;\n      }\n    });\n\n    Object.defineProperty(this, \"parentNode\", {});\n  };\n\n  /**\n   * The getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\n   *\n   * @name getContext\n   * @function\n   * @param {string} contextType Is a String containing the context identifier defining the drawing context associated to the canvas. Possible value is \"2d\", leading to the creation of a Context2D object representing a two-dimensional rendering context.\n   * @param {object} contextAttributes\n   */\n  Canvas.prototype.getContext = function(contextType, contextAttributes) {\n    contextType = contextType || \"2d\";\n    var key;\n\n    if (contextType !== \"2d\") {\n      return null;\n    }\n    for (key in contextAttributes) {\n      if (this.pdf.context2d.hasOwnProperty(key)) {\n        this.pdf.context2d[key] = contextAttributes[key];\n      }\n    }\n    this.pdf.context2d._canvas = this;\n    return this.pdf.context2d;\n  };\n\n  /**\n   * The toDataURL() method is just a stub to throw an error if accidently called.\n   *\n   * @name toDataURL\n   * @function\n   */\n  Canvas.prototype.toDataURL = function() {\n    throw new Error(\"toDataURL is not implemented.\");\n  };\n\n  jsPDFAPI.events.push([\n    \"initialized\",\n    function() {\n      this.canvas = new Canvas();\n      this.canvas.pdf = this;\n    }\n  ]);\n\n  return this;\n})(jsPDF.API);\n", "/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *               2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *               2013 Lee Driscoll, https://github.com/lsdriscoll\n *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n *               2014 James Hall, james@parall.ax\n *               2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name cell\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var NO_MARGINS = { left: 0, top: 0, bottom: 0, right: 0 };\n\n  var px2pt = (0.264583 * 72) / 25.4;\n  var printingHeaderRow = false;\n\n  var _initialize = function() {\n    if (typeof this.internal.__cell__ === \"undefined\") {\n      this.internal.__cell__ = {};\n      this.internal.__cell__.padding = 3;\n      this.internal.__cell__.headerFunction = undefined;\n      this.internal.__cell__.margins = Object.assign({}, NO_MARGINS);\n      this.internal.__cell__.margins.width = this.getPageWidth();\n      _reset.call(this);\n    }\n  };\n\n  var _reset = function() {\n    this.internal.__cell__.lastCell = new Cell();\n    this.internal.__cell__.pages = 1;\n  };\n\n  var Cell = function() {\n    var _x = arguments[0];\n    Object.defineProperty(this, \"x\", {\n      enumerable: true,\n      get: function() {\n        return _x;\n      },\n      set: function(value) {\n        _x = value;\n      }\n    });\n    var _y = arguments[1];\n    Object.defineProperty(this, \"y\", {\n      enumerable: true,\n      get: function() {\n        return _y;\n      },\n      set: function(value) {\n        _y = value;\n      }\n    });\n    var _width = arguments[2];\n    Object.defineProperty(this, \"width\", {\n      enumerable: true,\n      get: function() {\n        return _width;\n      },\n      set: function(value) {\n        _width = value;\n      }\n    });\n    var _height = arguments[3];\n    Object.defineProperty(this, \"height\", {\n      enumerable: true,\n      get: function() {\n        return _height;\n      },\n      set: function(value) {\n        _height = value;\n      }\n    });\n    var _text = arguments[4];\n    Object.defineProperty(this, \"text\", {\n      enumerable: true,\n      get: function() {\n        return _text;\n      },\n      set: function(value) {\n        _text = value;\n      }\n    });\n    var _lineNumber = arguments[5];\n    Object.defineProperty(this, \"lineNumber\", {\n      enumerable: true,\n      get: function() {\n        return _lineNumber;\n      },\n      set: function(value) {\n        _lineNumber = value;\n      }\n    });\n    var _align = arguments[6];\n    Object.defineProperty(this, \"align\", {\n      enumerable: true,\n      get: function() {\n        return _align;\n      },\n      set: function(value) {\n        _align = value;\n      }\n    });\n\n    return this;\n  };\n\n  Cell.prototype.clone = function() {\n    return new Cell(\n      this.x,\n      this.y,\n      this.width,\n      this.height,\n      this.text,\n      this.lineNumber,\n      this.align\n    );\n  };\n\n  Cell.prototype.toArray = function() {\n    return [\n      this.x,\n      this.y,\n      this.width,\n      this.height,\n      this.text,\n      this.lineNumber,\n      this.align\n    ];\n  };\n\n  /**\n   * @name setHeaderFunction\n   * @function\n   * @param {function} func\n   */\n  jsPDFAPI.setHeaderFunction = function(func) {\n    _initialize.call(this);\n    this.internal.__cell__.headerFunction =\n      typeof func === \"function\" ? func : undefined;\n    return this;\n  };\n\n  /**\n   * @name getTextDimensions\n   * @function\n   * @param {string} txt\n   * @returns {Object} dimensions\n   */\n  jsPDFAPI.getTextDimensions = function(text, options) {\n    _initialize.call(this);\n    options = options || {};\n    var fontSize = options.fontSize || this.getFontSize();\n    var font = options.font || this.getFont();\n    var scaleFactor = options.scaleFactor || this.internal.scaleFactor;\n    var width = 0;\n    var amountOfLines = 0;\n    var height = 0;\n    var tempWidth = 0;\n    var scope = this;\n\n    if (!Array.isArray(text) && typeof text !== \"string\") {\n      if (typeof text === \"number\") {\n        text = String(text);\n      } else {\n        throw new Error(\n          \"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\"\n        );\n      }\n    }\n\n    const maxWidth = options.maxWidth;\n    if (maxWidth > 0) {\n      if (typeof text === \"string\") {\n        text = this.splitTextToSize(text, maxWidth);\n      } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n        text = text.reduce(function(acc, textLine) {\n          return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n        }, []);\n      }\n    } else {\n      // Without the else clause, it will not work if you do not pass along maxWidth\n      text = Array.isArray(text) ? text : [text];\n    }\n\n    for (var i = 0; i < text.length; i++) {\n      tempWidth = this.getStringUnitWidth(text[i], { font: font }) * fontSize;\n      if (width < tempWidth) {\n        width = tempWidth;\n      }\n    }\n\n    if (width !== 0) {\n      amountOfLines = text.length;\n    }\n\n    width = width / scaleFactor;\n    height = Math.max(\n      (amountOfLines * fontSize * this.getLineHeightFactor() -\n        fontSize * (this.getLineHeightFactor() - 1)) /\n        scaleFactor,\n      0\n    );\n    return { w: width, h: height };\n  };\n\n  /**\n   * @name cellAddPage\n   * @function\n   */\n  jsPDFAPI.cellAddPage = function() {\n    _initialize.call(this);\n\n    this.addPage();\n\n    var margins = this.internal.__cell__.margins || NO_MARGINS;\n    this.internal.__cell__.lastCell = new Cell(\n      margins.left,\n      margins.top,\n      undefined,\n      undefined\n    );\n    this.internal.__cell__.pages += 1;\n\n    return this;\n  };\n\n  /**\n   * @name cell\n   * @function\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   * @param {string} text\n   * @param {number} lineNumber lineNumber\n   * @param {string} align\n   * @return {jsPDF} jsPDF-instance\n   */\n  var cell = (jsPDFAPI.cell = function() {\n    var currentCell;\n\n    if (arguments[0] instanceof Cell) {\n      currentCell = arguments[0];\n    } else {\n      currentCell = new Cell(\n        arguments[0],\n        arguments[1],\n        arguments[2],\n        arguments[3],\n        arguments[4],\n        arguments[5]\n      );\n    }\n    _initialize.call(this);\n    var lastCell = this.internal.__cell__.lastCell;\n    var padding = this.internal.__cell__.padding;\n    var margins = this.internal.__cell__.margins || NO_MARGINS;\n    var tableHeaderRow = this.internal.__cell__.tableHeaderRow;\n    var printHeaders = this.internal.__cell__.printHeaders;\n    // If this is not the first cell, we must change its position\n    if (typeof lastCell.lineNumber !== \"undefined\") {\n      if (lastCell.lineNumber === currentCell.lineNumber) {\n        //Same line\n        currentCell.x = (lastCell.x || 0) + (lastCell.width || 0);\n        currentCell.y = lastCell.y || 0;\n      } else {\n        //New line\n        if (\n          lastCell.y + lastCell.height + currentCell.height + margins.bottom >\n          this.getPageHeight()\n        ) {\n          this.cellAddPage();\n          currentCell.y = margins.top;\n          if (printHeaders && tableHeaderRow) {\n            this.printHeaderRow(currentCell.lineNumber, true);\n            currentCell.y += tableHeaderRow[0].height;\n          }\n        } else {\n          currentCell.y = lastCell.y + lastCell.height || currentCell.y;\n        }\n      }\n    }\n\n    if (typeof currentCell.text[0] !== \"undefined\") {\n      this.rect(\n        currentCell.x,\n        currentCell.y,\n        currentCell.width,\n        currentCell.height,\n        printingHeaderRow === true ? \"FD\" : undefined\n      );\n      if (currentCell.align === \"right\") {\n        this.text(\n          currentCell.text,\n          currentCell.x + currentCell.width - padding,\n          currentCell.y + padding,\n          { align: \"right\", baseline: \"top\" }\n        );\n      } else if (currentCell.align === \"center\") {\n        this.text(\n          currentCell.text,\n          currentCell.x + currentCell.width / 2,\n          currentCell.y + padding,\n          {\n            align: \"center\",\n            baseline: \"top\",\n            maxWidth: currentCell.width - padding - padding\n          }\n        );\n      } else {\n        this.text(\n          currentCell.text,\n          currentCell.x + padding,\n          currentCell.y + padding,\n          {\n            align: \"left\",\n            baseline: \"top\",\n            maxWidth: currentCell.width - padding - padding\n          }\n        );\n      }\n    }\n    this.internal.__cell__.lastCell = currentCell;\n    return this;\n  });\n\n  /**\n     * Create a table from a set of data.\n     * @name table\n     * @function\n     * @param {Integer} [x] : left-position for top-left corner of table\n     * @param {Integer} [y] top-position for top-left corner of table\n     * @param {Object[]} [data] An array of objects containing key-value pairs corresponding to a row of data.\n     * @param {String[]} [headers] Omit or null to auto-generate headers at a performance cost\n\n     * @param {Object} [config.printHeaders] True to print column headers at the top of every page\n     * @param {Object} [config.autoSize] True to dynamically set the column widths to match the widest cell value\n     * @param {Object} [config.margins] margin values for left, top, bottom, and width\n     * @param {Object} [config.fontSize] Integer fontSize to use (optional)\n     * @param {Object} [config.padding] cell-padding in pt to use (optional)\n     * @param {Object} [config.headerBackgroundColor] default is #c8c8c8 (optional)\n     * @param {Object} [config.headerTextColor] default is #000 (optional)\n     * @param {Object} [config.rowStart] callback to handle before print each row (optional)\n     * @param {Object} [config.cellStart] callback to handle before print each cell (optional)\n     * @returns {jsPDF} jsPDF-instance\n     */\n\n  jsPDFAPI.table = function(x, y, data, headers, config) {\n    _initialize.call(this);\n    if (!data) {\n      throw new Error(\"No data for PDF table.\");\n    }\n\n    config = config || {};\n\n    var headerNames = [],\n      headerLabels = [],\n      headerAligns = [],\n      i,\n      columnMatrix = {},\n      columnWidths = {},\n      column,\n      columnMinWidths = [],\n      j,\n      tableHeaderConfigs = [],\n      //set up defaults. If a value is provided in config, defaults will be overwritten:\n      autoSize = config.autoSize || false,\n      printHeaders = config.printHeaders === false ? false : true,\n      fontSize =\n        config.css && typeof config.css[\"font-size\"] !== \"undefined\"\n          ? config.css[\"font-size\"] * 16\n          : config.fontSize || 12,\n      margins =\n        config.margins ||\n        Object.assign({ width: this.getPageWidth() }, NO_MARGINS),\n      padding = typeof config.padding === \"number\" ? config.padding : 3,\n      headerBackgroundColor = config.headerBackgroundColor || \"#c8c8c8\",\n      headerTextColor = config.headerTextColor || \"#000\";\n\n    _reset.call(this);\n\n    this.internal.__cell__.printHeaders = printHeaders;\n    this.internal.__cell__.margins = margins;\n    this.internal.__cell__.table_font_size = fontSize;\n    this.internal.__cell__.padding = padding;\n    this.internal.__cell__.headerBackgroundColor = headerBackgroundColor;\n    this.internal.__cell__.headerTextColor = headerTextColor;\n    this.setFontSize(fontSize);\n\n    // Set header values\n    if (headers === undefined || headers === null) {\n      // No headers defined so we derive from data\n      headerNames = Object.keys(data[0]);\n      headerLabels = headerNames;\n      headerAligns = headerNames.map(function() {\n        return \"left\";\n      });\n    } else if (Array.isArray(headers) && typeof headers[0] === \"object\") {\n      headerNames = headers.map(function(header) {\n        return header.name;\n      });\n      headerLabels = headers.map(function(header) {\n        return header.prompt || header.name || \"\";\n      });\n      headerAligns = headers.map(function(header) {\n        return header.align || \"left\";\n      });\n      // Split header configs into names and prompts\n      for (i = 0; i < headers.length; i += 1) {\n        columnWidths[headers[i].name] = headers[i].width * px2pt;\n      }\n    } else if (Array.isArray(headers) && typeof headers[0] === \"string\") {\n      headerNames = headers;\n      headerLabels = headerNames;\n      headerAligns = headerNames.map(function() {\n        return \"left\";\n      });\n    }\n\n    if (\n      autoSize ||\n      (Array.isArray(headers) && typeof headers[0] === \"string\")\n    ) {\n      var headerName;\n      for (i = 0; i < headerNames.length; i += 1) {\n        headerName = headerNames[i];\n\n        // Create a matrix of columns e.g., {column_title: [row1_Record, row2_Record]}\n\n        columnMatrix[headerName] = data.map(function(rec) {\n          return rec[headerName];\n        });\n\n        // get header width\n        this.setFont(undefined, \"bold\");\n        columnMinWidths.push(\n          this.getTextDimensions(headerLabels[i], {\n            fontSize: this.internal.__cell__.table_font_size,\n            scaleFactor: this.internal.scaleFactor\n          }).w\n        );\n        column = columnMatrix[headerName];\n\n        // get cell widths\n        this.setFont(undefined, \"normal\");\n        for (j = 0; j < column.length; j += 1) {\n          columnMinWidths.push(\n            this.getTextDimensions(column[j], {\n              fontSize: this.internal.__cell__.table_font_size,\n              scaleFactor: this.internal.scaleFactor\n            }).w\n          );\n        }\n\n        // get final column width\n        columnWidths[headerName] =\n          Math.max.apply(null, columnMinWidths) + padding + padding;\n\n        //have to reset\n        columnMinWidths = [];\n      }\n    }\n\n    // -- Construct the table\n\n    if (printHeaders) {\n      var row = {};\n      for (i = 0; i < headerNames.length; i += 1) {\n        row[headerNames[i]] = {};\n        row[headerNames[i]].text = headerLabels[i];\n        row[headerNames[i]].align = headerAligns[i];\n      }\n\n      var rowHeight = calculateLineHeight.call(this, row, columnWidths);\n\n      // Construct the header row\n      tableHeaderConfigs = headerNames.map(function(value) {\n        return new Cell(\n          x,\n          y,\n          columnWidths[value],\n          rowHeight,\n          row[value].text,\n          undefined,\n          row[value].align\n        );\n      });\n\n      // Store the table header config\n      this.setTableHeaderRow(tableHeaderConfigs);\n\n      // Print the header for the start of the table\n      this.printHeaderRow(1, false);\n    }\n\n    // Construct the data rows\n\n    var align = headers.reduce(function(pv, cv) {\n      pv[cv.name] = cv.align;\n      return pv;\n    }, {});\n    for (i = 0; i < data.length; i += 1) {\n      if (\"rowStart\" in config && config.rowStart instanceof Function) {\n        config.rowStart(\n          {\n            row: i,\n            data: data[i]\n          },\n          this\n        );\n      }\n      var lineHeight = calculateLineHeight.call(this, data[i], columnWidths);\n\n      for (j = 0; j < headerNames.length; j += 1) {\n        var cellData = data[i][headerNames[j]];\n        if (\"cellStart\" in config && config.cellStart instanceof Function) {\n          config.cellStart(\n            {\n              row: i,\n              col: j,\n              data: cellData\n            },\n            this\n          );\n        }\n        cell.call(\n          this,\n          new Cell(\n            x,\n            y,\n            columnWidths[headerNames[j]],\n            lineHeight,\n            cellData,\n            i + 2,\n            align[headerNames[j]]\n          )\n        );\n      }\n    }\n    this.internal.__cell__.table_x = x;\n    this.internal.__cell__.table_y = y;\n    return this;\n  };\n\n  /**\n   * Calculate the height for containing the highest column\n   *\n   * @name calculateLineHeight\n   * @function\n   * @param {Object[]} model is the line of data we want to calculate the height of\n   * @param {Integer[]} columnWidths is size of each column\n   * @returns {number} lineHeight\n   * @private\n   */\n  var calculateLineHeight = function calculateLineHeight(model, columnWidths) {\n    var padding = this.internal.__cell__.padding;\n    var fontSize = this.internal.__cell__.table_font_size;\n    var scaleFactor = this.internal.scaleFactor;\n\n    return Object.keys(model)\n      .map(function(key) {\n        var value = model[key];\n        return this.splitTextToSize(\n          value.hasOwnProperty(\"text\") ? value.text : value,\n          columnWidths[key] - padding - padding\n        );\n      }, this)\n      .map(function(value) {\n        return (\n          (this.getLineHeightFactor() * value.length * fontSize) / scaleFactor +\n          padding +\n          padding\n        );\n      }, this)\n      .reduce(function(pv, cv) {\n        return Math.max(pv, cv);\n      }, 0);\n  };\n\n  /**\n   * Store the config for outputting a table header\n   *\n   * @name setTableHeaderRow\n   * @function\n   * @param {Object[]} config\n   * An array of cell configs that would define a header row: Each config matches the config used by jsPDFAPI.cell\n   * except the lineNumber parameter is excluded\n   */\n  jsPDFAPI.setTableHeaderRow = function(config) {\n    _initialize.call(this);\n    this.internal.__cell__.tableHeaderRow = config;\n  };\n\n  /**\n   * Output the store header row\n   *\n   * @name printHeaderRow\n   * @function\n   * @param {number} lineNumber The line number to output the header at\n   * @param {boolean} new_page\n   */\n  jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {\n    _initialize.call(this);\n    if (!this.internal.__cell__.tableHeaderRow) {\n      throw new Error(\"Property tableHeaderRow does not exist.\");\n    }\n\n    var tableHeaderCell;\n\n    printingHeaderRow = true;\n    if (typeof this.internal.__cell__.headerFunction === \"function\") {\n      var position = this.internal.__cell__.headerFunction(\n        this,\n        this.internal.__cell__.pages\n      );\n      this.internal.__cell__.lastCell = new Cell(\n        position[0],\n        position[1],\n        position[2],\n        position[3],\n        undefined,\n        -1\n      );\n    }\n    this.setFont(undefined, \"bold\");\n\n    var tempHeaderConf = [];\n    for (var i = 0; i < this.internal.__cell__.tableHeaderRow.length; i += 1) {\n      tableHeaderCell = this.internal.__cell__.tableHeaderRow[i].clone();\n      if (new_page) {\n        tableHeaderCell.y = this.internal.__cell__.margins.top || 0;\n        tempHeaderConf.push(tableHeaderCell);\n      }\n      tableHeaderCell.lineNumber = lineNumber;\n      var currentTextColor = this.getTextColor();\n      this.setTextColor(this.internal.__cell__.headerTextColor);\n      this.setFillColor(this.internal.__cell__.headerBackgroundColor);\n      cell.call(this, tableHeaderCell);\n      this.setTextColor(currentTextColor);\n    }\n    if (tempHeaderConf.length > 0) {\n      this.setTableHeaderRow(tempHeaderConf);\n    }\n    this.setFont(undefined, \"normal\");\n    printingHeaderRow = false;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF JavaScript plugin\n *\n * @name javascript\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n  var jsNamesObj, jsJsObj, text;\n  /**\n   * @name addJS\n   * @function\n   * @param {string} javascript The javascript to be embedded into the PDF-file.\n   * @returns {jsPDF}\n   */\n  jsPDFAPI.addJS = function(javascript) {\n    text = javascript;\n    this.internal.events.subscribe(\"postPutResources\", function() {\n      jsNamesObj = this.internal.newObject();\n      this.internal.out(\"<<\");\n      this.internal.out(\"/Names [(EmbeddedJS) \" + (jsNamesObj + 1) + \" 0 R]\");\n      this.internal.out(\">>\");\n      this.internal.out(\"endobj\");\n\n      jsJsObj = this.internal.newObject();\n      this.internal.out(\"<<\");\n      this.internal.out(\"/S /JavaScript\");\n      this.internal.out(\"/JS (\" + text + \")\");\n      this.internal.out(\">>\");\n      this.internal.out(\"endobj\");\n    });\n    this.internal.events.subscribe(\"putCatalog\", function() {\n      if (jsNamesObj !== undefined && jsJsObj !== undefined) {\n        this.internal.out(\"/Names <</JavaScript \" + jsNamesObj + \" 0 R>>\");\n      }\n    });\n    return this;\n  };\n})(jsPDF.API);\n", "/* eslint-disable no-fallthrough */\r\n/* eslint-disable no-console */\r\n/**\r\n * @license\r\n * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\r\n *\r\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\r\n */\r\n\r\nimport { jsPDF } from \"../jspdf.js\";\r\nimport { RGBColor } from \"../libs/rgbcolor.js\";\r\nimport { console } from \"../libs/console.js\";\r\nimport {\r\n  buildFontFaceMap,\r\n  parseFontFamily,\r\n  resolveFontFace\r\n} from \"../libs/fontFace.js\";\r\n\r\n/**\r\n * This plugin mimics the HTML5 CanvasRenderingContext2D.\r\n *\r\n * The goal is to provide a way for current canvas implementations to print directly to a PDF.\r\n *\r\n * @name context2d\r\n * @module\r\n */\r\n(function(jsPDFAPI) {\r\n  \"use strict\";\r\n  var ContextLayer = function(ctx) {\r\n    ctx = ctx || {};\r\n    this.isStrokeTransparent = ctx.isStrokeTransparent || false;\r\n    this.strokeOpacity = ctx.strokeOpacity || 1;\r\n    this.strokeStyle = ctx.strokeStyle || \"#000000\";\r\n    this.fillStyle = ctx.fillStyle || \"#000000\";\r\n    this.isFillTransparent = ctx.isFillTransparent || false;\r\n    this.fillOpacity = ctx.fillOpacity || 1;\r\n    this.font = ctx.font || \"10px sans-serif\";\r\n    this.textBaseline = ctx.textBaseline || \"alphabetic\";\r\n    this.textAlign = ctx.textAlign || \"left\";\r\n    this.lineWidth = ctx.lineWidth || 1;\r\n    this.lineJoin = ctx.lineJoin || \"miter\";\r\n    this.lineCap = ctx.lineCap || \"butt\";\r\n    this.path = ctx.path || [];\r\n    this.transform =\r\n      typeof ctx.transform !== \"undefined\"\r\n        ? ctx.transform.clone()\r\n        : new Matrix();\r\n    this.globalCompositeOperation = ctx.globalCompositeOperation || \"normal\";\r\n    this.globalAlpha = ctx.globalAlpha || 1.0;\r\n    this.clip_path = ctx.clip_path || [];\r\n    this.currentPoint = ctx.currentPoint || new Point();\r\n    this.miterLimit = ctx.miterLimit || 10.0;\r\n    this.lastPoint = ctx.lastPoint || new Point();\r\n    this.lineDashOffset = ctx.lineDashOffset || 0.0;\r\n    this.lineDash = ctx.lineDash || [];\r\n    this.margin = ctx.margin || [0, 0, 0, 0];\r\n    this.prevPageLastElemOffset = ctx.prevPageLastElemOffset || 0;\r\n\r\n    this.ignoreClearRect =\r\n      typeof ctx.ignoreClearRect === \"boolean\" ? ctx.ignoreClearRect : true;\r\n    return this;\r\n  };\r\n\r\n  //stub\r\n  var f2,\r\n    getHorizontalCoordinateString,\r\n    getVerticalCoordinateString,\r\n    getHorizontalCoordinate,\r\n    getVerticalCoordinate,\r\n    Point,\r\n    Rectangle,\r\n    Matrix,\r\n    _ctx;\r\n  jsPDFAPI.events.push([\r\n    \"initialized\",\r\n    function() {\r\n      this.context2d = new Context2D(this);\r\n\r\n      f2 = this.internal.f2;\r\n      getHorizontalCoordinateString = this.internal.getCoordinateString;\r\n      getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\r\n      getHorizontalCoordinate = this.internal.getHorizontalCoordinate;\r\n      getVerticalCoordinate = this.internal.getVerticalCoordinate;\r\n      Point = this.internal.Point;\r\n      Rectangle = this.internal.Rectangle;\r\n      Matrix = this.internal.Matrix;\r\n      _ctx = new ContextLayer();\r\n    }\r\n  ]);\r\n\r\n  var Context2D = function(pdf) {\r\n    Object.defineProperty(this, \"canvas\", {\r\n      get: function() {\r\n        return { parentNode: false, style: false };\r\n      }\r\n    });\r\n\r\n    var _pdf = pdf;\r\n    Object.defineProperty(this, \"pdf\", {\r\n      get: function() {\r\n        return _pdf;\r\n      }\r\n    });\r\n\r\n    var _pageWrapXEnabled = false;\r\n    /**\r\n     * @name pageWrapXEnabled\r\n     * @type {boolean}\r\n     * @default false\r\n     */\r\n    Object.defineProperty(this, \"pageWrapXEnabled\", {\r\n      get: function() {\r\n        return _pageWrapXEnabled;\r\n      },\r\n      set: function(value) {\r\n        _pageWrapXEnabled = Boolean(value);\r\n      }\r\n    });\r\n\r\n    var _pageWrapYEnabled = false;\r\n    /**\r\n     * @name pageWrapYEnabled\r\n     * @type {boolean}\r\n     * @default true\r\n     */\r\n    Object.defineProperty(this, \"pageWrapYEnabled\", {\r\n      get: function() {\r\n        return _pageWrapYEnabled;\r\n      },\r\n      set: function(value) {\r\n        _pageWrapYEnabled = Boolean(value);\r\n      }\r\n    });\r\n\r\n    var _posX = 0;\r\n    /**\r\n     * @name posX\r\n     * @type {number}\r\n     * @default 0\r\n     */\r\n    Object.defineProperty(this, \"posX\", {\r\n      get: function() {\r\n        return _posX;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          _posX = value;\r\n        }\r\n      }\r\n    });\r\n\r\n    var _posY = 0;\r\n    /**\r\n     * @name posY\r\n     * @type {number}\r\n     * @default 0\r\n     */\r\n    Object.defineProperty(this, \"posY\", {\r\n      get: function() {\r\n        return _posY;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          _posY = value;\r\n        }\r\n      }\r\n    });\r\n\r\n    /**\r\n     * Gets or sets the page margin when using auto paging. Has no effect when {@link autoPaging} is off.\r\n     * @name margin\r\n     * @type {number|number[]}\r\n     * @default [0, 0, 0, 0]\r\n     */\r\n    Object.defineProperty(this, \"margin\", {\r\n      get: function() {\r\n        return _ctx.margin;\r\n      },\r\n      set: function(value) {\r\n        var margin;\r\n        if (typeof value === \"number\") {\r\n          margin = [value, value, value, value];\r\n        } else {\r\n          margin = new Array(4);\r\n          margin[0] = value[0];\r\n          margin[1] = value.length >= 2 ? value[1] : margin[0];\r\n          margin[2] = value.length >= 3 ? value[2] : margin[0];\r\n          margin[3] = value.length >= 4 ? value[3] : margin[1];\r\n        }\r\n        _ctx.margin = margin;\r\n      }\r\n    });\r\n\r\n    var _autoPaging = false;\r\n    /**\r\n     * Gets or sets the auto paging mode. When auto paging is enabled, the context2d will automatically draw on the\r\n     * next page if a shape or text chunk doesn't fit entirely on the current page. The context2d will create new\r\n     * pages if required.\r\n     *\r\n     * Context2d supports different modes:\r\n     * <ul>\r\n     * <li>\r\n     *   <code>false</code>: Auto paging is disabled.\r\n     * </li>\r\n     * <li>\r\n     *   <code>true</code> or <code>'slice'</code>: Will cut shapes or text chunks across page breaks. Will possibly\r\n     *   slice text in half, making it difficult to read.\r\n     * </li>\r\n     * <li>\r\n     *   <code>'text'</code>: Trys not to cut text in half across page breaks. Works best for documents consisting\r\n     *   mostly of a single column of text.\r\n     * </li>\r\n     * </ul>\r\n     * @name Context2D#autoPaging\r\n     * @type {boolean|\"slice\"|\"text\"}\r\n     * @default false\r\n     */\r\n    Object.defineProperty(this, \"autoPaging\", {\r\n      get: function() {\r\n        return _autoPaging;\r\n      },\r\n      set: function(value) {\r\n        _autoPaging = value;\r\n      }\r\n    });\r\n\r\n    var lastBreak = 0;\r\n    /**\r\n     * @name lastBreak\r\n     * @type {number}\r\n     * @default 0\r\n     */\r\n    Object.defineProperty(this, \"lastBreak\", {\r\n      get: function() {\r\n        return lastBreak;\r\n      },\r\n      set: function(value) {\r\n        lastBreak = value;\r\n      }\r\n    });\r\n\r\n    var pageBreaks = [];\r\n    /**\r\n     * Y Position of page breaks.\r\n     * @name pageBreaks\r\n     * @type {number}\r\n     * @default 0\r\n     */\r\n    Object.defineProperty(this, \"pageBreaks\", {\r\n      get: function() {\r\n        return pageBreaks;\r\n      },\r\n      set: function(value) {\r\n        pageBreaks = value;\r\n      }\r\n    });\r\n\r\n    /**\r\n     * @name ctx\r\n     * @type {object}\r\n     * @default {}\r\n     */\r\n    Object.defineProperty(this, \"ctx\", {\r\n      get: function() {\r\n        return _ctx;\r\n      },\r\n      set: function(value) {\r\n        if (value instanceof ContextLayer) {\r\n          _ctx = value;\r\n        }\r\n      }\r\n    });\r\n\r\n    /**\r\n     * @name path\r\n     * @type {array}\r\n     * @default []\r\n     */\r\n    Object.defineProperty(this, \"path\", {\r\n      get: function() {\r\n        return _ctx.path;\r\n      },\r\n      set: function(value) {\r\n        _ctx.path = value;\r\n      }\r\n    });\r\n\r\n    /**\r\n     * @name ctxStack\r\n     * @type {array}\r\n     * @default []\r\n     */\r\n    var _ctxStack = [];\r\n    Object.defineProperty(this, \"ctxStack\", {\r\n      get: function() {\r\n        return _ctxStack;\r\n      },\r\n      set: function(value) {\r\n        _ctxStack = value;\r\n      }\r\n    });\r\n\r\n    /**\r\n     * Sets or returns the color, gradient, or pattern used to fill the drawing\r\n     *\r\n     * @name fillStyle\r\n     * @default #000000\r\n     * @property {(color|gradient|pattern)} value The color of the drawing. Default value is #000000<br />\r\n     * A gradient object (linear or radial) used to fill the drawing (not supported by context2d)<br />\r\n     * A pattern object to use to fill the drawing (not supported by context2d)\r\n     */\r\n    Object.defineProperty(this, \"fillStyle\", {\r\n      get: function() {\r\n        return this.ctx.fillStyle;\r\n      },\r\n      set: function(value) {\r\n        var rgba;\r\n        rgba = getRGBA(value);\r\n\r\n        this.ctx.fillStyle = rgba.style;\r\n        this.ctx.isFillTransparent = rgba.a === 0;\r\n        this.ctx.fillOpacity = rgba.a;\r\n\r\n        this.pdf.setFillColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n        this.pdf.setTextColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n      }\r\n    });\r\n\r\n    /**\r\n     * Sets or returns the color, gradient, or pattern used for strokes\r\n     *\r\n     * @name strokeStyle\r\n     * @default #000000\r\n     * @property {color} color A CSS color value that indicates the stroke color of the drawing. Default value is #000000 (not supported by context2d)\r\n     * @property {gradient} gradient A gradient object (linear or radial) used to create a gradient stroke (not supported by context2d)\r\n     * @property {pattern} pattern A pattern object used to create a pattern stroke (not supported by context2d)\r\n     */\r\n    Object.defineProperty(this, \"strokeStyle\", {\r\n      get: function() {\r\n        return this.ctx.strokeStyle;\r\n      },\r\n      set: function(value) {\r\n        var rgba = getRGBA(value);\r\n\r\n        this.ctx.strokeStyle = rgba.style;\r\n        this.ctx.isStrokeTransparent = rgba.a === 0;\r\n        this.ctx.strokeOpacity = rgba.a;\r\n\r\n        if (rgba.a === 0) {\r\n          this.pdf.setDrawColor(255, 255, 255);\r\n        } else if (rgba.a === 1) {\r\n          this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n        } else {\r\n          this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n        }\r\n      }\r\n    });\r\n\r\n    /**\r\n     * Sets or returns the style of the end caps for a line\r\n     *\r\n     * @name lineCap\r\n     * @default butt\r\n     * @property {(butt|round|square)} lineCap butt A flat edge is added to each end of the line <br/>\r\n     * round A rounded end cap is added to each end of the line<br/>\r\n     * square A square end cap is added to each end of the line<br/>\r\n     */\r\n    Object.defineProperty(this, \"lineCap\", {\r\n      get: function() {\r\n        return this.ctx.lineCap;\r\n      },\r\n      set: function(value) {\r\n        if ([\"butt\", \"round\", \"square\"].indexOf(value) !== -1) {\r\n          this.ctx.lineCap = value;\r\n          this.pdf.setLineCap(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    /**\r\n     * Sets or returns the current line width\r\n     *\r\n     * @name lineWidth\r\n     * @default 1\r\n     * @property {number} lineWidth The current line width, in pixels\r\n     */\r\n    Object.defineProperty(this, \"lineWidth\", {\r\n      get: function() {\r\n        return this.ctx.lineWidth;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          this.ctx.lineWidth = value;\r\n          this.pdf.setLineWidth(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    /**\r\n     * Sets or returns the type of corner created, when two lines meet\r\n     */\r\n    Object.defineProperty(this, \"lineJoin\", {\r\n      get: function() {\r\n        return this.ctx.lineJoin;\r\n      },\r\n      set: function(value) {\r\n        if ([\"bevel\", \"round\", \"miter\"].indexOf(value) !== -1) {\r\n          this.ctx.lineJoin = value;\r\n          this.pdf.setLineJoin(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    /**\r\n     * A number specifying the miter limit ratio in coordinate space units. Zero, negative, Infinity, and NaN values are ignored. The default value is 10.0.\r\n     *\r\n     * @name miterLimit\r\n     * @default 10\r\n     */\r\n    Object.defineProperty(this, \"miterLimit\", {\r\n      get: function() {\r\n        return this.ctx.miterLimit;\r\n      },\r\n      set: function(value) {\r\n        if (!isNaN(value)) {\r\n          this.ctx.miterLimit = value;\r\n          this.pdf.setMiterLimit(value);\r\n        }\r\n      }\r\n    });\r\n\r\n    Object.defineProperty(this, \"textBaseline\", {\r\n      get: function() {\r\n        return this.ctx.textBaseline;\r\n      },\r\n      set: function(value) {\r\n        this.ctx.textBaseline = value;\r\n      }\r\n    });\r\n\r\n    Object.defineProperty(this, \"textAlign\", {\r\n      get: function() {\r\n        return this.ctx.textAlign;\r\n      },\r\n      set: function(value) {\r\n        if ([\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(value) !== -1) {\r\n          this.ctx.textAlign = value;\r\n        }\r\n      }\r\n    });\r\n\r\n    var _fontFaceMap = null;\r\n\r\n    function getFontFaceMap(pdf, fontFaces) {\r\n      if (_fontFaceMap === null) {\r\n        var fontMap = pdf.getFontList();\r\n\r\n        var convertedFontFaces = convertToFontFaces(fontMap);\r\n\r\n        _fontFaceMap = buildFontFaceMap(convertedFontFaces.concat(fontFaces));\r\n      }\r\n\r\n      return _fontFaceMap;\r\n    }\r\n\r\n    function convertToFontFaces(fontMap) {\r\n      var fontFaces = [];\r\n\r\n      Object.keys(fontMap).forEach(function(family) {\r\n        var styles = fontMap[family];\r\n\r\n        styles.forEach(function(style) {\r\n          var fontFace = null;\r\n\r\n          switch (style) {\r\n            case \"bold\":\r\n              fontFace = {\r\n                family: family,\r\n                weight: \"bold\"\r\n              };\r\n              break;\r\n\r\n            case \"italic\":\r\n              fontFace = {\r\n                family: family,\r\n                style: \"italic\"\r\n              };\r\n              break;\r\n\r\n            case \"bolditalic\":\r\n              fontFace = {\r\n                family: family,\r\n                weight: \"bold\",\r\n                style: \"italic\"\r\n              };\r\n              break;\r\n\r\n            case \"\":\r\n            case \"normal\":\r\n              fontFace = {\r\n                family: family\r\n              };\r\n              break;\r\n          }\r\n\r\n          // If font-face is still null here, it is a font with some styling we don't recognize and\r\n          // cannot map or it is a font added via the fontFaces option of .html().\r\n          if (fontFace !== null) {\r\n            fontFace.ref = {\r\n              name: family,\r\n              style: style\r\n            };\r\n\r\n            fontFaces.push(fontFace);\r\n          }\r\n        });\r\n      });\r\n\r\n      return fontFaces;\r\n    }\r\n\r\n    var _fontFaces = null;\r\n    /**\r\n     * A map of available font-faces, as passed in the options of\r\n     * .html(). If set a limited implementation of the font style matching\r\n     * algorithm defined by https://www.w3.org/TR/css-fonts-3/#font-matching-algorithm\r\n     * will be used. If not set it will fallback to previous behavior.\r\n     */\r\n\r\n    Object.defineProperty(this, \"fontFaces\", {\r\n      get: function() {\r\n        return _fontFaces;\r\n      },\r\n      set: function(value) {\r\n        _fontFaceMap = null;\r\n        _fontFaces = value;\r\n      }\r\n    });\r\n\r\n    Object.defineProperty(this, \"font\", {\r\n      get: function() {\r\n        return this.ctx.font;\r\n      },\r\n      set: function(value) {\r\n        this.ctx.font = value;\r\n        var rx, matches;\r\n\r\n        //source: https://stackoverflow.com/a/10136041\r\n        // eslint-disable-next-line no-useless-escape\r\n        rx = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i;\r\n        matches = rx.exec(value);\r\n        if (matches !== null) {\r\n          var fontStyle = matches[1];\r\n          var fontVariant = matches[2];\r\n          var fontWeight = matches[3];\r\n          var fontSize = matches[4];\r\n          var lineHeight = matches[5];\r\n          var fontFamily = matches[6];\r\n        } else {\r\n          return;\r\n        }\r\n        var rxFontSize = /^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i;\r\n        var fontSizeUnit = rxFontSize.exec(fontSize)[2];\r\n\r\n        if (\"px\" === fontSizeUnit) {\r\n          fontSize = Math.floor(\r\n            parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n          );\r\n        } else if (\"em\" === fontSizeUnit) {\r\n          fontSize = Math.floor(parseFloat(fontSize) * this.pdf.getFontSize());\r\n        } else {\r\n          fontSize = Math.floor(\r\n            parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n          );\r\n        }\r\n\r\n        this.pdf.setFontSize(fontSize);\r\n        var parts = parseFontFamily(fontFamily);\r\n\r\n        if (this.fontFaces) {\r\n          var fontFaceMap = getFontFaceMap(this.pdf, this.fontFaces);\r\n\r\n          var rules = parts.map(function(ff) {\r\n            return {\r\n              family: ff,\r\n              stretch: \"normal\", // TODO: Extract font-stretch from font rule (perhaps write proper parser for it?)\r\n              weight: fontWeight,\r\n              style: fontStyle\r\n            };\r\n          });\r\n\r\n          var font = resolveFontFace(fontFaceMap, rules);\r\n          this.pdf.setFont(font.ref.name, font.ref.style);\r\n          return;\r\n        }\r\n\r\n        var style = \"\";\r\n        if (\r\n          fontWeight === \"bold\" ||\r\n          parseInt(fontWeight, 10) >= 700 ||\r\n          fontStyle === \"bold\"\r\n        ) {\r\n          style = \"bold\";\r\n        }\r\n\r\n        if (fontStyle === \"italic\") {\r\n          style += \"italic\";\r\n        }\r\n\r\n        if (style.length === 0) {\r\n          style = \"normal\";\r\n        }\r\n        var jsPdfFontName = \"\";\r\n\r\n        var fallbackFonts = {\r\n          arial: \"Helvetica\",\r\n          Arial: \"Helvetica\",\r\n          verdana: \"Helvetica\",\r\n          Verdana: \"Helvetica\",\r\n          helvetica: \"Helvetica\",\r\n          Helvetica: \"Helvetica\",\r\n          \"sans-serif\": \"Helvetica\",\r\n          fixed: \"Courier\",\r\n          monospace: \"Courier\",\r\n          terminal: \"Courier\",\r\n          cursive: \"Times\",\r\n          fantasy: \"Times\",\r\n          serif: \"Times\"\r\n        };\r\n\r\n        for (var i = 0; i < parts.length; i++) {\r\n          if (\r\n            this.pdf.internal.getFont(parts[i], style, {\r\n              noFallback: true,\r\n              disableWarning: true\r\n            }) !== undefined\r\n          ) {\r\n            jsPdfFontName = parts[i];\r\n            break;\r\n          } else if (\r\n            style === \"bolditalic\" &&\r\n            this.pdf.internal.getFont(parts[i], \"bold\", {\r\n              noFallback: true,\r\n              disableWarning: true\r\n            }) !== undefined\r\n          ) {\r\n            jsPdfFontName = parts[i];\r\n            style = \"bold\";\r\n          } else if (\r\n            this.pdf.internal.getFont(parts[i], \"normal\", {\r\n              noFallback: true,\r\n              disableWarning: true\r\n            }) !== undefined\r\n          ) {\r\n            jsPdfFontName = parts[i];\r\n            style = \"normal\";\r\n            break;\r\n          }\r\n        }\r\n        if (jsPdfFontName === \"\") {\r\n          for (var j = 0; j < parts.length; j++) {\r\n            if (fallbackFonts[parts[j]]) {\r\n              jsPdfFontName = fallbackFonts[parts[j]];\r\n              break;\r\n            }\r\n          }\r\n        }\r\n        jsPdfFontName = jsPdfFontName === \"\" ? \"Times\" : jsPdfFontName;\r\n        this.pdf.setFont(jsPdfFontName, style);\r\n      }\r\n    });\r\n\r\n    Object.defineProperty(this, \"globalCompositeOperation\", {\r\n      get: function() {\r\n        return this.ctx.globalCompositeOperation;\r\n      },\r\n      set: function(value) {\r\n        this.ctx.globalCompositeOperation = value;\r\n      }\r\n    });\r\n\r\n    Object.defineProperty(this, \"globalAlpha\", {\r\n      get: function() {\r\n        return this.ctx.globalAlpha;\r\n      },\r\n      set: function(value) {\r\n        this.ctx.globalAlpha = value;\r\n      }\r\n    });\r\n\r\n    /**\r\n     * A float specifying the amount of the line dash offset. The default value is 0.0.\r\n     *\r\n     * @name lineDashOffset\r\n     * @default 0.0\r\n     */\r\n    Object.defineProperty(this, \"lineDashOffset\", {\r\n      get: function() {\r\n        return this.ctx.lineDashOffset;\r\n      },\r\n      set: function(value) {\r\n        this.ctx.lineDashOffset = value;\r\n        setLineDash.call(this);\r\n      }\r\n    });\r\n\r\n    // Not HTML API\r\n    Object.defineProperty(this, \"lineDash\", {\r\n      get: function() {\r\n        return this.ctx.lineDash;\r\n      },\r\n      set: function(value) {\r\n        this.ctx.lineDash = value;\r\n        setLineDash.call(this);\r\n      }\r\n    });\r\n\r\n    // Not HTML API\r\n    Object.defineProperty(this, \"ignoreClearRect\", {\r\n      get: function() {\r\n        return this.ctx.ignoreClearRect;\r\n      },\r\n      set: function(value) {\r\n        this.ctx.ignoreClearRect = Boolean(value);\r\n      }\r\n    });\r\n  };\r\n\r\n  /**\r\n   * Sets the line dash pattern used when stroking lines.\r\n   * @name setLineDash\r\n   * @function\r\n   * @description It uses an array of values that specify alternating lengths of lines and gaps which describe the pattern.\r\n   */\r\n  Context2D.prototype.setLineDash = function(dashArray) {\r\n    this.lineDash = dashArray;\r\n  };\r\n\r\n  /**\r\n   * gets the current line dash pattern.\r\n   * @name getLineDash\r\n   * @function\r\n   * @returns {Array} An Array of numbers that specify distances to alternately draw a line and a gap (in coordinate space units). If the number, when setting the elements, is odd, the elements of the array get copied and concatenated. For example, setting the line dash to [5, 15, 25] will result in getting back [5, 15, 25, 5, 15, 25].\r\n   */\r\n  Context2D.prototype.getLineDash = function() {\r\n    if (this.lineDash.length % 2) {\r\n      // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getLineDash#return_value\r\n      return this.lineDash.concat(this.lineDash);\r\n    } else {\r\n      // The copied value is returned to prevent contamination from outside.\r\n      return this.lineDash.slice();\r\n    }\r\n  };\r\n\r\n  Context2D.prototype.fill = function() {\r\n    pathPreProcess.call(this, \"fill\", false);\r\n  };\r\n\r\n  /**\r\n   * Actually draws the path you have defined\r\n   *\r\n   * @name stroke\r\n   * @function\r\n   * @description The stroke() method actually draws the path you have defined with all those moveTo() and lineTo() methods. The default color is black.\r\n   */\r\n  Context2D.prototype.stroke = function() {\r\n    pathPreProcess.call(this, \"stroke\", false);\r\n  };\r\n\r\n  /**\r\n   * Begins a path, or resets the current\r\n   *\r\n   * @name beginPath\r\n   * @function\r\n   * @description The beginPath() method begins a path, or resets the current path.\r\n   */\r\n  Context2D.prototype.beginPath = function() {\r\n    this.path = [\r\n      {\r\n        type: \"begin\"\r\n      }\r\n    ];\r\n  };\r\n\r\n  /**\r\n   * Moves the path to the specified point in the canvas, without creating a line\r\n   *\r\n   * @name moveTo\r\n   * @function\r\n   * @param x {Number} The x-coordinate of where to move the path to\r\n   * @param y {Number} The y-coordinate of where to move the path to\r\n   */\r\n  Context2D.prototype.moveTo = function(x, y) {\r\n    if (isNaN(x) || isNaN(y)) {\r\n      console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\r\n    }\r\n\r\n    var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n    this.path.push({\r\n      type: \"mt\",\r\n      x: pt.x,\r\n      y: pt.y\r\n    });\r\n    this.ctx.lastPoint = new Point(x, y);\r\n  };\r\n\r\n  /**\r\n   * Creates a path from the current point back to the starting point\r\n   *\r\n   * @name closePath\r\n   * @function\r\n   * @description The closePath() method creates a path from the current point back to the starting point.\r\n   */\r\n  Context2D.prototype.closePath = function() {\r\n    var pathBegin = new Point(0, 0);\r\n    var i = 0;\r\n    for (i = this.path.length - 1; i !== -1; i--) {\r\n      if (this.path[i].type === \"begin\") {\r\n        if (\r\n          typeof this.path[i + 1] === \"object\" &&\r\n          typeof this.path[i + 1].x === \"number\"\r\n        ) {\r\n          pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y);\r\n          break;\r\n        }\r\n      }\r\n    }\r\n    this.path.push({\r\n      type: \"close\"\r\n    });\r\n    this.ctx.lastPoint = new Point(pathBegin.x, pathBegin.y);\r\n  };\r\n\r\n  /**\r\n   * Adds a new point and creates a line to that point from the last specified point in the canvas\r\n   *\r\n   * @name lineTo\r\n   * @function\r\n   * @param x The x-coordinate of where to create the line to\r\n   * @param y The y-coordinate of where to create the line to\r\n   * @description The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line).\r\n   */\r\n  Context2D.prototype.lineTo = function(x, y) {\r\n    if (isNaN(x) || isNaN(y)) {\r\n      console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\r\n    }\r\n\r\n    var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n    this.path.push({\r\n      type: \"lt\",\r\n      x: pt.x,\r\n      y: pt.y\r\n    });\r\n    this.ctx.lastPoint = new Point(pt.x, pt.y);\r\n  };\r\n\r\n  /**\r\n   * Clips a region of any shape and size from the original canvas\r\n   *\r\n   * @name clip\r\n   * @function\r\n   * @description The clip() method clips a region of any shape and size from the original canvas.\r\n   */\r\n  Context2D.prototype.clip = function() {\r\n    this.ctx.clip_path = JSON.parse(JSON.stringify(this.path));\r\n    pathPreProcess.call(this, null, true);\r\n  };\r\n\r\n  /**\r\n   * Creates a cubic Bézier curve\r\n   *\r\n   * @name quadraticCurveTo\r\n   * @function\r\n   * @param cpx {Number} The x-coordinate of the Bézier control point\r\n   * @param cpy {Number} The y-coordinate of the Bézier control point\r\n   * @param x {Number} The x-coordinate of the ending point\r\n   * @param y {Number} The y-coordinate of the ending point\r\n   * @description The quadraticCurveTo() method adds a point to the current path by using the specified control points that represent a quadratic Bézier curve.<br /><br /> A quadratic Bézier curve requires two points. The first point is a control point that is used in the quadratic Bézier calculation and the second point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n   */\r\n  Context2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y) {\r\n    if (isNaN(x) || isNaN(y) || isNaN(cpx) || isNaN(cpy)) {\r\n      console.error(\r\n        \"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",\r\n        arguments\r\n      );\r\n      throw new Error(\r\n        \"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\"\r\n      );\r\n    }\r\n\r\n    var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n    var pt1 = this.ctx.transform.applyToPoint(new Point(cpx, cpy));\r\n\r\n    this.path.push({\r\n      type: \"qct\",\r\n      x1: pt1.x,\r\n      y1: pt1.y,\r\n      x: pt0.x,\r\n      y: pt0.y\r\n    });\r\n    this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n  };\r\n\r\n  /**\r\n   * Creates a cubic Bézier curve\r\n   *\r\n   * @name bezierCurveTo\r\n   * @function\r\n   * @param cp1x {Number} The x-coordinate of the first Bézier control point\r\n   * @param cp1y {Number} The y-coordinate of the first Bézier control point\r\n   * @param cp2x {Number} The x-coordinate of the second Bézier control point\r\n   * @param cp2y {Number} The y-coordinate of the second Bézier control point\r\n   * @param x {Number} The x-coordinate of the ending point\r\n   * @param y {Number} The y-coordinate of the ending point\r\n   * @description The bezierCurveTo() method adds a point to the current path by using the specified control points that represent a cubic Bézier curve. <br /><br />A cubic bezier curve requires three points. The first two points are control points that are used in the cubic Bézier calculation and the last point is the ending point for the curve.  The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n   */\r\n  Context2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n    if (\r\n      isNaN(x) ||\r\n      isNaN(y) ||\r\n      isNaN(cp1x) ||\r\n      isNaN(cp1y) ||\r\n      isNaN(cp2x) ||\r\n      isNaN(cp2y)\r\n    ) {\r\n      console.error(\r\n        \"jsPDF.context2d.bezierCurveTo: Invalid arguments\",\r\n        arguments\r\n      );\r\n      throw new Error(\r\n        \"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\"\r\n      );\r\n    }\r\n    var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n    var pt1 = this.ctx.transform.applyToPoint(new Point(cp1x, cp1y));\r\n    var pt2 = this.ctx.transform.applyToPoint(new Point(cp2x, cp2y));\r\n\r\n    this.path.push({\r\n      type: \"bct\",\r\n      x1: pt1.x,\r\n      y1: pt1.y,\r\n      x2: pt2.x,\r\n      y2: pt2.y,\r\n      x: pt0.x,\r\n      y: pt0.y\r\n    });\r\n    this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n  };\r\n\r\n  /**\r\n   * Creates an arc/curve (used to create circles, or parts of circles)\r\n   *\r\n   * @name arc\r\n   * @function\r\n   * @param x {Number} The x-coordinate of the center of the circle\r\n   * @param y {Number} The y-coordinate of the center of the circle\r\n   * @param radius {Number} The radius of the circle\r\n   * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle)\r\n   * @param endAngle {Number} The ending angle, in radians\r\n   * @param counterclockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise.\r\n   * @description The arc() method creates an arc/curve (used to create circles, or parts of circles).\r\n   */\r\n  Context2D.prototype.arc = function(\r\n    x,\r\n    y,\r\n    radius,\r\n    startAngle,\r\n    endAngle,\r\n    counterclockwise\r\n  ) {\r\n    if (\r\n      isNaN(x) ||\r\n      isNaN(y) ||\r\n      isNaN(radius) ||\r\n      isNaN(startAngle) ||\r\n      isNaN(endAngle)\r\n    ) {\r\n      console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\r\n    }\r\n    counterclockwise = Boolean(counterclockwise);\r\n\r\n    if (!this.ctx.transform.isIdentity) {\r\n      var xpt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n      x = xpt.x;\r\n      y = xpt.y;\r\n\r\n      var x_radPt = this.ctx.transform.applyToPoint(new Point(0, radius));\r\n      var x_radPt0 = this.ctx.transform.applyToPoint(new Point(0, 0));\r\n      radius = Math.sqrt(\r\n        Math.pow(x_radPt.x - x_radPt0.x, 2) +\r\n          Math.pow(x_radPt.y - x_radPt0.y, 2)\r\n      );\r\n    }\r\n    if (Math.abs(endAngle - startAngle) >= 2 * Math.PI) {\r\n      startAngle = 0;\r\n      endAngle = 2 * Math.PI;\r\n    }\r\n\r\n    this.path.push({\r\n      type: \"arc\",\r\n      x: x,\r\n      y: y,\r\n      radius: radius,\r\n      startAngle: startAngle,\r\n      endAngle: endAngle,\r\n      counterclockwise: counterclockwise\r\n    });\r\n    // this.ctx.lastPoint(new Point(pt.x,pt.y));\r\n  };\r\n\r\n  /**\r\n   * Creates an arc/curve between two tangents\r\n   *\r\n   * @name arcTo\r\n   * @function\r\n   * @param x1 {Number} The x-coordinate of the first tangent\r\n   * @param y1 {Number} The y-coordinate of the first tangent\r\n   * @param x2 {Number} The x-coordinate of the second tangent\r\n   * @param y2 {Number} The y-coordinate of the second tangent\r\n   * @param radius The radius of the arc\r\n   * @description The arcTo() method creates an arc/curve between two tangents on the canvas.\r\n   */\r\n  // eslint-disable-next-line no-unused-vars\r\n  Context2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {\r\n    throw new Error(\"arcTo not implemented.\");\r\n  };\r\n\r\n  /**\r\n   * Creates a rectangle\r\n   *\r\n   * @name rect\r\n   * @function\r\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n   * @param w {Number} The width of the rectangle, in pixels\r\n   * @param h {Number} The height of the rectangle, in pixels\r\n   * @description The rect() method creates a rectangle.\r\n   */\r\n  Context2D.prototype.rect = function(x, y, w, h) {\r\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n      console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\r\n    }\r\n    this.moveTo(x, y);\r\n    this.lineTo(x + w, y);\r\n    this.lineTo(x + w, y + h);\r\n    this.lineTo(x, y + h);\r\n    this.lineTo(x, y);\r\n    this.lineTo(x + w, y);\r\n    this.lineTo(x, y);\r\n  };\r\n\r\n  /**\r\n   * Draws a \"filled\" rectangle\r\n   *\r\n   * @name fillRect\r\n   * @function\r\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n   * @param w {Number} The width of the rectangle, in pixels\r\n   * @param h {Number} The height of the rectangle, in pixels\r\n   * @description The fillRect() method draws a \"filled\" rectangle. The default color of the fill is black.\r\n   */\r\n  Context2D.prototype.fillRect = function(x, y, w, h) {\r\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n      console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\r\n    }\r\n    if (isFillTransparent.call(this)) {\r\n      return;\r\n    }\r\n    var tmp = {};\r\n    if (this.lineCap !== \"butt\") {\r\n      tmp.lineCap = this.lineCap;\r\n      this.lineCap = \"butt\";\r\n    }\r\n    if (this.lineJoin !== \"miter\") {\r\n      tmp.lineJoin = this.lineJoin;\r\n      this.lineJoin = \"miter\";\r\n    }\r\n\r\n    this.beginPath();\r\n    this.rect(x, y, w, h);\r\n    this.fill();\r\n\r\n    if (tmp.hasOwnProperty(\"lineCap\")) {\r\n      this.lineCap = tmp.lineCap;\r\n    }\r\n    if (tmp.hasOwnProperty(\"lineJoin\")) {\r\n      this.lineJoin = tmp.lineJoin;\r\n    }\r\n  };\r\n\r\n  /**\r\n   *     Draws a rectangle (no fill)\r\n   *\r\n   * @name strokeRect\r\n   * @function\r\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n   * @param w {Number} The width of the rectangle, in pixels\r\n   * @param h {Number} The height of the rectangle, in pixels\r\n   * @description The strokeRect() method draws a rectangle (no fill). The default color of the stroke is black.\r\n   */\r\n  Context2D.prototype.strokeRect = function strokeRect(x, y, w, h) {\r\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n      console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\r\n    }\r\n    if (isStrokeTransparent.call(this)) {\r\n      return;\r\n    }\r\n    this.beginPath();\r\n    this.rect(x, y, w, h);\r\n    this.stroke();\r\n  };\r\n\r\n  /**\r\n   * Clears the specified pixels within a given rectangle\r\n   *\r\n   * @name clearRect\r\n   * @function\r\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n   * @param w {Number} The width of the rectangle to clear, in pixels\r\n   * @param h {Number} The height of the rectangle to clear, in pixels\r\n   * @description We cannot clear PDF commands that were already written to PDF, so we use white instead. <br />\r\n   * As a special case, read a special flag (ignoreClearRect) and do nothing if it is set.\r\n   * This results in all calls to clearRect() to do nothing, and keep the canvas transparent.\r\n   * This flag is stored in the save/restore context and is managed the same way as other drawing states.\r\n   *\r\n   */\r\n  Context2D.prototype.clearRect = function(x, y, w, h) {\r\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n      console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\r\n    }\r\n    if (this.ignoreClearRect) {\r\n      return;\r\n    }\r\n\r\n    this.fillStyle = \"#ffffff\";\r\n    this.fillRect(x, y, w, h);\r\n  };\r\n\r\n  /**\r\n   * Saves the state of the current context\r\n   *\r\n   * @name save\r\n   * @function\r\n   */\r\n  Context2D.prototype.save = function(doStackPush) {\r\n    doStackPush = typeof doStackPush === \"boolean\" ? doStackPush : true;\r\n    var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n    for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n      this.pdf.setPage(i + 1);\r\n      this.pdf.internal.out(\"q\");\r\n    }\r\n    this.pdf.setPage(tmpPageNumber);\r\n\r\n    if (doStackPush) {\r\n      this.ctx.fontSize = this.pdf.internal.getFontSize();\r\n      var ctx = new ContextLayer(this.ctx);\r\n      this.ctxStack.push(this.ctx);\r\n      this.ctx = ctx;\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Returns previously saved path state and attributes\r\n   *\r\n   * @name restore\r\n   * @function\r\n   */\r\n  Context2D.prototype.restore = function(doStackPop) {\r\n    doStackPop = typeof doStackPop === \"boolean\" ? doStackPop : true;\r\n    var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n    for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n      this.pdf.setPage(i + 1);\r\n      this.pdf.internal.out(\"Q\");\r\n    }\r\n    this.pdf.setPage(tmpPageNumber);\r\n\r\n    if (doStackPop && this.ctxStack.length !== 0) {\r\n      this.ctx = this.ctxStack.pop();\r\n      this.fillStyle = this.ctx.fillStyle;\r\n      this.strokeStyle = this.ctx.strokeStyle;\r\n      this.font = this.ctx.font;\r\n      this.lineCap = this.ctx.lineCap;\r\n      this.lineWidth = this.ctx.lineWidth;\r\n      this.lineJoin = this.ctx.lineJoin;\r\n      this.lineDash = this.ctx.lineDash;\r\n      this.lineDashOffset = this.ctx.lineDashOffset;\r\n    }\r\n  };\r\n\r\n  /**\r\n   * @name toDataURL\r\n   * @function\r\n   */\r\n  Context2D.prototype.toDataURL = function() {\r\n    throw new Error(\"toDataUrl not implemented.\");\r\n  };\r\n\r\n  //helper functions\r\n\r\n  /**\r\n   * Get the decimal values of r, g, b and a\r\n   *\r\n   * @name getRGBA\r\n   * @function\r\n   * @private\r\n   * @ignore\r\n   */\r\n  var getRGBA = function(style) {\r\n    var rxRgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\r\n    var rxRgba = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\r\n    var rxTransparent = /transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/;\r\n\r\n    var r, g, b, a;\r\n\r\n    if (style.isCanvasGradient === true) {\r\n      style = style.getColor();\r\n    }\r\n\r\n    if (!style) {\r\n      return { r: 0, g: 0, b: 0, a: 0, style: style };\r\n    }\r\n\r\n    if (rxTransparent.test(style)) {\r\n      r = 0;\r\n      g = 0;\r\n      b = 0;\r\n      a = 0;\r\n    } else {\r\n      var matches = rxRgb.exec(style);\r\n      if (matches !== null) {\r\n        r = parseInt(matches[1]);\r\n        g = parseInt(matches[2]);\r\n        b = parseInt(matches[3]);\r\n        a = 1;\r\n      } else {\r\n        matches = rxRgba.exec(style);\r\n        if (matches !== null) {\r\n          r = parseInt(matches[1]);\r\n          g = parseInt(matches[2]);\r\n          b = parseInt(matches[3]);\r\n          a = parseFloat(matches[4]);\r\n        } else {\r\n          a = 1;\r\n\r\n          if (typeof style === \"string\" && style.charAt(0) !== \"#\") {\r\n            var rgbColor = new RGBColor(style);\r\n            if (rgbColor.ok) {\r\n              style = rgbColor.toHex();\r\n            } else {\r\n              style = \"#000000\";\r\n            }\r\n          }\r\n\r\n          if (style.length === 4) {\r\n            r = style.substring(1, 2);\r\n            r += r;\r\n            g = style.substring(2, 3);\r\n            g += g;\r\n            b = style.substring(3, 4);\r\n            b += b;\r\n          } else {\r\n            r = style.substring(1, 3);\r\n            g = style.substring(3, 5);\r\n            b = style.substring(5, 7);\r\n          }\r\n          r = parseInt(r, 16);\r\n          g = parseInt(g, 16);\r\n          b = parseInt(b, 16);\r\n        }\r\n      }\r\n    }\r\n    return { r: r, g: g, b: b, a: a, style: style };\r\n  };\r\n\r\n  /**\r\n   * @name isFillTransparent\r\n   * @function\r\n   * @private\r\n   * @ignore\r\n   * @returns {Boolean}\r\n   */\r\n  var isFillTransparent = function() {\r\n    return this.ctx.isFillTransparent || this.globalAlpha == 0;\r\n  };\r\n\r\n  /**\r\n   * @name isStrokeTransparent\r\n   * @function\r\n   * @private\r\n   * @ignore\r\n   * @returns {Boolean}\r\n   */\r\n  var isStrokeTransparent = function() {\r\n    return Boolean(this.ctx.isStrokeTransparent || this.globalAlpha == 0);\r\n  };\r\n\r\n  /**\r\n   * Draws \"filled\" text on the canvas\r\n   *\r\n   * @name fillText\r\n   * @function\r\n   * @param text {String} Specifies the text that will be written on the canvas\r\n   * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n   * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n   * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n   * @description The fillText() method draws filled text on the canvas. The default color of the text is black.\r\n   */\r\n  Context2D.prototype.fillText = function(text, x, y, maxWidth) {\r\n    if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n      console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\r\n    }\r\n    maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n    if (isFillTransparent.call(this)) {\r\n      return;\r\n    }\r\n\r\n    var degs = rad2deg(this.ctx.transform.rotation);\r\n\r\n    // We only use X axis as scale hint\r\n    var scale = this.ctx.transform.scaleX;\r\n\r\n    putText.call(this, {\r\n      text: text,\r\n      x: x,\r\n      y: y,\r\n      scale: scale,\r\n      angle: degs,\r\n      align: this.textAlign,\r\n      maxWidth: maxWidth\r\n    });\r\n  };\r\n\r\n  /**\r\n   * Draws text on the canvas (no fill)\r\n   *\r\n   * @name strokeText\r\n   * @function\r\n   * @param text {String} Specifies the text that will be written on the canvas\r\n   * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n   * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n   * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n   * @description The strokeText() method draws text (with no fill) on the canvas. The default color of the text is black.\r\n   */\r\n  Context2D.prototype.strokeText = function(text, x, y, maxWidth) {\r\n    if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n      console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\r\n    }\r\n    if (isStrokeTransparent.call(this)) {\r\n      return;\r\n    }\r\n\r\n    maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n\r\n    var degs = rad2deg(this.ctx.transform.rotation);\r\n    var scale = this.ctx.transform.scaleX;\r\n\r\n    putText.call(this, {\r\n      text: text,\r\n      x: x,\r\n      y: y,\r\n      scale: scale,\r\n      renderingMode: \"stroke\",\r\n      angle: degs,\r\n      align: this.textAlign,\r\n      maxWidth: maxWidth\r\n    });\r\n  };\r\n\r\n  /**\r\n   * Returns an object that contains the width of the specified text\r\n   *\r\n   * @name measureText\r\n   * @function\r\n   * @param text {String} The text to be measured\r\n   * @description The measureText() method returns an object that contains the width of the specified text, in pixels.\r\n   * @returns {Number}\r\n   */\r\n  Context2D.prototype.measureText = function(text) {\r\n    if (typeof text !== \"string\") {\r\n      console.error(\r\n        \"jsPDF.context2d.measureText: Invalid arguments\",\r\n        arguments\r\n      );\r\n      throw new Error(\r\n        \"Invalid arguments passed to jsPDF.context2d.measureText\"\r\n      );\r\n    }\r\n    var pdf = this.pdf;\r\n    var k = this.pdf.internal.scaleFactor;\r\n\r\n    var fontSize = pdf.internal.getFontSize();\r\n    var txtWidth =\r\n      (pdf.getStringUnitWidth(text) * fontSize) / pdf.internal.scaleFactor;\r\n    txtWidth *= Math.round(((k * 96) / 72) * 10000) / 10000;\r\n\r\n    var TextMetrics = function(options) {\r\n      options = options || {};\r\n      var _width = options.width || 0;\r\n      Object.defineProperty(this, \"width\", {\r\n        get: function() {\r\n          return _width;\r\n        }\r\n      });\r\n      return this;\r\n    };\r\n    return new TextMetrics({ width: txtWidth });\r\n  };\r\n\r\n  //Transformations\r\n\r\n  /**\r\n   * Scales the current drawing bigger or smaller\r\n   *\r\n   * @name scale\r\n   * @function\r\n   * @param scalewidth {Number} Scales the width of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n   * @param scaleheight {Number} Scales the height of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n   * @description The scale() method scales the current drawing, bigger or smaller.\r\n   */\r\n  Context2D.prototype.scale = function(scalewidth, scaleheight) {\r\n    if (isNaN(scalewidth) || isNaN(scaleheight)) {\r\n      console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\r\n    }\r\n    var matrix = new Matrix(scalewidth, 0.0, 0.0, scaleheight, 0.0, 0.0);\r\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n  };\r\n\r\n  /**\r\n   * Rotates the current drawing\r\n   *\r\n   * @name rotate\r\n   * @function\r\n   * @param angle {Number} The rotation angle, in radians.\r\n   * @description To calculate from degrees to radians: degrees*Math.PI/180. <br />\r\n   * Example: to rotate 5 degrees, specify the following: 5*Math.PI/180\r\n   */\r\n  Context2D.prototype.rotate = function(angle) {\r\n    if (isNaN(angle)) {\r\n      console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\r\n    }\r\n    var matrix = new Matrix(\r\n      Math.cos(angle),\r\n      Math.sin(angle),\r\n      -Math.sin(angle),\r\n      Math.cos(angle),\r\n      0.0,\r\n      0.0\r\n    );\r\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n  };\r\n\r\n  /**\r\n   * Remaps the (0,0) position on the canvas\r\n   *\r\n   * @name translate\r\n   * @function\r\n   * @param x {Number} The value to add to horizontal (x) coordinates\r\n   * @param y {Number} The value to add to vertical (y) coordinates\r\n   * @description The translate() method remaps the (0,0) position on the canvas.\r\n   */\r\n  Context2D.prototype.translate = function(x, y) {\r\n    if (isNaN(x) || isNaN(y)) {\r\n      console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\r\n    }\r\n    var matrix = new Matrix(1.0, 0.0, 0.0, 1.0, x, y);\r\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n  };\r\n\r\n  /**\r\n   * Replaces the current transformation matrix for the drawing\r\n   *\r\n   * @name transform\r\n   * @function\r\n   * @param a {Number} Horizontal scaling\r\n   * @param b {Number} Horizontal skewing\r\n   * @param c {Number} Vertical skewing\r\n   * @param d {Number} Vertical scaling\r\n   * @param e {Number} Horizontal moving\r\n   * @param f {Number} Vertical moving\r\n   * @description Each object on the canvas has a current transformation matrix.<br /><br />The transform() method replaces the current transformation matrix. It multiplies the current transformation matrix with the matrix described by:<br /><br /><br /><br />a    c    e<br /><br />b    d    f<br /><br />0    0    1<br /><br />In other words, the transform() method lets you scale, rotate, move, and skew the current context.\r\n   */\r\n  Context2D.prototype.transform = function(a, b, c, d, e, f) {\r\n    if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d) || isNaN(e) || isNaN(f)) {\r\n      console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments);\r\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\r\n    }\r\n    var matrix = new Matrix(a, b, c, d, e, f);\r\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n  };\r\n\r\n  /**\r\n   * Resets the current transform to the identity matrix. Then runs transform()\r\n   *\r\n   * @name setTransform\r\n   * @function\r\n   * @param a {Number} Horizontal scaling\r\n   * @param b {Number} Horizontal skewing\r\n   * @param c {Number} Vertical skewing\r\n   * @param d {Number} Vertical scaling\r\n   * @param e {Number} Horizontal moving\r\n   * @param f {Number} Vertical moving\r\n   * @description Each object on the canvas has a current transformation matrix. <br /><br />The setTransform() method resets the current transform to the identity matrix, and then runs transform() with the same arguments.<br /><br />In other words, the setTransform() method lets you scale, rotate, move, and skew the current context.\r\n   */\r\n  Context2D.prototype.setTransform = function(a, b, c, d, e, f) {\r\n    a = isNaN(a) ? 1 : a;\r\n    b = isNaN(b) ? 0 : b;\r\n    c = isNaN(c) ? 0 : c;\r\n    d = isNaN(d) ? 1 : d;\r\n    e = isNaN(e) ? 0 : e;\r\n    f = isNaN(f) ? 0 : f;\r\n    this.ctx.transform = new Matrix(a, b, c, d, e, f);\r\n  };\r\n\r\n  /**\r\n   * Should only be used if pageWrapYEnabled is true\r\n   *\r\n   * @name setPageByYPosition\r\n   * @function\r\n   * @private\r\n   * @ignore\r\n   * @returns One-based Page Number\r\n   */\r\n  var setPageByYPosition = function(y) {\r\n    if (this.pageWrapYEnabled) {\r\n      this.lastBreak = 0;\r\n      var manualBreaks = 0;\r\n      var autoBreaks = 0;\r\n      for (var i = 0; i < this.pageBreaks.length; i++) {\r\n        if (y >= this.pageBreaks[i]) {\r\n          manualBreaks++;\r\n          if (this.lastBreak === 0) {\r\n            autoBreaks++;\r\n          }\r\n          var spaceBetweenLastBreak = this.pageBreaks[i] - this.lastBreak;\r\n          this.lastBreak = this.pageBreaks[i];\r\n          var pagesSinceLastBreak = Math.floor(\r\n            spaceBetweenLastBreak / this.pageWrapY\r\n          );\r\n          autoBreaks += pagesSinceLastBreak;\r\n        }\r\n      }\r\n      if (this.lastBreak === 0) {\r\n        var pagesSinceLastBreak = Math.floor(y / this.pageWrapY) + 1;\r\n        autoBreaks += pagesSinceLastBreak;\r\n      }\r\n      return autoBreaks + manualBreaks;\r\n    } else {\r\n      return this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n    }\r\n  };\r\n\r\n  var hasMargins = function() {\r\n    return (\r\n      this.margin[0] > 0 ||\r\n      this.margin[1] > 0 ||\r\n      this.margin[2] > 0 ||\r\n      this.margin[3] > 0\r\n    );\r\n  };\r\n\r\n  /**\r\n   * Draws an image, canvas, or video onto the canvas\r\n   *\r\n   * @function\r\n   * @param img {} Specifies the image, canvas, or video element to use\r\n   * @param sx {Number} Optional. The x coordinate where to start clipping\r\n   * @param sy {Number} Optional. The y coordinate where to start clipping\r\n   * @param swidth {Number} Optional. The width of the clipped image\r\n   * @param sheight {Number} Optional. The height of the clipped image\r\n   * @param x {Number} The x coordinate where to place the image on the canvas\r\n   * @param y {Number} The y coordinate where to place the image on the canvas\r\n   * @param width {Number} Optional. The width of the image to use (stretch or reduce the image)\r\n   * @param height {Number} Optional. The height of the image to use (stretch or reduce the image)\r\n   */\r\n  Context2D.prototype.drawImage = function(\r\n    img,\r\n    sx,\r\n    sy,\r\n    swidth,\r\n    sheight,\r\n    x,\r\n    y,\r\n    width,\r\n    height\r\n  ) {\r\n    var imageProperties = this.pdf.getImageProperties(img);\r\n    var factorX = 1;\r\n    var factorY = 1;\r\n    var isClip;\r\n\r\n    var clipFactorX = 1;\r\n    var clipFactorY = 1;\r\n\r\n    if (typeof swidth !== \"undefined\" && typeof width !== \"undefined\") {\r\n      isClip = true;\r\n      clipFactorX = width / swidth;\r\n      clipFactorY = height / sheight;\r\n      factorX = ((imageProperties.width / swidth) * width) / swidth;\r\n      factorY = ((imageProperties.height / sheight) * height) / sheight;\r\n    }\r\n\r\n    //is sx and sy are set and x and y not, set x and y with values of sx and sy\r\n    if (typeof x === \"undefined\") {\r\n      x = sx;\r\n      y = sy;\r\n      sx = 0;\r\n      sy = 0;\r\n    }\r\n\r\n    if (typeof swidth !== \"undefined\" && typeof width === \"undefined\") {\r\n      width = swidth;\r\n      height = sheight;\r\n    }\r\n    if (typeof swidth === \"undefined\" && typeof width === \"undefined\") {\r\n      width = imageProperties.width;\r\n      height = imageProperties.height;\r\n    }\r\n\r\n    var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n    var angle = rad2deg(decomposedTransformationMatrix.rotate.shx);\r\n    var matrix = new Matrix();\r\n    matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n    matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n    matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n    var xRect = matrix.applyToRectangle(\r\n      new Rectangle(\r\n        x - sx * clipFactorX,\r\n        y - sy * clipFactorY,\r\n        swidth * factorX,\r\n        sheight * factorY\r\n      )\r\n    );\r\n    var pageArray = getPagesByPath.call(this, xRect);\r\n    var pages = [];\r\n    for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n      if (pages.indexOf(pageArray[ii]) === -1) {\r\n        pages.push(pageArray[ii]);\r\n      }\r\n    }\r\n\r\n    sortPages(pages);\r\n\r\n    var clipPath;\r\n    if (this.autoPaging) {\r\n      var min = pages[0];\r\n      var max = pages[pages.length - 1];\r\n      for (var i = min; i < max + 1; i++) {\r\n        this.pdf.setPage(i);\r\n\r\n        var pageWidthMinusMargins =\r\n          this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n        var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n        var firstPageHeight =\r\n          this.pdf.internal.pageSize.height -\r\n          this.posY -\r\n          this.margin[0] -\r\n          this.margin[2];\r\n        var pageHeightMinusMargins =\r\n          this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n        var previousPageHeightSum =\r\n          i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n        if (this.ctx.clip_path.length !== 0) {\r\n          var tmpPaths = this.path;\r\n          clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n          this.path = pathPositionRedo(\r\n            clipPath,\r\n            this.posX + this.margin[3],\r\n            -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n          );\r\n          drawPaths.call(this, \"fill\", true);\r\n          this.path = tmpPaths;\r\n        }\r\n        var tmpRect = JSON.parse(JSON.stringify(xRect));\r\n        tmpRect = pathPositionRedo(\r\n          [tmpRect],\r\n          this.posX + this.margin[3],\r\n          -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n        )[0];\r\n\r\n        const needsClipping = (i > min || i < max) && hasMargins.call(this);\r\n\r\n        if (needsClipping) {\r\n          this.pdf.saveGraphicsState();\r\n          this.pdf\r\n            .rect(\r\n              this.margin[3],\r\n              this.margin[0],\r\n              pageWidthMinusMargins,\r\n              pageHeightMinusMargins,\r\n              null\r\n            )\r\n            .clip()\r\n            .discardPath();\r\n        }\r\n        this.pdf.addImage(\r\n          img,\r\n          \"JPEG\",\r\n          tmpRect.x,\r\n          tmpRect.y,\r\n          tmpRect.w,\r\n          tmpRect.h,\r\n          null,\r\n          null,\r\n          angle\r\n        );\r\n        if (needsClipping) {\r\n          this.pdf.restoreGraphicsState();\r\n        }\r\n      }\r\n    } else {\r\n      this.pdf.addImage(\r\n        img,\r\n        \"JPEG\",\r\n        xRect.x,\r\n        xRect.y,\r\n        xRect.w,\r\n        xRect.h,\r\n        null,\r\n        null,\r\n        angle\r\n      );\r\n    }\r\n  };\r\n\r\n  var getPagesByPath = function(path, pageWrapX, pageWrapY) {\r\n    var result = [];\r\n    pageWrapX = pageWrapX || this.pdf.internal.pageSize.width;\r\n    pageWrapY =\r\n      pageWrapY ||\r\n      this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n    var yOffset = this.posY + this.ctx.prevPageLastElemOffset;\r\n\r\n    switch (path.type) {\r\n      default:\r\n      case \"mt\":\r\n      case \"lt\":\r\n        result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n        break;\r\n      case \"arc\":\r\n        result.push(\r\n          Math.floor((path.y + yOffset - path.radius) / pageWrapY) + 1\r\n        );\r\n        result.push(\r\n          Math.floor((path.y + yOffset + path.radius) / pageWrapY) + 1\r\n        );\r\n        break;\r\n      case \"qct\":\r\n        var rectOfQuadraticCurve = getQuadraticCurveBoundary(\r\n          this.ctx.lastPoint.x,\r\n          this.ctx.lastPoint.y,\r\n          path.x1,\r\n          path.y1,\r\n          path.x,\r\n          path.y\r\n        );\r\n        result.push(\r\n          Math.floor((rectOfQuadraticCurve.y + yOffset) / pageWrapY) + 1\r\n        );\r\n        result.push(\r\n          Math.floor(\r\n            (rectOfQuadraticCurve.y + rectOfQuadraticCurve.h + yOffset) /\r\n              pageWrapY\r\n          ) + 1\r\n        );\r\n        break;\r\n      case \"bct\":\r\n        var rectOfBezierCurve = getBezierCurveBoundary(\r\n          this.ctx.lastPoint.x,\r\n          this.ctx.lastPoint.y,\r\n          path.x1,\r\n          path.y1,\r\n          path.x2,\r\n          path.y2,\r\n          path.x,\r\n          path.y\r\n        );\r\n        result.push(\r\n          Math.floor((rectOfBezierCurve.y + yOffset) / pageWrapY) + 1\r\n        );\r\n        result.push(\r\n          Math.floor(\r\n            (rectOfBezierCurve.y + rectOfBezierCurve.h + yOffset) / pageWrapY\r\n          ) + 1\r\n        );\r\n        break;\r\n      case \"rect\":\r\n        result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n        result.push(Math.floor((path.y + path.h + yOffset) / pageWrapY) + 1);\r\n    }\r\n\r\n    for (var i = 0; i < result.length; i += 1) {\r\n      while (this.pdf.internal.getNumberOfPages() < result[i]) {\r\n        addPage.call(this);\r\n      }\r\n    }\r\n    return result;\r\n  };\r\n\r\n  var addPage = function() {\r\n    var fillStyle = this.fillStyle;\r\n    var strokeStyle = this.strokeStyle;\r\n    var font = this.font;\r\n    var lineCap = this.lineCap;\r\n    var lineWidth = this.lineWidth;\r\n    var lineJoin = this.lineJoin;\r\n    this.pdf.addPage();\r\n    this.fillStyle = fillStyle;\r\n    this.strokeStyle = strokeStyle;\r\n    this.font = font;\r\n    this.lineCap = lineCap;\r\n    this.lineWidth = lineWidth;\r\n    this.lineJoin = lineJoin;\r\n  };\r\n\r\n  var pathPositionRedo = function(paths, x, y) {\r\n    for (var i = 0; i < paths.length; i++) {\r\n      switch (paths[i].type) {\r\n        case \"bct\":\r\n          paths[i].x2 += x;\r\n          paths[i].y2 += y;\r\n        case \"qct\":\r\n          paths[i].x1 += x;\r\n          paths[i].y1 += y;\r\n        case \"mt\":\r\n        case \"lt\":\r\n        case \"arc\":\r\n        default:\r\n          paths[i].x += x;\r\n          paths[i].y += y;\r\n      }\r\n    }\r\n    return paths;\r\n  };\r\n\r\n  var sortPages = function(pages) {\r\n    return pages.sort(function(a, b) {\r\n      return a - b;\r\n    });\r\n  };\r\n\r\n  var pathPreProcess = function(rule, isClip) {\r\n    var fillStyle = this.fillStyle;\r\n    var strokeStyle = this.strokeStyle;\r\n    var lineCap = this.lineCap;\r\n    var oldLineWidth = this.lineWidth;\r\n    var lineWidth = Math.abs(oldLineWidth * this.ctx.transform.scaleX);\r\n    var lineJoin = this.lineJoin;\r\n\r\n    var origPath = JSON.parse(JSON.stringify(this.path));\r\n    var xPath = JSON.parse(JSON.stringify(this.path));\r\n    var clipPath;\r\n    var tmpPath;\r\n    var pages = [];\r\n\r\n    for (var i = 0; i < xPath.length; i++) {\r\n      if (typeof xPath[i].x !== \"undefined\") {\r\n        var page = getPagesByPath.call(this, xPath[i]);\r\n\r\n        for (var ii = 0; ii < page.length; ii += 1) {\r\n          if (pages.indexOf(page[ii]) === -1) {\r\n            pages.push(page[ii]);\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    for (var j = 0; j < pages.length; j++) {\r\n      while (this.pdf.internal.getNumberOfPages() < pages[j]) {\r\n        addPage.call(this);\r\n      }\r\n    }\r\n    sortPages(pages);\r\n\r\n    if (this.autoPaging) {\r\n      var min = pages[0];\r\n      var max = pages[pages.length - 1];\r\n      for (var k = min; k < max + 1; k++) {\r\n        this.pdf.setPage(k);\r\n\r\n        this.fillStyle = fillStyle;\r\n        this.strokeStyle = strokeStyle;\r\n        this.lineCap = lineCap;\r\n        this.lineWidth = lineWidth;\r\n        this.lineJoin = lineJoin;\r\n\r\n        var pageWidthMinusMargins =\r\n          this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n        var topMargin = k === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n        var firstPageHeight =\r\n          this.pdf.internal.pageSize.height -\r\n          this.posY -\r\n          this.margin[0] -\r\n          this.margin[2];\r\n        var pageHeightMinusMargins =\r\n          this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n        var previousPageHeightSum =\r\n          k === 1 ? 0 : firstPageHeight + (k - 2) * pageHeightMinusMargins;\r\n\r\n        if (this.ctx.clip_path.length !== 0) {\r\n          var tmpPaths = this.path;\r\n          clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n          this.path = pathPositionRedo(\r\n            clipPath,\r\n            this.posX + this.margin[3],\r\n            -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n          );\r\n          drawPaths.call(this, rule, true);\r\n          this.path = tmpPaths;\r\n        }\r\n        tmpPath = JSON.parse(JSON.stringify(origPath));\r\n        this.path = pathPositionRedo(\r\n          tmpPath,\r\n          this.posX + this.margin[3],\r\n          -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n        );\r\n        if (isClip === false || k === 0) {\r\n          const needsClipping = (k > min || k < max) && hasMargins.call(this);\r\n          if (needsClipping) {\r\n            this.pdf.saveGraphicsState();\r\n            this.pdf\r\n              .rect(\r\n                this.margin[3],\r\n                this.margin[0],\r\n                pageWidthMinusMargins,\r\n                pageHeightMinusMargins,\r\n                null\r\n              )\r\n              .clip()\r\n              .discardPath();\r\n          }\r\n          drawPaths.call(this, rule, isClip);\r\n          if (needsClipping) {\r\n            this.pdf.restoreGraphicsState();\r\n          }\r\n        }\r\n        this.lineWidth = oldLineWidth;\r\n      }\r\n    } else {\r\n      this.lineWidth = lineWidth;\r\n      drawPaths.call(this, rule, isClip);\r\n      this.lineWidth = oldLineWidth;\r\n    }\r\n    this.path = origPath;\r\n  };\r\n\r\n  /**\r\n   * Processes the paths\r\n   *\r\n   * @function\r\n   * @param rule {String}\r\n   * @param isClip {Boolean}\r\n   * @private\r\n   * @ignore\r\n   */\r\n  var drawPaths = function(rule, isClip) {\r\n    if (rule === \"stroke\" && !isClip && isStrokeTransparent.call(this)) {\r\n      return;\r\n    }\r\n\r\n    if (rule !== \"stroke\" && !isClip && isFillTransparent.call(this)) {\r\n      return;\r\n    }\r\n\r\n    var moves = [];\r\n\r\n    //var alpha = (this.ctx.fillOpacity < 1) ? this.ctx.fillOpacity : this.ctx.globalAlpha;\r\n    var delta;\r\n    var xPath = this.path;\r\n    for (var i = 0; i < xPath.length; i++) {\r\n      var pt = xPath[i];\r\n\r\n      switch (pt.type) {\r\n        case \"begin\":\r\n          moves.push({\r\n            begin: true\r\n          });\r\n          break;\r\n\r\n        case \"close\":\r\n          moves.push({\r\n            close: true\r\n          });\r\n          break;\r\n\r\n        case \"mt\":\r\n          moves.push({\r\n            start: pt,\r\n            deltas: [],\r\n            abs: []\r\n          });\r\n          break;\r\n\r\n        case \"lt\":\r\n          var iii = moves.length;\r\n          if (xPath[i - 1] && !isNaN(xPath[i - 1].x)) {\r\n            delta = [pt.x - xPath[i - 1].x, pt.y - xPath[i - 1].y];\r\n            if (iii > 0) {\r\n              for (iii; iii >= 0; iii--) {\r\n                if (\r\n                  moves[iii - 1].close !== true &&\r\n                  moves[iii - 1].begin !== true\r\n                ) {\r\n                  moves[iii - 1].deltas.push(delta);\r\n                  moves[iii - 1].abs.push(pt);\r\n                  break;\r\n                }\r\n              }\r\n            }\r\n          }\r\n          break;\r\n\r\n        case \"bct\":\r\n          delta = [\r\n            pt.x1 - xPath[i - 1].x,\r\n            pt.y1 - xPath[i - 1].y,\r\n            pt.x2 - xPath[i - 1].x,\r\n            pt.y2 - xPath[i - 1].y,\r\n            pt.x - xPath[i - 1].x,\r\n            pt.y - xPath[i - 1].y\r\n          ];\r\n          moves[moves.length - 1].deltas.push(delta);\r\n          break;\r\n\r\n        case \"qct\":\r\n          var x1 = xPath[i - 1].x + (2.0 / 3.0) * (pt.x1 - xPath[i - 1].x);\r\n          var y1 = xPath[i - 1].y + (2.0 / 3.0) * (pt.y1 - xPath[i - 1].y);\r\n          var x2 = pt.x + (2.0 / 3.0) * (pt.x1 - pt.x);\r\n          var y2 = pt.y + (2.0 / 3.0) * (pt.y1 - pt.y);\r\n          var x3 = pt.x;\r\n          var y3 = pt.y;\r\n          delta = [\r\n            x1 - xPath[i - 1].x,\r\n            y1 - xPath[i - 1].y,\r\n            x2 - xPath[i - 1].x,\r\n            y2 - xPath[i - 1].y,\r\n            x3 - xPath[i - 1].x,\r\n            y3 - xPath[i - 1].y\r\n          ];\r\n          moves[moves.length - 1].deltas.push(delta);\r\n          break;\r\n\r\n        case \"arc\":\r\n          moves.push({\r\n            deltas: [],\r\n            abs: [],\r\n            arc: true\r\n          });\r\n\r\n          if (Array.isArray(moves[moves.length - 1].abs)) {\r\n            moves[moves.length - 1].abs.push(pt);\r\n          }\r\n          break;\r\n      }\r\n    }\r\n    var style;\r\n    if (!isClip) {\r\n      if (rule === \"stroke\") {\r\n        style = \"stroke\";\r\n      } else {\r\n        style = \"fill\";\r\n      }\r\n    } else {\r\n      style = null;\r\n    }\r\n\r\n    var began = false;\r\n    for (var k = 0; k < moves.length; k++) {\r\n      if (moves[k].arc) {\r\n        var arcs = moves[k].abs;\r\n\r\n        for (var ii = 0; ii < arcs.length; ii++) {\r\n          var arc = arcs[ii];\r\n\r\n          if (arc.type === \"arc\") {\r\n            drawArc.call(\r\n              this,\r\n              arc.x,\r\n              arc.y,\r\n              arc.radius,\r\n              arc.startAngle,\r\n              arc.endAngle,\r\n              arc.counterclockwise,\r\n              undefined,\r\n              isClip,\r\n              !began\r\n            );\r\n          } else {\r\n            drawLine.call(this, arc.x, arc.y);\r\n          }\r\n          began = true;\r\n        }\r\n      } else if (moves[k].close === true) {\r\n        this.pdf.internal.out(\"h\");\r\n        began = false;\r\n      } else if (moves[k].begin !== true) {\r\n        var x = moves[k].start.x;\r\n        var y = moves[k].start.y;\r\n        drawLines.call(this, moves[k].deltas, x, y);\r\n        began = true;\r\n      }\r\n    }\r\n\r\n    if (style) {\r\n      putStyle.call(this, style);\r\n    }\r\n    if (isClip) {\r\n      doClip.call(this);\r\n    }\r\n  };\r\n\r\n  var getBaseline = function(y) {\r\n    var height =\r\n      this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n    var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n    switch (this.ctx.textBaseline) {\r\n      case \"bottom\":\r\n        return y - descent;\r\n      case \"top\":\r\n        return y + height - descent;\r\n      case \"hanging\":\r\n        return y + height - 2 * descent;\r\n      case \"middle\":\r\n        return y + height / 2 - descent;\r\n      case \"ideographic\":\r\n        // TODO not implemented\r\n        return y;\r\n      case \"alphabetic\":\r\n      default:\r\n        return y;\r\n    }\r\n  };\r\n\r\n  var getTextBottom = function(yBaseLine) {\r\n    var height =\r\n      this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n    var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n    return yBaseLine + descent;\r\n  };\r\n\r\n  Context2D.prototype.createLinearGradient = function createLinearGradient() {\r\n    var canvasGradient = function canvasGradient() {};\r\n\r\n    canvasGradient.colorStops = [];\r\n    canvasGradient.addColorStop = function(offset, color) {\r\n      this.colorStops.push([offset, color]);\r\n    };\r\n\r\n    canvasGradient.getColor = function() {\r\n      if (this.colorStops.length === 0) {\r\n        return \"#000000\";\r\n      }\r\n\r\n      return this.colorStops[0][1];\r\n    };\r\n\r\n    canvasGradient.isCanvasGradient = true;\r\n    return canvasGradient;\r\n  };\r\n  Context2D.prototype.createPattern = function createPattern() {\r\n    return this.createLinearGradient();\r\n  };\r\n  Context2D.prototype.createRadialGradient = function createRadialGradient() {\r\n    return this.createLinearGradient();\r\n  };\r\n\r\n  /**\r\n   *\r\n   * @param x Edge point X\r\n   * @param y Edge point Y\r\n   * @param r Radius\r\n   * @param a1 start angle\r\n   * @param a2 end angle\r\n   * @param counterclockwise\r\n   * @param style\r\n   * @param isClip\r\n   */\r\n  var drawArc = function(\r\n    x,\r\n    y,\r\n    r,\r\n    a1,\r\n    a2,\r\n    counterclockwise,\r\n    style,\r\n    isClip,\r\n    includeMove\r\n  ) {\r\n    // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html\r\n    var curves = createArc.call(this, r, a1, a2, counterclockwise);\r\n\r\n    for (var i = 0; i < curves.length; i++) {\r\n      var curve = curves[i];\r\n      if (i === 0) {\r\n        if (includeMove) {\r\n          doMove.call(this, curve.x1 + x, curve.y1 + y);\r\n        } else {\r\n          drawLine.call(this, curve.x1 + x, curve.y1 + y);\r\n        }\r\n      }\r\n      drawCurve.call(\r\n        this,\r\n        x,\r\n        y,\r\n        curve.x2,\r\n        curve.y2,\r\n        curve.x3,\r\n        curve.y3,\r\n        curve.x4,\r\n        curve.y4\r\n      );\r\n    }\r\n\r\n    if (!isClip) {\r\n      putStyle.call(this, style);\r\n    } else {\r\n      doClip.call(this);\r\n    }\r\n  };\r\n\r\n  var putStyle = function(style) {\r\n    switch (style) {\r\n      case \"stroke\":\r\n        this.pdf.internal.out(\"S\");\r\n        break;\r\n      case \"fill\":\r\n        this.pdf.internal.out(\"f\");\r\n        break;\r\n    }\r\n  };\r\n\r\n  var doClip = function() {\r\n    this.pdf.clip();\r\n    this.pdf.discardPath();\r\n  };\r\n\r\n  var doMove = function(x, y) {\r\n    this.pdf.internal.out(\r\n      getHorizontalCoordinateString(x) +\r\n        \" \" +\r\n        getVerticalCoordinateString(y) +\r\n        \" m\"\r\n    );\r\n  };\r\n\r\n  var putText = function(options) {\r\n    var textAlign;\r\n    switch (options.align) {\r\n      case \"right\":\r\n      case \"end\":\r\n        textAlign = \"right\";\r\n        break;\r\n      case \"center\":\r\n        textAlign = \"center\";\r\n        break;\r\n      case \"left\":\r\n      case \"start\":\r\n      default:\r\n        textAlign = \"left\";\r\n        break;\r\n    }\r\n\r\n    var textDimensions = this.pdf.getTextDimensions(options.text);\r\n    var yBaseLine = getBaseline.call(this, options.y);\r\n    var yBottom = getTextBottom.call(this, yBaseLine);\r\n    var yTop = yBottom - textDimensions.h;\r\n\r\n    var pt = this.ctx.transform.applyToPoint(new Point(options.x, yBaseLine));\r\n    var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n    var matrix = new Matrix();\r\n    matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n    matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n    matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n\r\n    var baselineRect = this.ctx.transform.applyToRectangle(\r\n      new Rectangle(options.x, yBaseLine, textDimensions.w, textDimensions.h)\r\n    );\r\n    var textBounds = matrix.applyToRectangle(\r\n      new Rectangle(options.x, yTop, textDimensions.w, textDimensions.h)\r\n    );\r\n    var pageArray = getPagesByPath.call(this, textBounds);\r\n    var pages = [];\r\n    for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n      if (pages.indexOf(pageArray[ii]) === -1) {\r\n        pages.push(pageArray[ii]);\r\n      }\r\n    }\r\n\r\n    sortPages(pages);\r\n\r\n    var clipPath, oldSize, oldLineWidth;\r\n    if (this.autoPaging) {\r\n      var min = pages[0];\r\n      var max = pages[pages.length - 1];\r\n      for (var i = min; i < max + 1; i++) {\r\n        this.pdf.setPage(i);\r\n\r\n        var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n        var firstPageHeight =\r\n          this.pdf.internal.pageSize.height -\r\n          this.posY -\r\n          this.margin[0] -\r\n          this.margin[2];\r\n        var pageHeightMinusBottomMargin =\r\n          this.pdf.internal.pageSize.height - this.margin[2];\r\n        var pageHeightMinusMargins =\r\n          pageHeightMinusBottomMargin - this.margin[0];\r\n        var pageWidthMinusRightMargin =\r\n          this.pdf.internal.pageSize.width - this.margin[1];\r\n        var pageWidthMinusMargins = pageWidthMinusRightMargin - this.margin[3];\r\n        var previousPageHeightSum =\r\n          i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n        if (this.ctx.clip_path.length !== 0) {\r\n          var tmpPaths = this.path;\r\n          clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n          this.path = pathPositionRedo(\r\n            clipPath,\r\n            this.posX + this.margin[3],\r\n            -1 * previousPageHeightSum + topMargin\r\n          );\r\n          drawPaths.call(this, \"fill\", true);\r\n          this.path = tmpPaths;\r\n        }\r\n        var textBoundsOnPage = pathPositionRedo(\r\n          [JSON.parse(JSON.stringify(textBounds))],\r\n          this.posX + this.margin[3],\r\n          -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n        )[0];\r\n\r\n        if (options.scale >= 0.01) {\r\n          oldSize = this.pdf.internal.getFontSize();\r\n          this.pdf.setFontSize(oldSize * options.scale);\r\n          oldLineWidth = this.lineWidth;\r\n          this.lineWidth = oldLineWidth * options.scale;\r\n        }\r\n\r\n        var doSlice = this.autoPaging !== \"text\";\r\n\r\n        if (\r\n          doSlice ||\r\n          textBoundsOnPage.y + textBoundsOnPage.h <= pageHeightMinusBottomMargin\r\n        ) {\r\n          if (\r\n            doSlice ||\r\n            (textBoundsOnPage.y >= topMargin &&\r\n              textBoundsOnPage.x <= pageWidthMinusRightMargin)\r\n          ) {\r\n            var croppedText = doSlice\r\n              ? options.text\r\n              : this.pdf.splitTextToSize(\r\n                  options.text,\r\n                  options.maxWidth ||\r\n                    pageWidthMinusRightMargin - textBoundsOnPage.x\r\n                )[0];\r\n            var baseLineRectOnPage = pathPositionRedo(\r\n              [JSON.parse(JSON.stringify(baselineRect))],\r\n              this.posX + this.margin[3],\r\n              -previousPageHeightSum +\r\n                topMargin +\r\n                this.ctx.prevPageLastElemOffset\r\n            )[0];\r\n\r\n            const needsClipping =\r\n              doSlice && (i > min || i < max) && hasMargins.call(this);\r\n\r\n            if (needsClipping) {\r\n              this.pdf.saveGraphicsState();\r\n              this.pdf\r\n                .rect(\r\n                  this.margin[3],\r\n                  this.margin[0],\r\n                  pageWidthMinusMargins,\r\n                  pageHeightMinusMargins,\r\n                  null\r\n                )\r\n                .clip()\r\n                .discardPath();\r\n            }\r\n\r\n            this.pdf.text(\r\n              croppedText,\r\n              baseLineRectOnPage.x,\r\n              baseLineRectOnPage.y,\r\n              {\r\n                angle: options.angle,\r\n                align: textAlign,\r\n                renderingMode: options.renderingMode\r\n              }\r\n            );\r\n\r\n            if (needsClipping) {\r\n              this.pdf.restoreGraphicsState();\r\n            }\r\n          }\r\n        } else {\r\n          // This text is the last element of the page, but it got cut off due to the margin\r\n          // so we render it in the next page\r\n\r\n          if (textBoundsOnPage.y < pageHeightMinusBottomMargin) {\r\n            // As a result, all other elements have their y offset increased\r\n            this.ctx.prevPageLastElemOffset +=\r\n              pageHeightMinusBottomMargin - textBoundsOnPage.y;\r\n          }\r\n        }\r\n\r\n        if (options.scale >= 0.01) {\r\n          this.pdf.setFontSize(oldSize);\r\n          this.lineWidth = oldLineWidth;\r\n        }\r\n      }\r\n    } else {\r\n      if (options.scale >= 0.01) {\r\n        oldSize = this.pdf.internal.getFontSize();\r\n        this.pdf.setFontSize(oldSize * options.scale);\r\n        oldLineWidth = this.lineWidth;\r\n        this.lineWidth = oldLineWidth * options.scale;\r\n      }\r\n      this.pdf.text(options.text, pt.x + this.posX, pt.y + this.posY, {\r\n        angle: options.angle,\r\n        align: textAlign,\r\n        renderingMode: options.renderingMode,\r\n        maxWidth: options.maxWidth\r\n      });\r\n\r\n      if (options.scale >= 0.01) {\r\n        this.pdf.setFontSize(oldSize);\r\n        this.lineWidth = oldLineWidth;\r\n      }\r\n    }\r\n  };\r\n\r\n  var drawLine = function(x, y, prevX, prevY) {\r\n    prevX = prevX || 0;\r\n    prevY = prevY || 0;\r\n\r\n    this.pdf.internal.out(\r\n      getHorizontalCoordinateString(x + prevX) +\r\n        \" \" +\r\n        getVerticalCoordinateString(y + prevY) +\r\n        \" l\"\r\n    );\r\n  };\r\n\r\n  var drawLines = function(lines, x, y) {\r\n    return this.pdf.lines(lines, x, y, null, null);\r\n  };\r\n\r\n  var drawCurve = function(x, y, x1, y1, x2, y2, x3, y3) {\r\n    this.pdf.internal.out(\r\n      [\r\n        f2(getHorizontalCoordinate(x1 + x)),\r\n        f2(getVerticalCoordinate(y1 + y)),\r\n        f2(getHorizontalCoordinate(x2 + x)),\r\n        f2(getVerticalCoordinate(y2 + y)),\r\n        f2(getHorizontalCoordinate(x3 + x)),\r\n        f2(getVerticalCoordinate(y3 + y)),\r\n        \"c\"\r\n      ].join(\" \")\r\n    );\r\n  };\r\n\r\n  /**\r\n   * Return a array of objects that represent bezier curves which approximate the circular arc centered at the origin, from startAngle to endAngle (radians) with the specified radius.\r\n   *\r\n   * Each bezier curve is an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n   * @function createArc\r\n   */\r\n  var createArc = function(radius, startAngle, endAngle, anticlockwise) {\r\n    var EPSILON = 0.00001; // Roughly 1/1000th of a degree, see below\r\n    var twoPi = Math.PI * 2;\r\n    var halfPi = Math.PI / 2.0;\r\n\r\n    while (startAngle > endAngle) {\r\n      startAngle = startAngle - twoPi;\r\n    }\r\n    var totalAngle = Math.abs(endAngle - startAngle);\r\n    if (totalAngle < twoPi) {\r\n      if (anticlockwise) {\r\n        totalAngle = twoPi - totalAngle;\r\n      }\r\n    }\r\n\r\n    // Compute the sequence of arc curves, up to PI/2 at a time.\r\n    var curves = [];\r\n\r\n    // clockwise or counterclockwise\r\n    var sgn = anticlockwise ? -1 : +1;\r\n\r\n    var a1 = startAngle;\r\n    for (; totalAngle > EPSILON; ) {\r\n      var remain = sgn * Math.min(totalAngle, halfPi);\r\n      var a2 = a1 + remain;\r\n      curves.push(createSmallArc.call(this, radius, a1, a2));\r\n      totalAngle -= Math.abs(a2 - a1);\r\n      a1 = a2;\r\n    }\r\n\r\n    return curves;\r\n  };\r\n\r\n  /**\r\n   * Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. The arc's radius is r.\r\n   *\r\n   * Returns an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n   *\r\n   * This algorithm is based on the approach described in: A. Riškus, \"Approximation of a Cubic Bezier Curve by Circular Arcs and Vice Versa,\" Information Technology and Control, 35(4), 2006 pp. 371-378.\r\n   */\r\n  var createSmallArc = function(r, a1, a2) {\r\n    var a = (a2 - a1) / 2.0;\r\n\r\n    var x4 = r * Math.cos(a);\r\n    var y4 = r * Math.sin(a);\r\n    var x1 = x4;\r\n    var y1 = -y4;\r\n\r\n    var q1 = x1 * x1 + y1 * y1;\r\n    var q2 = q1 + x1 * x4 + y1 * y4;\r\n    var k2 = ((4 / 3) * (Math.sqrt(2 * q1 * q2) - q2)) / (x1 * y4 - y1 * x4);\r\n\r\n    var x2 = x1 - k2 * y1;\r\n    var y2 = y1 + k2 * x1;\r\n    var x3 = x2;\r\n    var y3 = -y2;\r\n\r\n    var ar = a + a1;\r\n    var cos_ar = Math.cos(ar);\r\n    var sin_ar = Math.sin(ar);\r\n\r\n    return {\r\n      x1: r * Math.cos(a1),\r\n      y1: r * Math.sin(a1),\r\n      x2: x2 * cos_ar - y2 * sin_ar,\r\n      y2: x2 * sin_ar + y2 * cos_ar,\r\n      x3: x3 * cos_ar - y3 * sin_ar,\r\n      y3: x3 * sin_ar + y3 * cos_ar,\r\n      x4: r * Math.cos(a2),\r\n      y4: r * Math.sin(a2)\r\n    };\r\n  };\r\n\r\n  var rad2deg = function(value) {\r\n    return (value * 180) / Math.PI;\r\n  };\r\n\r\n  var getQuadraticCurveBoundary = function(sx, sy, cpx, cpy, ex, ey) {\r\n    var midX1 = sx + (cpx - sx) * 0.5;\r\n    var midY1 = sy + (cpy - sy) * 0.5;\r\n    var midX2 = ex + (cpx - ex) * 0.5;\r\n    var midY2 = ey + (cpy - ey) * 0.5;\r\n    var resultX1 = Math.min(sx, ex, midX1, midX2);\r\n    var resultX2 = Math.max(sx, ex, midX1, midX2);\r\n    var resultY1 = Math.min(sy, ey, midY1, midY2);\r\n    var resultY2 = Math.max(sy, ey, midY1, midY2);\r\n    return new Rectangle(\r\n      resultX1,\r\n      resultY1,\r\n      resultX2 - resultX1,\r\n      resultY2 - resultY1\r\n    );\r\n  };\r\n\r\n  //De Casteljau algorithm\r\n  var getBezierCurveBoundary = function(ax, ay, bx, by, cx, cy, dx, dy) {\r\n    var tobx = bx - ax;\r\n    var toby = by - ay;\r\n    var tocx = cx - bx;\r\n    var tocy = cy - by;\r\n    var todx = dx - cx;\r\n    var tody = dy - cy;\r\n    var precision = 40;\r\n    var d,\r\n      i,\r\n      px,\r\n      py,\r\n      qx,\r\n      qy,\r\n      rx,\r\n      ry,\r\n      tx,\r\n      ty,\r\n      sx,\r\n      sy,\r\n      x,\r\n      y,\r\n      minx,\r\n      miny,\r\n      maxx,\r\n      maxy,\r\n      toqx,\r\n      toqy,\r\n      torx,\r\n      tory,\r\n      totx,\r\n      toty;\r\n    for (i = 0; i < precision + 1; i++) {\r\n      d = i / precision;\r\n      px = ax + d * tobx;\r\n      py = ay + d * toby;\r\n      qx = bx + d * tocx;\r\n      qy = by + d * tocy;\r\n      rx = cx + d * todx;\r\n      ry = cy + d * tody;\r\n      toqx = qx - px;\r\n      toqy = qy - py;\r\n      torx = rx - qx;\r\n      tory = ry - qy;\r\n\r\n      sx = px + d * toqx;\r\n      sy = py + d * toqy;\r\n      tx = qx + d * torx;\r\n      ty = qy + d * tory;\r\n      totx = tx - sx;\r\n      toty = ty - sy;\r\n\r\n      x = sx + d * totx;\r\n      y = sy + d * toty;\r\n      if (i == 0) {\r\n        minx = x;\r\n        miny = y;\r\n        maxx = x;\r\n        maxy = y;\r\n      } else {\r\n        minx = Math.min(minx, x);\r\n        miny = Math.min(miny, y);\r\n        maxx = Math.max(maxx, x);\r\n        maxy = Math.max(maxy, y);\r\n      }\r\n    }\r\n    return new Rectangle(\r\n      Math.round(minx),\r\n      Math.round(miny),\r\n      Math.round(maxx - minx),\r\n      Math.round(maxy - miny)\r\n    );\r\n  };\r\n\r\n  var getPrevLineDashValue = function(lineDash, lineDashOffset) {\r\n    return JSON.stringify({\r\n      lineDash: lineDash,\r\n      lineDashOffset: lineDashOffset\r\n    });\r\n  };\r\n\r\n  var setLineDash = function() {\r\n    // Avoid unnecessary line dash declarations.\r\n    if (\r\n      !this.prevLineDash &&\r\n      !this.ctx.lineDash.length &&\r\n      !this.ctx.lineDashOffset\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    // Avoid unnecessary line dash declarations.\r\n    const nextLineDash = getPrevLineDashValue(\r\n      this.ctx.lineDash,\r\n      this.ctx.lineDashOffset\r\n    );\r\n    if (this.prevLineDash !== nextLineDash) {\r\n      this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset);\r\n      this.prevLineDash = nextLineDash;\r\n    }\r\n  };\r\n})(jsPDF.API);\r\n", "/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\n\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var ASCII85Encode = function(a) {\n    var b, c, d, e, f, g, h, i, j, k;\n    // eslint-disable-next-line no-control-regex\n    for (\n      !/[^\\x00-\\xFF]/.test(a),\n        b = \"\\x00\\x00\\x00\\x00\".slice(a.length % 4 || 4),\n        a += b,\n        c = [],\n        d = 0,\n        e = a.length;\n      e > d;\n      d += 4\n    )\n      (f =\n        (a.charCodeAt(d) << 24) +\n        (a.charCodeAt(d + 1) << 16) +\n        (a.charCodeAt(d + 2) << 8) +\n        a.charCodeAt(d + 3)),\n        0 !== f\n          ? ((k = f % 85),\n            (f = (f - k) / 85),\n            (j = f % 85),\n            (f = (f - j) / 85),\n            (i = f % 85),\n            (f = (f - i) / 85),\n            (h = f % 85),\n            (f = (f - h) / 85),\n            (g = f % 85),\n            c.push(g + 33, h + 33, i + 33, j + 33, k + 33))\n          : c.push(122);\n    return (\n      (function(a, b) {\n        for (var c = b; c > 0; c--) a.pop();\n      })(c, b.length),\n      String.fromCharCode.apply(String, c) + \"~>\"\n    );\n  };\n\n  var ASCII85Decode = function(a) {\n    var c,\n      d,\n      e,\n      f,\n      g,\n      h = String,\n      l = \"length\",\n      w = 255,\n      x = \"charCodeAt\",\n      y = \"slice\",\n      z = \"replace\";\n    for (\n      \"~>\" === a[y](-2),\n        a = a[y](0, -2)\n          [z](/\\s/g, \"\")\n          [z](\"z\", \"!!!!!\"),\n        c = \"uuuuu\"[y](a[l] % 5 || 5),\n        a += c,\n        e = [],\n        f = 0,\n        g = a[l];\n      g > f;\n      f += 5\n    )\n      (d =\n        52200625 * (a[x](f) - 33) +\n        614125 * (a[x](f + 1) - 33) +\n        7225 * (a[x](f + 2) - 33) +\n        85 * (a[x](f + 3) - 33) +\n        (a[x](f + 4) - 33)),\n        e.push(w & (d >> 24), w & (d >> 16), w & (d >> 8), w & d);\n    return (\n      (function(a, b) {\n        for (var c = b; c > 0; c--) a.pop();\n      })(e, c[l]),\n      h.fromCharCode.apply(h, e)\n    );\n  };\n\n  var ASCIIHexEncode = function(value) {\n    return (\n      value\n        .split(\"\")\n        .map(function(value) {\n          return (\"0\" + value.charCodeAt().toString(16)).slice(-2);\n        })\n        .join(\"\") + \">\"\n    );\n  };\n\n  var ASCIIHexDecode = function(value) {\n    var regexCheckIfHex = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n    value = value.replace(/\\s/g, \"\");\n    if (value.indexOf(\">\") !== -1) {\n      value = value.substr(0, value.indexOf(\">\"));\n    }\n    if (value.length % 2) {\n      value += \"0\";\n    }\n    if (regexCheckIfHex.test(value) === false) {\n      return \"\";\n    }\n    var result = \"\";\n    for (var i = 0; i < value.length; i += 2) {\n      result += String.fromCharCode(\"0x\" + (value[i] + value[i + 1]));\n    }\n    return result;\n  };\n  /*\n  var FlatePredictors = {\n      None: 1,\n      TIFF: 2,\n      PNG_None: 10,\n      PNG_Sub: 11,\n      PNG_Up: 12,\n      PNG_Average: 13,\n      PNG_Paeth: 14,\n      PNG_Optimum: 15\n  };\n  */\n\n  var FlateEncode = function(data) {\n    var arr = new Uint8Array(data.length);\n    var i = data.length;\n    while (i--) {\n      arr[i] = data.charCodeAt(i);\n    }\n    arr = zlibSync(arr);\n    data = arr.reduce(function(data, byte) {\n      return data + String.fromCharCode(byte);\n    }, \"\");\n    return data;\n  };\n\n  jsPDFAPI.processDataByFilters = function(origData, filterChain) {\n    \"use strict\";\n    var i = 0;\n    var data = origData || \"\";\n    var reverseChain = [];\n    filterChain = filterChain || [];\n\n    if (typeof filterChain === \"string\") {\n      filterChain = [filterChain];\n    }\n\n    for (i = 0; i < filterChain.length; i += 1) {\n      switch (filterChain[i]) {\n        case \"ASCII85Decode\":\n        case \"/ASCII85Decode\":\n          data = ASCII85Decode(data);\n          reverseChain.push(\"/ASCII85Encode\");\n          break;\n        case \"ASCII85Encode\":\n        case \"/ASCII85Encode\":\n          data = ASCII85Encode(data);\n          reverseChain.push(\"/ASCII85Decode\");\n          break;\n        case \"ASCIIHexDecode\":\n        case \"/ASCIIHexDecode\":\n          data = ASCIIHexDecode(data);\n          reverseChain.push(\"/ASCIIHexEncode\");\n          break;\n        case \"ASCIIHexEncode\":\n        case \"/ASCIIHexEncode\":\n          data = ASCIIHexEncode(data);\n          reverseChain.push(\"/ASCIIHexDecode\");\n          break;\n        case \"FlateEncode\":\n        case \"/FlateEncode\":\n          data = FlateEncode(data);\n          reverseChain.push(\"/FlateDecode\");\n          break;\n        default:\n          throw new Error(\n            'The filter: \"' + filterChain[i] + '\" is not implemented'\n          );\n      }\n    }\n\n    return { data: data, reverseChain: reverseChain.reverse().join(\" \") };\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name fileloading\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * @name loadFile\n   * @function\n   * @param {string} url\n   * @param {boolean} sync\n   * @param {function} callback\n   * @returns {string|undefined} result\n   */\n  jsPDFAPI.loadFile = function(url, sync, callback) {\n    return browserRequest(url, sync, callback);\n\n  };\n\n  /**\n   * @name loadImageFile\n   * @function\n   * @param {string} path\n   * @param {boolean} sync\n   * @param {function} callback\n   */\n  jsPDFAPI.loadImageFile = jsPDFAPI.loadFile;\n\n  function browserRequest(url, sync, callback) {\n    sync = sync === false ? false : true;\n    callback = typeof callback === \"function\" ? callback : function() {};\n    var result = undefined;\n\n    var xhr = function(url, sync, callback) {\n      var request = new XMLHttpRequest();\n      var i = 0;\n\n      var sanitizeUnicode = function(data) {\n        var dataLength = data.length;\n        var charArray = [];\n        var StringFromCharCode = String.fromCharCode;\n\n        //Transform Unicode to ASCII\n        for (i = 0; i < dataLength; i += 1) {\n          charArray.push(StringFromCharCode(data.charCodeAt(i) & 0xff));\n        }\n        return charArray.join(\"\");\n      };\n\n      request.open(\"GET\", url, !sync);\n      // XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]\n      request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n      if (sync === false) {\n        request.onload = function() {\n          if (request.status === 200) {\n            callback(sanitizeUnicode(this.responseText));\n          } else {\n            callback(undefined);\n          }\n        };\n      }\n      request.send(null);\n\n      if (sync && request.status === 200) {\n        return sanitizeUnicode(request.responseText);\n      }\n    };\n    try {\n      result = xhr(url, sync, callback);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n    return result;\n  }\n\n  function nodeReadFile(url, sync, callback) {\n    sync = sync === false ? false : true;\n    var result = undefined;\n\n    var fs = require(\"fs\");\n    var path = require(\"path\");\n\n    url = path.resolve(url);\n    if (sync) {\n      try {\n        result = fs.readFileSync(url, { encoding: \"latin1\" });\n      } catch (e) {\n        return undefined;\n      }\n    } else {\n      fs.readFile(url, { encoding: \"latin1\" }, function(err, data) {\n        if (!callback) {\n          return;\n        }\n        if (err) {\n          callback(undefined);\n        }\n        callback(data);\n      });\n    }\n\n    return result;\n  }\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2018 Erik Koopmans\n * Released under the MIT License.\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { normalizeFontFace } from \"../libs/fontFace.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF html PlugIn\n *\n * @name html\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  function loadHtml2Canvas() {\n    return (function() {\n      if (globalObject[\"html2canvas\"]) {\n        return Promise.resolve(globalObject[\"html2canvas\"]);\n      }\n\n      return import(\"html2canvas\");\n\n    })()\n      .catch(function(e) {\n        return Promise.reject(new Error(\"Could not load html2canvas: \" + e));\n      })\n      .then(function(html2canvas) {\n        return html2canvas.default ? html2canvas.default : html2canvas;\n      });\n  }\n\n  function loadDomPurify() {\n    return (function() {\n      if (globalObject[\"DOMPurify\"]) {\n        return Promise.resolve(globalObject[\"DOMPurify\"]);\n      }\n\n      return import(\"dompurify\");\n\n    })()\n      .catch(function(e) {\n        return Promise.reject(new Error(\"Could not load dompurify: \" + e));\n      })\n      .then(function(dompurify) {\n        return dompurify.default ? dompurify.default : dompurify;\n      });\n  }\n\n  /**\n   * Determine the type of a variable/object.\n   *\n   * @private\n   * @ignore\n   */\n  var objType = function(obj) {\n    var type = typeof obj;\n    if (type === \"undefined\") return \"undefined\";\n    else if (type === \"string\" || obj instanceof String) return \"string\";\n    else if (type === \"number\" || obj instanceof Number) return \"number\";\n    else if (type === \"function\" || obj instanceof Function) return \"function\";\n    else if (!!obj && obj.constructor === Array) return \"array\";\n    else if (obj && obj.nodeType === 1) return \"element\";\n    else if (type === \"object\") return \"object\";\n    else return \"unknown\";\n  };\n\n  /**\n   * Create an HTML element with optional className, innerHTML, and style.\n   *\n   * @private\n   * @ignore\n   */\n  var createElement = function(tagName, opt) {\n    var el = document.createElement(tagName);\n    if (opt.className) el.className = opt.className;\n    if (opt.innerHTML && opt.dompurify) {\n      el.innerHTML = opt.dompurify.sanitize(opt.innerHTML);\n    }\n    for (var key in opt.style) {\n      el.style[key] = opt.style[key];\n    }\n    return el;\n  };\n\n  /**\n   * Deep-clone a node and preserve contents/properties.\n   *\n   * @private\n   * @ignore\n   */\n  var cloneNode = function(node, javascriptEnabled) {\n    // Recursively clone the node.\n    var clone =\n      node.nodeType === 3\n        ? document.createTextNode(node.nodeValue)\n        : node.cloneNode(false);\n    for (var child = node.firstChild; child; child = child.nextSibling) {\n      if (\n        javascriptEnabled === true ||\n        child.nodeType !== 1 ||\n        child.nodeName !== \"SCRIPT\"\n      ) {\n        clone.appendChild(cloneNode(child, javascriptEnabled));\n      }\n    }\n\n    if (node.nodeType === 1) {\n      // Preserve contents/properties of special nodes.\n      if (node.nodeName === \"CANVAS\") {\n        clone.width = node.width;\n        clone.height = node.height;\n        clone.getContext(\"2d\").drawImage(node, 0, 0);\n      } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n        clone.value = node.value;\n      }\n\n      // Preserve the node's scroll position when it loads.\n      clone.addEventListener(\n        \"load\",\n        function() {\n          clone.scrollTop = node.scrollTop;\n          clone.scrollLeft = node.scrollLeft;\n        },\n        true\n      );\n    }\n\n    // Return the cloned node.\n    return clone;\n  };\n\n  /* ----- CONSTRUCTOR ----- */\n\n  var Worker = function Worker(opt) {\n    // Create the root parent for the proto chain, and the starting Worker.\n    var root = Object.assign(\n      Worker.convert(Promise.resolve()),\n      JSON.parse(JSON.stringify(Worker.template))\n    );\n    var self = Worker.convert(Promise.resolve(), root);\n\n    // Set progress, optional settings, and return.\n    self = self.setProgress(1, Worker, 1, [Worker]);\n    self = self.set(opt);\n    return self;\n  };\n\n  // Boilerplate for subclassing Promise.\n  Worker.prototype = Object.create(Promise.prototype);\n  Worker.prototype.constructor = Worker;\n\n  // Converts/casts promises into Workers.\n  Worker.convert = function convert(promise, inherit) {\n    // Uses prototypal inheritance to receive changes made to ancestors' properties.\n    promise.__proto__ = inherit || Worker.prototype;\n    return promise;\n  };\n\n  Worker.template = {\n    prop: {\n      src: null,\n      container: null,\n      overlay: null,\n      canvas: null,\n      img: null,\n      pdf: null,\n      pageSize: null,\n      callback: function() {}\n    },\n    progress: {\n      val: 0,\n      state: null,\n      n: 0,\n      stack: []\n    },\n    opt: {\n      filename: \"file.pdf\",\n      margin: [0, 0, 0, 0],\n      enableLinks: true,\n      x: 0,\n      y: 0,\n      html2canvas: {},\n      jsPDF: {},\n      backgroundColor: \"transparent\"\n    }\n  };\n\n  /* ----- FROM / TO ----- */\n\n  Worker.prototype.from = function from(src, type) {\n    function getType(src) {\n      switch (objType(src)) {\n        case \"string\":\n          return \"string\";\n        case \"element\":\n          return src.nodeName.toLowerCase() === \"canvas\" ? \"canvas\" : \"element\";\n        default:\n          return \"unknown\";\n      }\n    }\n\n    return this.then(function from_main() {\n      type = type || getType(src);\n      switch (type) {\n        case \"string\":\n          return this.then(loadDomPurify).then(function(dompurify) {\n            return this.set({\n              src: createElement(\"div\", {\n                innerHTML: src,\n                dompurify: dompurify\n              })\n            });\n          });\n        case \"element\":\n          return this.set({ src: src });\n        case \"canvas\":\n          return this.set({ canvas: src });\n        case \"img\":\n          return this.set({ img: src });\n        default:\n          return this.error(\"Unknown source type.\");\n      }\n    });\n  };\n\n  Worker.prototype.to = function to(target) {\n    // Route the 'to' request to the appropriate method.\n    switch (target) {\n      case \"container\":\n        return this.toContainer();\n      case \"canvas\":\n        return this.toCanvas();\n      case \"img\":\n        return this.toImg();\n      case \"pdf\":\n        return this.toPdf();\n      default:\n        return this.error(\"Invalid target.\");\n    }\n  };\n\n  Worker.prototype.toContainer = function toContainer() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkSrc() {\n        return (\n          this.prop.src || this.error(\"Cannot duplicate - no source HTML.\")\n        );\n      },\n      function checkPageSize() {\n        return this.prop.pageSize || this.setPageSize();\n      }\n    ];\n    return this.thenList(prereqs).then(function toContainer_main() {\n      // Define the CSS styles for the container and its overlay parent.\n      var overlayCSS = {\n        position: \"fixed\",\n        overflow: \"hidden\",\n        zIndex: 1000,\n        left: \"-100000px\",\n        right: 0,\n        bottom: 0,\n        top: 0\n      };\n      var containerCSS = {\n        position: \"relative\",\n        display: \"inline-block\",\n        width:\n          (typeof this.opt.width === \"number\" &&\n          !isNaN(this.opt.width) &&\n          typeof this.opt.windowWidth === \"number\" &&\n          !isNaN(this.opt.windowWidth)\n            ? this.opt.windowWidth\n            : Math.max(\n                this.prop.src.clientWidth,\n                this.prop.src.scrollWidth,\n                this.prop.src.offsetWidth\n              )) + \"px\",\n        left: 0,\n        right: 0,\n        top: 0,\n        margin: \"auto\",\n        backgroundColor: this.opt.backgroundColor\n      }; // Set the overlay to hidden (could be changed in the future to provide a print preview).\n\n      var source = cloneNode(\n        this.prop.src,\n        this.opt.html2canvas.javascriptEnabled\n      );\n\n      if (source.tagName === \"BODY\") {\n        containerCSS.height =\n          Math.max(\n            document.body.scrollHeight,\n            document.body.offsetHeight,\n            document.documentElement.clientHeight,\n            document.documentElement.scrollHeight,\n            document.documentElement.offsetHeight\n          ) + \"px\";\n      }\n\n      this.prop.overlay = createElement(\"div\", {\n        className: \"html2pdf__overlay\",\n        style: overlayCSS\n      });\n      this.prop.container = createElement(\"div\", {\n        className: \"html2pdf__container\",\n        style: containerCSS\n      });\n      this.prop.container.appendChild(source);\n      this.prop.container.firstChild.appendChild(\n        createElement(\"div\", {\n          style: {\n            clear: \"both\",\n            border: \"0 none transparent\",\n            margin: 0,\n            padding: 0,\n            height: 0\n          }\n        })\n      );\n      this.prop.container.style.float = \"none\";\n      this.prop.overlay.appendChild(this.prop.container);\n      document.body.appendChild(this.prop.overlay);\n      this.prop.container.firstChild.style.position = \"relative\";\n      this.prop.container.height =\n        Math.max(\n          this.prop.container.firstChild.clientHeight,\n          this.prop.container.firstChild.scrollHeight,\n          this.prop.container.firstChild.offsetHeight\n        ) + \"px\";\n    });\n  };\n\n  Worker.prototype.toCanvas = function toCanvas() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkContainer() {\n        return (\n          document.body.contains(this.prop.container) || this.toContainer()\n        );\n      }\n    ];\n\n    // Fulfill prereqs then create the canvas.\n    return this.thenList(prereqs)\n      .then(loadHtml2Canvas)\n      .then(function toCanvas_main(html2canvas) {\n        // Handle old-fashioned 'onrendered' argument.\n        var options = Object.assign({}, this.opt.html2canvas);\n        delete options.onrendered;\n\n        return html2canvas(this.prop.container, options);\n      })\n      .then(function toCanvas_post(canvas) {\n        // Handle old-fashioned 'onrendered' argument.\n        var onRendered = this.opt.html2canvas.onrendered || function() {};\n        onRendered(canvas);\n\n        this.prop.canvas = canvas;\n        document.body.removeChild(this.prop.overlay);\n      });\n  };\n\n  Worker.prototype.toContext2d = function toContext2d() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkContainer() {\n        return (\n          document.body.contains(this.prop.container) || this.toContainer()\n        );\n      }\n    ];\n\n    // Fulfill prereqs then create the canvas.\n    return this.thenList(prereqs)\n      .then(loadHtml2Canvas)\n      .then(function toContext2d_main(html2canvas) {\n        // Handle old-fashioned 'onrendered' argument.\n\n        var pdf = this.opt.jsPDF;\n        var fontFaces = this.opt.fontFaces;\n\n        var scale =\n          typeof this.opt.width === \"number\" &&\n          !isNaN(this.opt.width) &&\n          typeof this.opt.windowWidth === \"number\" &&\n          !isNaN(this.opt.windowWidth)\n            ? this.opt.width / this.opt.windowWidth\n            : 1;\n\n        var options = Object.assign(\n          {\n            async: true,\n            allowTaint: true,\n            scale: scale,\n            scrollX: this.opt.scrollX || 0,\n            scrollY: this.opt.scrollY || 0,\n            backgroundColor: \"#ffffff\",\n            imageTimeout: 15000,\n            logging: true,\n            proxy: null,\n            removeContainer: true,\n            foreignObjectRendering: false,\n            useCORS: false\n          },\n          this.opt.html2canvas\n        );\n        delete options.onrendered;\n\n        pdf.context2d.autoPaging =\n          typeof this.opt.autoPaging === \"undefined\"\n            ? true\n            : this.opt.autoPaging;\n        pdf.context2d.posX = this.opt.x;\n        pdf.context2d.posY = this.opt.y;\n        pdf.context2d.margin = this.opt.margin;\n        pdf.context2d.fontFaces = fontFaces;\n\n        if (fontFaces) {\n          for (var i = 0; i < fontFaces.length; ++i) {\n            var font = fontFaces[i];\n            var src = font.src.find(function(src) {\n              return src.format === \"truetype\";\n            });\n\n            if (src) {\n              pdf.addFont(src.url, font.ref.name, font.ref.style);\n            }\n          }\n        }\n\n        options.windowHeight = options.windowHeight || 0;\n        options.windowHeight =\n          options.windowHeight == 0\n            ? Math.max(\n                this.prop.container.clientHeight,\n                this.prop.container.scrollHeight,\n                this.prop.container.offsetHeight\n              )\n            : options.windowHeight;\n\n        pdf.context2d.save(true);\n        return html2canvas(this.prop.container, options);\n      })\n      .then(function toContext2d_post(canvas) {\n        this.opt.jsPDF.context2d.restore(true);\n\n        // Handle old-fashioned 'onrendered' argument.\n        var onRendered = this.opt.html2canvas.onrendered || function() {};\n        onRendered(canvas);\n\n        this.prop.canvas = canvas;\n        document.body.removeChild(this.prop.overlay);\n      });\n  };\n\n  Worker.prototype.toImg = function toImg() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkCanvas() {\n        return this.prop.canvas || this.toCanvas();\n      }\n    ];\n\n    // Fulfill prereqs then create the image.\n    return this.thenList(prereqs).then(function toImg_main() {\n      var imgData = this.prop.canvas.toDataURL(\n        \"image/\" + this.opt.image.type,\n        this.opt.image.quality\n      );\n      this.prop.img = document.createElement(\"img\");\n      this.prop.img.src = imgData;\n    });\n  };\n\n  Worker.prototype.toPdf = function toPdf() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkContext2d() {\n        return this.toContext2d();\n      }\n      //function checkCanvas() { return this.prop.canvas || this.toCanvas(); }\n    ];\n\n    // Fulfill prereqs then create the image.\n    return this.thenList(prereqs).then(function toPdf_main() {\n      // Create local copies of frequently used properties.\n      this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n    });\n  };\n\n  /* ----- OUTPUT / SAVE ----- */\n\n  Worker.prototype.output = function output(type, options, src) {\n    // Redirect requests to the correct function (outputPdf / outputImg).\n    src = src || \"pdf\";\n    if (src.toLowerCase() === \"img\" || src.toLowerCase() === \"image\") {\n      return this.outputImg(type, options);\n    } else {\n      return this.outputPdf(type, options);\n    }\n  };\n\n  Worker.prototype.outputPdf = function outputPdf(type, options) {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkPdf() {\n        return this.prop.pdf || this.toPdf();\n      }\n    ];\n\n    // Fulfill prereqs then perform the appropriate output.\n    return this.thenList(prereqs).then(function outputPdf_main() {\n      /* Currently implemented output types:\n       *    https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n       *  save(options), arraybuffer, blob, bloburi/bloburl,\n       *  datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n       */\n      return this.prop.pdf.output(type, options);\n    });\n  };\n\n  Worker.prototype.outputImg = function outputImg(type) {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkImg() {\n        return this.prop.img || this.toImg();\n      }\n    ];\n\n    // Fulfill prereqs then perform the appropriate output.\n    return this.thenList(prereqs).then(function outputImg_main() {\n      switch (type) {\n        case undefined:\n        case \"img\":\n          return this.prop.img;\n        case \"datauristring\":\n        case \"dataurlstring\":\n          return this.prop.img.src;\n        case \"datauri\":\n        case \"dataurl\":\n          return (document.location.href = this.prop.img.src);\n        default:\n          throw 'Image output type \"' + type + '\" is not supported.';\n      }\n    });\n  };\n\n  Worker.prototype.save = function save(filename) {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkPdf() {\n        return this.prop.pdf || this.toPdf();\n      }\n    ];\n\n    // Fulfill prereqs, update the filename (if provided), and save the PDF.\n    return this.thenList(prereqs)\n      .set(filename ? { filename: filename } : null)\n      .then(function save_main() {\n        this.prop.pdf.save(this.opt.filename);\n      });\n  };\n\n  Worker.prototype.doCallback = function doCallback() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkPdf() {\n        return this.prop.pdf || this.toPdf();\n      }\n    ];\n\n    // Fulfill prereqs, update the filename (if provided), and save the PDF.\n    return this.thenList(prereqs).then(function doCallback_main() {\n      this.prop.callback(this.prop.pdf);\n    });\n  };\n\n  /* ----- SET / GET ----- */\n\n  Worker.prototype.set = function set(opt) {\n    // TODO: Implement ordered pairs?\n\n    // Silently ignore invalid or empty input.\n    if (objType(opt) !== \"object\") {\n      return this;\n    }\n\n    // Build an array of setter functions to queue.\n    var fns = Object.keys(opt || {}).map(function(key) {\n      if (key in Worker.template.prop) {\n        // Set pre-defined properties.\n        return function set_prop() {\n          this.prop[key] = opt[key];\n        };\n      } else {\n        switch (key) {\n          case \"margin\":\n            return this.setMargin.bind(this, opt.margin);\n          case \"jsPDF\":\n            return function set_jsPDF() {\n              this.opt.jsPDF = opt.jsPDF;\n              return this.setPageSize();\n            };\n          case \"pageSize\":\n            return this.setPageSize.bind(this, opt.pageSize);\n          default:\n            // Set any other properties in opt.\n            return function set_opt() {\n              this.opt[key] = opt[key];\n            };\n        }\n      }\n    }, this);\n\n    // Set properties within the promise chain.\n    return this.then(function set_main() {\n      return this.thenList(fns);\n    });\n  };\n\n  Worker.prototype.get = function get(key, cbk) {\n    return this.then(function get_main() {\n      // Fetch the requested property, either as a predefined prop or in opt.\n      var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n      return cbk ? cbk(val) : val;\n    });\n  };\n\n  Worker.prototype.setMargin = function setMargin(margin) {\n    return this.then(function setMargin_main() {\n      // Parse the margin property.\n      switch (objType(margin)) {\n        case \"number\":\n          margin = [margin, margin, margin, margin];\n        // eslint-disable-next-line no-fallthrough\n        case \"array\":\n          if (margin.length === 2) {\n            margin = [margin[0], margin[1], margin[0], margin[1]];\n          }\n          if (margin.length === 4) {\n            break;\n          }\n        // eslint-disable-next-line no-fallthrough\n        default:\n          return this.error(\"Invalid margin array.\");\n      }\n\n      // Set the margin property, then update pageSize.\n      this.opt.margin = margin;\n    }).then(this.setPageSize);\n  };\n\n  Worker.prototype.setPageSize = function setPageSize(pageSize) {\n    function toPx(val, k) {\n      return Math.floor(((val * k) / 72) * 96);\n    }\n\n    return this.then(function setPageSize_main() {\n      // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n      pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n      // Add 'inner' field if not present.\n      if (!pageSize.hasOwnProperty(\"inner\")) {\n        pageSize.inner = {\n          width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n          height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n        };\n        pageSize.inner.px = {\n          width: toPx(pageSize.inner.width, pageSize.k),\n          height: toPx(pageSize.inner.height, pageSize.k)\n        };\n        pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n      }\n\n      // Attach pageSize to this.\n      this.prop.pageSize = pageSize;\n    });\n  };\n\n  Worker.prototype.setProgress = function setProgress(val, state, n, stack) {\n    // Immediately update all progress values.\n    if (val != null) this.progress.val = val;\n    if (state != null) this.progress.state = state;\n    if (n != null) this.progress.n = n;\n    if (stack != null) this.progress.stack = stack;\n    this.progress.ratio = this.progress.val / this.progress.state;\n\n    // Return this for command chaining.\n    return this;\n  };\n\n  Worker.prototype.updateProgress = function updateProgress(\n    val,\n    state,\n    n,\n    stack\n  ) {\n    // Immediately update all progress values, using setProgress.\n    return this.setProgress(\n      val ? this.progress.val + val : null,\n      state ? state : null,\n      n ? this.progress.n + n : null,\n      stack ? this.progress.stack.concat(stack) : null\n    );\n  };\n\n  /* ----- PROMISE MAPPING ----- */\n\n  Worker.prototype.then = function then(onFulfilled, onRejected) {\n    // Wrap `this` for encapsulation.\n    var self = this;\n\n    return this.thenCore(onFulfilled, onRejected, function then_main(\n      onFulfilled,\n      onRejected\n    ) {\n      // Update progress while queuing, calling, and resolving `then`.\n      self.updateProgress(null, null, 1, [onFulfilled]);\n      return Promise.prototype.then\n        .call(this, function then_pre(val) {\n          self.updateProgress(null, onFulfilled);\n          return val;\n        })\n        .then(onFulfilled, onRejected)\n        .then(function then_post(val) {\n          self.updateProgress(1);\n          return val;\n        });\n    });\n  };\n\n  Worker.prototype.thenCore = function thenCore(\n    onFulfilled,\n    onRejected,\n    thenBase\n  ) {\n    // Handle optional thenBase parameter.\n    thenBase = thenBase || Promise.prototype.then;\n\n    // Wrap `this` for encapsulation and bind it to the promise handlers.\n    var self = this;\n    if (onFulfilled) {\n      onFulfilled = onFulfilled.bind(self);\n    }\n    if (onRejected) {\n      onRejected = onRejected.bind(self);\n    }\n\n    // Cast self into a Promise to avoid polyfills recursively defining `then`.\n    var isNative =\n      Promise.toString().indexOf(\"[native code]\") !== -1 &&\n      Promise.name === \"Promise\";\n    var selfPromise = isNative\n      ? self\n      : Worker.convert(Object.assign({}, self), Promise.prototype);\n\n    // Return the promise, after casting it into a Worker and preserving props.\n    var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n    return Worker.convert(returnVal, self.__proto__);\n  };\n\n  Worker.prototype.thenExternal = function thenExternal(\n    onFulfilled,\n    onRejected\n  ) {\n    // Call `then` and return a standard promise (exits the Worker chain).\n    return Promise.prototype.then.call(this, onFulfilled, onRejected);\n  };\n\n  Worker.prototype.thenList = function thenList(fns) {\n    // Queue a series of promise 'factories' into the promise chain.\n    var self = this;\n    fns.forEach(function thenList_forEach(fn) {\n      self = self.thenCore(fn);\n    });\n    return self;\n  };\n\n  Worker.prototype[\"catch\"] = function(onRejected) {\n    // Bind `this` to the promise handler, call `catch`, and return a Worker.\n    if (onRejected) {\n      onRejected = onRejected.bind(this);\n    }\n    var returnVal = Promise.prototype[\"catch\"].call(this, onRejected);\n    return Worker.convert(returnVal, this);\n  };\n\n  Worker.prototype.catchExternal = function catchExternal(onRejected) {\n    // Call `catch` and return a standard promise (exits the Worker chain).\n    return Promise.prototype[\"catch\"].call(this, onRejected);\n  };\n\n  Worker.prototype.error = function error(msg) {\n    // Throw the error in the Promise chain.\n    return this.then(function error_main() {\n      throw new Error(msg);\n    });\n  };\n\n  /* ----- ALIASES ----- */\n\n  Worker.prototype.using = Worker.prototype.set;\n  Worker.prototype.saveAs = Worker.prototype.save;\n  Worker.prototype.export = Worker.prototype.output;\n  Worker.prototype.run = Worker.prototype.then;\n\n  // Get dimensions of a PDF page, as determined by jsPDF.\n  jsPDF.getPageSize = function(orientation, unit, format) {\n    // Decode options object\n    if (typeof orientation === \"object\") {\n      var options = orientation;\n      orientation = options.orientation;\n      unit = options.unit || unit;\n      format = options.format || format;\n    }\n\n    // Default options\n    unit = unit || \"mm\";\n    format = format || \"a4\";\n    orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n    var format_as_string = (\"\" + format).toLowerCase();\n\n    // Size in pt of various paper formats\n    var pageFormats = {\n      a0: [2383.94, 3370.39],\n      a1: [1683.78, 2383.94],\n      a2: [1190.55, 1683.78],\n      a3: [841.89, 1190.55],\n      a4: [595.28, 841.89],\n      a5: [419.53, 595.28],\n      a6: [297.64, 419.53],\n      a7: [209.76, 297.64],\n      a8: [147.4, 209.76],\n      a9: [104.88, 147.4],\n      a10: [73.7, 104.88],\n      b0: [2834.65, 4008.19],\n      b1: [2004.09, 2834.65],\n      b2: [1417.32, 2004.09],\n      b3: [1000.63, 1417.32],\n      b4: [708.66, 1000.63],\n      b5: [498.9, 708.66],\n      b6: [354.33, 498.9],\n      b7: [249.45, 354.33],\n      b8: [175.75, 249.45],\n      b9: [124.72, 175.75],\n      b10: [87.87, 124.72],\n      c0: [2599.37, 3676.54],\n      c1: [1836.85, 2599.37],\n      c2: [1298.27, 1836.85],\n      c3: [918.43, 1298.27],\n      c4: [649.13, 918.43],\n      c5: [459.21, 649.13],\n      c6: [323.15, 459.21],\n      c7: [229.61, 323.15],\n      c8: [161.57, 229.61],\n      c9: [113.39, 161.57],\n      c10: [79.37, 113.39],\n      dl: [311.81, 623.62],\n      letter: [612, 792],\n      \"government-letter\": [576, 756],\n      legal: [612, 1008],\n      \"junior-legal\": [576, 360],\n      ledger: [1224, 792],\n      tabloid: [792, 1224],\n      \"credit-card\": [153, 243]\n    };\n\n    var k;\n    // Unit conversion\n    switch (unit) {\n      case \"pt\":\n        k = 1;\n        break;\n      case \"mm\":\n        k = 72 / 25.4;\n        break;\n      case \"cm\":\n        k = 72 / 2.54;\n        break;\n      case \"in\":\n        k = 72;\n        break;\n      case \"px\":\n        k = 72 / 96;\n        break;\n      case \"pc\":\n        k = 12;\n        break;\n      case \"em\":\n        k = 12;\n        break;\n      case \"ex\":\n        k = 6;\n        break;\n      default:\n        throw \"Invalid unit: \" + unit;\n    }\n    var pageHeight = 0;\n    var pageWidth = 0;\n\n    // Dimensions are stored as user units and converted to points on output\n    if (pageFormats.hasOwnProperty(format_as_string)) {\n      pageHeight = pageFormats[format_as_string][1] / k;\n      pageWidth = pageFormats[format_as_string][0] / k;\n    } else {\n      try {\n        pageHeight = format[1];\n        pageWidth = format[0];\n      } catch (err) {\n        throw new Error(\"Invalid format: \" + format);\n      }\n    }\n\n    var tmp;\n    // Handle page orientation\n    if (orientation === \"p\" || orientation === \"portrait\") {\n      orientation = \"p\";\n      if (pageWidth > pageHeight) {\n        tmp = pageWidth;\n        pageWidth = pageHeight;\n        pageHeight = tmp;\n      }\n    } else if (orientation === \"l\" || orientation === \"landscape\") {\n      orientation = \"l\";\n      if (pageHeight > pageWidth) {\n        tmp = pageWidth;\n        pageWidth = pageHeight;\n        pageHeight = tmp;\n      }\n    } else {\n      throw \"Invalid orientation: \" + orientation;\n    }\n\n    // Return information (k is the unit conversion ratio from pts)\n    var info = {\n      width: pageWidth,\n      height: pageHeight,\n      unit: unit,\n      k: k,\n      orientation: orientation\n    };\n    return info;\n  };\n\n  /**\n   * @typedef FontFace\n   *\n   * The font-face type implements an interface similar to that of the font-face CSS rule,\n   * and is used by jsPDF to match fonts when the font property of CanvasRenderingContext2D\n   * is updated.\n   *\n   * All properties expect values similar to those in the font-face CSS rule. A difference\n   * is the font-family, which do not need to be enclosed in double-quotes when containing\n   * spaces like in CSS.\n   *\n   * @property {string} family The name of the font-family.\n   * @property {string|undefined} style The style that this font-face defines, e.g. 'italic'.\n   * @property {string|number|undefined} weight The weight of the font, either as a string or a number (400, 500, 600, e.g.)\n   * @property {string|undefined} stretch The stretch of the font, e.g. condensed, normal, expanded.\n   * @property {Object[]} src A list of URLs from where fonts of various formats can be fetched.\n   * @property {string} [src] url A URL to a font of a specific format.\n   * @property {string} [src] format Format of the font referenced by the URL.\n   */\n\n  /**\n   * Generate a PDF from an HTML element or string using.\n   *\n   * @name html\n   * @function\n   * @param {HTMLElement|string} source The source HTMLElement or a string containing HTML.\n   * @param {Object} [options] Collection of settings\n   * @param {function} [options.callback] The mandatory callback-function gets as first parameter the current jsPDF instance\n   * @param {(number|number[])=} [options.margin] Page margins [top, right, bottom, left]. Default is 0.\n   * @param {(boolean|'slice'|'text')=} [options.autoPaging] The auto paging mode.\n   * <ul>\n   * <li>\n   *   <code>false</code>: Auto paging is disabled.\n   * </li>\n   * <li>\n   *   <code>true</code> or <code>'slice'</code>: Will cut shapes or text chunks across page breaks. Will possibly\n   *   slice text in half, making it difficult to read.\n   * </li>\n   * <li>\n   *   <code>'text'</code>: Trys not to cut text in half across page breaks. Works best for documents consisting\n   *   mostly of a single column of text.\n   * </li>\n   * </ul>\n   * Default is <code>true</code>.\n   * @param {string} [options.filename] name of the file\n   * @param {HTMLOptionImage} [options.image] image settings when converting HTML to image\n   * @param {Html2CanvasOptions} [options.html2canvas] html2canvas options\n   * @param {FontFace[]} [options.fontFaces] A list of font-faces to match when resolving fonts. Fonts will be added to the PDF based on the specified URL. If omitted, the font match algorithm falls back to old algorithm.\n   * @param {jsPDF} [options.jsPDF] jsPDF instance\n   * @param {number=} [options.x] x position on the PDF document in jsPDF units.\n   * @param {number=} [options.y] y position on the PDF document in jsPDF units.\n   * @param {number=} [options.width] The target width in the PDF document in jsPDF units. The rendered element will be\n   * scaled such that it fits into the specified width. Has no effect if either the <code>html2canvas.scale<code> is\n   * specified or the <code>windowWidth</code> option is NOT specified.\n   * @param {number=} [options.windowWidth] The window width in CSS pixels. In contrast to the\n   * <code>html2canvas.windowWidth</code> option, this option affects the actual container size while rendering and\n   * does NOT affect CSS media queries. This option only has an effect, if the <code>width<code> option is also specified.\n   *\n   * @example\n   * var doc = new jsPDF();\n   *\n   * doc.html(document.body, {\n   *    callback: function (doc) {\n   *      doc.save();\n   *    },\n   *    x: 10,\n   *    y: 10\n   * });\n   */\n  jsPDFAPI.html = function(src, options) {\n    \"use strict\";\n\n    options = options || {};\n    options.callback = options.callback || function() {};\n    options.html2canvas = options.html2canvas || {};\n    options.html2canvas.canvas = options.html2canvas.canvas || this.canvas;\n    options.jsPDF = options.jsPDF || this;\n    options.fontFaces = options.fontFaces\n      ? options.fontFaces.map(normalizeFontFace)\n      : null;\n\n    // Create a new worker with the given options.\n    var worker = new Worker(options);\n\n    if (!options.worker) {\n      // If worker is not set to true, perform the traditional 'simple' operation.\n      return worker.from(src).doCallback();\n    } else {\n      // Otherwise, return the worker for new Promise-based operation.\n      return worker;\n    }\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Outline PlugIn\n *\n * Generates a PDF Outline\n * @name outline\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var namesOid;\n  //var destsGoto = [];\n\n  jsPDFAPI.events.push([\n    \"postPutResources\",\n    function() {\n      var pdf = this;\n      var rx = /^(\\d+) 0 obj$/;\n\n      // Write action goto objects for each page\n      // this.outline.destsGoto = [];\n      // for (var i = 0; i < totalPages; i++) {\n      // var id = pdf.internal.newObject();\n      // this.outline.destsGoto.push(id);\n      // pdf.internal.write(\"<</D[\" + (i * 2 + 3) + \" 0 R /XYZ null\n      // null null]/S/GoTo>> endobj\");\n      // }\n      //\n      // for (var i = 0; i < dests.length; i++) {\n      // pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0\n      // R\");\n      // }\n      //\n      if (this.outline.root.children.length > 0) {\n        var lines = pdf.outline.render().split(/\\r\\n/);\n        for (var i = 0; i < lines.length; i++) {\n          var line = lines[i];\n          var m = rx.exec(line);\n          if (m != null) {\n            var oid = m[1];\n            pdf.internal.newObjectDeferredBegin(oid, false);\n          }\n          pdf.internal.write(line);\n        }\n      }\n\n      // This code will write named destination for each page reference\n      // (page_1, etc)\n      if (this.outline.createNamedDestinations) {\n        var totalPages = this.internal.pages.length;\n        // WARNING: this assumes jsPDF starts on page 3 and pageIDs\n        // follow 5, 7, 9, etc\n        // Write destination objects for each page\n        var dests = [];\n        for (var i = 0; i < totalPages; i++) {\n          var id = pdf.internal.newObject();\n          dests.push(id);\n          var info = pdf.internal.getPageInfo(i + 1);\n          pdf.internal.write(\n            \"<< /D[\" + info.objId + \" 0 R /XYZ null null null]>> endobj\"\n          );\n        }\n\n        // assign a name for each destination\n        var names2Oid = pdf.internal.newObject();\n        pdf.internal.write(\"<< /Names [ \");\n        for (var i = 0; i < dests.length; i++) {\n          pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0 R\");\n        }\n        pdf.internal.write(\" ] >>\", \"endobj\");\n\n        // var kids = pdf.internal.newObject();\n        // pdf.internal.write('<< /Kids [ ' + names2Oid + ' 0 R');\n        // pdf.internal.write(' ] >>', 'endobj');\n\n        namesOid = pdf.internal.newObject();\n        pdf.internal.write(\"<< /Dests \" + names2Oid + \" 0 R\");\n        pdf.internal.write(\">>\", \"endobj\");\n      }\n    }\n  ]);\n\n  jsPDFAPI.events.push([\n    \"putCatalog\",\n    function() {\n      var pdf = this;\n      if (pdf.outline.root.children.length > 0) {\n        pdf.internal.write(\n          \"/Outlines\",\n          this.outline.makeRef(this.outline.root)\n        );\n        if (this.outline.createNamedDestinations) {\n          pdf.internal.write(\"/Names \" + namesOid + \" 0 R\");\n        }\n        // Open with Bookmarks showing\n        // pdf.internal.write(\"/PageMode /UseOutlines\");\n      }\n    }\n  ]);\n\n  jsPDFAPI.events.push([\n    \"initialized\",\n    function() {\n      var pdf = this;\n\n      pdf.outline = {\n        createNamedDestinations: false,\n        root: {\n          children: []\n        }\n      };\n\n      /**\n       * Options: pageNumber\n       */\n      pdf.outline.add = function(parent, title, options) {\n        var item = {\n          title: title,\n          options: options,\n          children: []\n        };\n        if (parent == null) {\n          parent = this.root;\n        }\n        parent.children.push(item);\n        return item;\n      };\n\n      pdf.outline.render = function() {\n        this.ctx = {};\n        this.ctx.val = \"\";\n        this.ctx.pdf = pdf;\n\n        this.genIds_r(this.root);\n        this.renderRoot(this.root);\n        this.renderItems(this.root);\n\n        return this.ctx.val;\n      };\n\n      pdf.outline.genIds_r = function(node) {\n        node.id = pdf.internal.newObjectDeferred();\n        for (var i = 0; i < node.children.length; i++) {\n          this.genIds_r(node.children[i]);\n        }\n      };\n\n      pdf.outline.renderRoot = function(node) {\n        this.objStart(node);\n        this.line(\"/Type /Outlines\");\n        if (node.children.length > 0) {\n          this.line(\"/First \" + this.makeRef(node.children[0]));\n          this.line(\n            \"/Last \" + this.makeRef(node.children[node.children.length - 1])\n          );\n        }\n        this.line(\n          \"/Count \" +\n            this.count_r(\n              {\n                count: 0\n              },\n              node\n            )\n        );\n        this.objEnd();\n      };\n\n      pdf.outline.renderItems = function(node) {\n        var getVerticalCoordinateString = this.ctx.pdf.internal\n          .getVerticalCoordinateString;\n        for (var i = 0; i < node.children.length; i++) {\n          var item = node.children[i];\n          this.objStart(item);\n\n          this.line(\"/Title \" + this.makeString(item.title));\n\n          this.line(\"/Parent \" + this.makeRef(node));\n          if (i > 0) {\n            this.line(\"/Prev \" + this.makeRef(node.children[i - 1]));\n          }\n          if (i < node.children.length - 1) {\n            this.line(\"/Next \" + this.makeRef(node.children[i + 1]));\n          }\n          if (item.children.length > 0) {\n            this.line(\"/First \" + this.makeRef(item.children[0]));\n            this.line(\n              \"/Last \" + this.makeRef(item.children[item.children.length - 1])\n            );\n          }\n\n          var count = (this.count = this.count_r(\n            {\n              count: 0\n            },\n            item\n          ));\n          if (count > 0) {\n            this.line(\"/Count \" + count);\n          }\n\n          if (item.options) {\n            if (item.options.pageNumber) {\n              // Explicit Destination\n              //WARNING this assumes page ids are 3,5,7, etc.\n              var info = pdf.internal.getPageInfo(item.options.pageNumber);\n              this.line(\n                \"/Dest \" +\n                  \"[\" +\n                  info.objId +\n                  \" 0 R /XYZ 0 \" +\n                  getVerticalCoordinateString(0) +\n                  \" 0]\"\n              );\n              // this line does not work on all clients (pageNumber instead of page ref)\n              //this.line('/Dest ' + '[' + (item.options.pageNumber - 1) + ' /XYZ 0 ' + this.ctx.pdf.internal.pageSize.getHeight() + ' 0]');\n\n              // Named Destination\n              // this.line('/Dest (page_' + (item.options.pageNumber) + ')');\n\n              // Action Destination\n              // var id = pdf.internal.newObject();\n              // pdf.internal.write('<</D[' + (item.options.pageNumber - 1) + ' /XYZ null null null]/S/GoTo>> endobj');\n              // this.line('/A ' + id + ' 0 R' );\n            }\n          }\n          this.objEnd();\n        }\n        for (var z = 0; z < node.children.length; z++) {\n          this.renderItems(node.children[z]);\n        }\n      };\n\n      pdf.outline.line = function(text) {\n        this.ctx.val += text + \"\\r\\n\";\n      };\n\n      pdf.outline.makeRef = function(node) {\n        return node.id + \" 0 R\";\n      };\n\n      pdf.outline.makeString = function(val) {\n        return \"(\" + pdf.internal.pdfEscape(val) + \")\";\n      };\n\n      pdf.outline.objStart = function(node) {\n        this.ctx.val += \"\\r\\n\" + node.id + \" 0 obj\" + \"\\r\\n<<\\r\\n\";\n      };\n\n      pdf.outline.objEnd = function() {\n        this.ctx.val += \">> \\r\\n\" + \"endobj\" + \"\\r\\n\";\n      };\n\n      pdf.outline.count_r = function(ctx, node) {\n        for (var i = 0; i < node.children.length; i++) {\n          ctx.count++;\n          this.count_r(ctx, node.children[i]);\n        }\n        return ctx.count;\n      };\n    }\n  ]);\n\n  return this;\n})(jsPDF.API);\n", "/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF jpeg Support PlugIn\n *\n * @name jpeg_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * 0xc0 (SOF) Huffman  - Baseline DCT\n   * 0xc1 (SOF) Huffman  - Extended sequential DCT\n   * 0xc2 Progressive DCT (SOF2)\n   * 0xc3 Spatial (sequential) lossless (SOF3)\n   * 0xc4 Differential sequential DCT (SOF5)\n   * 0xc5 Differential progressive DCT (SOF6)\n   * 0xc6 Differential spatial (SOF7)\n   * 0xc7\n   */\n  var markers = [0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7];\n\n  //takes a string imgData containing the raw bytes of\n  //a jpeg image and returns [width, height]\n  //Algorithm from: http://www.64lines.com/jpeg-width-height\n  var getJpegInfo = function(imgData) {\n    var width, height, numcomponents;\n    var blockLength = imgData.charCodeAt(4) * 256 + imgData.charCodeAt(5);\n    var len = imgData.length;\n    var result = { width: 0, height: 0, numcomponents: 1 };\n    for (var i = 4; i < len; i += 2) {\n      i += blockLength;\n      if (markers.indexOf(imgData.charCodeAt(i + 1)) !== -1) {\n        height = imgData.charCodeAt(i + 5) * 256 + imgData.charCodeAt(i + 6);\n        width = imgData.charCodeAt(i + 7) * 256 + imgData.charCodeAt(i + 8);\n        numcomponents = imgData.charCodeAt(i + 9);\n        result = { width: width, height: height, numcomponents: numcomponents };\n        break;\n      } else {\n        blockLength =\n          imgData.charCodeAt(i + 2) * 256 + imgData.charCodeAt(i + 3);\n      }\n    }\n    return result;\n  };\n\n  /**\n   * @ignore\n   */\n  jsPDFAPI.processJPEG = function(\n    data,\n    index,\n    alias,\n    compression,\n    dataAsBinaryString,\n    colorSpace\n  ) {\n    var filter = this.decode.DCT_DECODE,\n      bpc = 8,\n      dims,\n      result = null;\n\n    if (\n      typeof data === \"string\" ||\n      this.__addimage__.isArrayBuffer(data) ||\n      this.__addimage__.isArrayBufferView(data)\n    ) {\n      // if we already have a stored binary string rep use that\n      data = dataAsBinaryString || data;\n      data = this.__addimage__.isArrayBuffer(data)\n        ? new Uint8Array(data)\n        : data;\n      data = this.__addimage__.isArrayBufferView(data)\n        ? this.__addimage__.arrayBufferToBinaryString(data)\n        : data;\n\n      dims = getJpegInfo(data);\n      switch (dims.numcomponents) {\n        case 1:\n          colorSpace = this.color_spaces.DEVICE_GRAY;\n          break;\n        case 4:\n          colorSpace = this.color_spaces.DEVICE_CMYK;\n          break;\n        case 3:\n          colorSpace = this.color_spaces.DEVICE_RGB;\n          break;\n      }\n\n      result = {\n        data: data,\n        width: dims.width,\n        height: dims.height,\n        colorSpace: colorSpace,\n        bitsPerComponent: bpc,\n        filter: filter,\n        index: index,\n        alias: alias\n      };\n    }\n    return result;\n  };\n})(jsPDF.API);\n", "// Generated by CoffeeScript 1.4.0\n\n/**\n * @license\n * PNG.js\n * Copyright (c) 2011 Devon Govett\n * MIT LICENSE\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { unzlibSync } from \"./fflate.js\";\nimport { globalObject } from \"./globalObject.js\";\n\nvar PNG = (function() {\n  var APNG_BLEND_OP_OVER,\n    APNG_BLEND_OP_SOURCE,\n    APNG_DISPOSE_OP_BACKGROUND,\n    APNG_DISPOSE_OP_NONE,\n    APNG_DISPOSE_OP_PREVIOUS,\n    makeImage,\n    scratchCanvas,\n    scratchCtx;\n\n  APNG_DISPOSE_OP_NONE = 0;\n\n  APNG_DISPOSE_OP_BACKGROUND = 1;\n\n  APNG_DISPOSE_OP_PREVIOUS = 2;\n\n  APNG_BLEND_OP_SOURCE = 0;\n\n  APNG_BLEND_OP_OVER = 1;\n\n  function PNG(data) {\n    var chunkSize,\n      colors,\n      palLen,\n      delayDen,\n      delayNum,\n      frame,\n      i,\n      index,\n      key,\n      section,\n      palShort,\n      text,\n      _i,\n      _j,\n      _ref;\n    this.data = data;\n    this.pos = 8;\n    this.palette = [];\n    this.imgData = [];\n    this.transparency = {};\n    this.animation = null;\n    this.text = {};\n    frame = null;\n    while (true) {\n      chunkSize = this.readUInt32();\n      section = function() {\n        var _i, _results;\n        _results = [];\n        for (i = _i = 0; _i < 4; i = ++_i) {\n          _results.push(String.fromCharCode(this.data[this.pos++]));\n        }\n        return _results;\n      }\n        .call(this)\n        .join(\"\");\n      switch (section) {\n        case \"IHDR\":\n          this.width = this.readUInt32();\n          this.height = this.readUInt32();\n          this.bits = this.data[this.pos++];\n          this.colorType = this.data[this.pos++];\n          this.compressionMethod = this.data[this.pos++];\n          this.filterMethod = this.data[this.pos++];\n          this.interlaceMethod = this.data[this.pos++];\n          break;\n        case \"acTL\":\n          this.animation = {\n            numFrames: this.readUInt32(),\n            numPlays: this.readUInt32() || Infinity,\n            frames: []\n          };\n          break;\n        case \"PLTE\":\n          this.palette = this.read(chunkSize);\n          break;\n        case \"fcTL\":\n          if (frame) {\n            this.animation.frames.push(frame);\n          }\n          this.pos += 4;\n          frame = {\n            width: this.readUInt32(),\n            height: this.readUInt32(),\n            xOffset: this.readUInt32(),\n            yOffset: this.readUInt32()\n          };\n          delayNum = this.readUInt16();\n          delayDen = this.readUInt16() || 100;\n          frame.delay = (1000 * delayNum) / delayDen;\n          frame.disposeOp = this.data[this.pos++];\n          frame.blendOp = this.data[this.pos++];\n          frame.data = [];\n          break;\n        case \"IDAT\":\n        case \"fdAT\":\n          if (section === \"fdAT\") {\n            this.pos += 4;\n            chunkSize -= 4;\n          }\n          data = (frame != null ? frame.data : void 0) || this.imgData;\n          for (\n            i = _i = 0;\n            0 <= chunkSize ? _i < chunkSize : _i > chunkSize;\n            i = 0 <= chunkSize ? ++_i : --_i\n          ) {\n            data.push(this.data[this.pos++]);\n          }\n          break;\n        case \"tRNS\":\n          this.transparency = {};\n          switch (this.colorType) {\n            case 3:\n              palLen = this.palette.length / 3;\n              this.transparency.indexed = this.read(chunkSize);\n              if (this.transparency.indexed.length > palLen)\n                throw new Error(\"More transparent colors than palette size\");\n              /*\n               * According to the PNG spec trns should be increased to the same size as palette if shorter\n               */\n              //palShort = 255 - this.transparency.indexed.length;\n              palShort = palLen - this.transparency.indexed.length;\n              if (palShort > 0) {\n                for (\n                  i = _j = 0;\n                  0 <= palShort ? _j < palShort : _j > palShort;\n                  i = 0 <= palShort ? ++_j : --_j\n                ) {\n                  this.transparency.indexed.push(255);\n                }\n              }\n              break;\n            case 0:\n              this.transparency.grayscale = this.read(chunkSize)[0];\n              break;\n            case 2:\n              this.transparency.rgb = this.read(chunkSize);\n          }\n          break;\n        case \"tEXt\":\n          text = this.read(chunkSize);\n          index = text.indexOf(0);\n          key = String.fromCharCode.apply(String, text.slice(0, index));\n          this.text[key] = String.fromCharCode.apply(\n            String,\n            text.slice(index + 1)\n          );\n          break;\n        case \"IEND\":\n          if (frame) {\n            this.animation.frames.push(frame);\n          }\n          this.colors = function() {\n            switch (this.colorType) {\n              case 0:\n              case 3:\n              case 4:\n                return 1;\n              case 2:\n              case 6:\n                return 3;\n            }\n          }.call(this);\n          this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;\n          colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n          this.pixelBitlength = this.bits * colors;\n          this.colorSpace = function() {\n            switch (this.colors) {\n              case 1:\n                return \"DeviceGray\";\n              case 3:\n                return \"DeviceRGB\";\n            }\n          }.call(this);\n          this.imgData = new Uint8Array(this.imgData);\n          return;\n        default:\n          this.pos += chunkSize;\n      }\n      this.pos += 4;\n      if (this.pos > this.data.length) {\n        throw new Error(\"Incomplete or corrupt PNG file\");\n      }\n    }\n  }\n\n  PNG.prototype.read = function(bytes) {\n    var i, _i, _results;\n    _results = [];\n    for (\n      i = _i = 0;\n      0 <= bytes ? _i < bytes : _i > bytes;\n      i = 0 <= bytes ? ++_i : --_i\n    ) {\n      _results.push(this.data[this.pos++]);\n    }\n    return _results;\n  };\n\n  PNG.prototype.readUInt32 = function() {\n    var b1, b2, b3, b4;\n    b1 = this.data[this.pos++] << 24;\n    b2 = this.data[this.pos++] << 16;\n    b3 = this.data[this.pos++] << 8;\n    b4 = this.data[this.pos++];\n    return b1 | b2 | b3 | b4;\n  };\n\n  PNG.prototype.readUInt16 = function() {\n    var b1, b2;\n    b1 = this.data[this.pos++] << 8;\n    b2 = this.data[this.pos++];\n    return b1 | b2;\n  };\n\n  PNG.prototype.decodePixels = function(data) {\n    var pixelBytes = this.pixelBitlength / 8;\n    var fullPixels = new Uint8Array(this.width * this.height * pixelBytes);\n    var pos = 0;\n    var _this = this;\n\n    if (data == null) {\n      data = this.imgData;\n    }\n    if (data.length === 0) {\n      return new Uint8Array(0);\n    }\n\n    data = unzlibSync(data);\n    function pass(x0, y0, dx, dy) {\n      var abyte,\n        c,\n        col,\n        i,\n        left,\n        length,\n        p,\n        pa,\n        paeth,\n        pb,\n        pc,\n        pixels,\n        row,\n        scanlineLength,\n        upper,\n        upperLeft,\n        _i,\n        _j,\n        _k,\n        _l,\n        _m;\n      var w = Math.ceil((_this.width - x0) / dx),\n        h = Math.ceil((_this.height - y0) / dy);\n      var isFull = _this.width == w && _this.height == h;\n      scanlineLength = pixelBytes * w;\n      pixels = isFull ? fullPixels : new Uint8Array(scanlineLength * h);\n      length = data.length;\n      row = 0;\n      c = 0;\n      while (row < h && pos < length) {\n        switch (data[pos++]) {\n          case 0:\n            for (i = _i = 0; _i < scanlineLength; i = _i += 1) {\n              pixels[c++] = data[pos++];\n            }\n            break;\n          case 1:\n            for (i = _j = 0; _j < scanlineLength; i = _j += 1) {\n              abyte = data[pos++];\n              left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n              pixels[c++] = (abyte + left) % 256;\n            }\n            break;\n          case 2:\n            for (i = _k = 0; _k < scanlineLength; i = _k += 1) {\n              abyte = data[pos++];\n              col = (i - (i % pixelBytes)) / pixelBytes;\n              upper =\n                row &&\n                pixels[\n                  (row - 1) * scanlineLength +\n                    col * pixelBytes +\n                    (i % pixelBytes)\n                ];\n              pixels[c++] = (upper + abyte) % 256;\n            }\n            break;\n          case 3:\n            for (i = _l = 0; _l < scanlineLength; i = _l += 1) {\n              abyte = data[pos++];\n              col = (i - (i % pixelBytes)) / pixelBytes;\n              left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n              upper =\n                row &&\n                pixels[\n                  (row - 1) * scanlineLength +\n                    col * pixelBytes +\n                    (i % pixelBytes)\n                ];\n              pixels[c++] = (abyte + Math.floor((left + upper) / 2)) % 256;\n            }\n            break;\n          case 4:\n            for (i = _m = 0; _m < scanlineLength; i = _m += 1) {\n              abyte = data[pos++];\n              col = (i - (i % pixelBytes)) / pixelBytes;\n              left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n              if (row === 0) {\n                upper = upperLeft = 0;\n              } else {\n                upper =\n                  pixels[\n                    (row - 1) * scanlineLength +\n                      col * pixelBytes +\n                      (i % pixelBytes)\n                  ];\n                upperLeft =\n                  col &&\n                  pixels[\n                    (row - 1) * scanlineLength +\n                      (col - 1) * pixelBytes +\n                      (i % pixelBytes)\n                  ];\n              }\n              p = left + upper - upperLeft;\n              pa = Math.abs(p - left);\n              pb = Math.abs(p - upper);\n              pc = Math.abs(p - upperLeft);\n              if (pa <= pb && pa <= pc) {\n                paeth = left;\n              } else if (pb <= pc) {\n                paeth = upper;\n              } else {\n                paeth = upperLeft;\n              }\n              pixels[c++] = (abyte + paeth) % 256;\n            }\n            break;\n          default:\n            throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n        }\n        if (!isFull) {\n          var fullPos = ((y0 + row * dy) * _this.width + x0) * pixelBytes;\n          var partPos = row * scanlineLength;\n          for (i = 0; i < w; i += 1) {\n            for (var j = 0; j < pixelBytes; j += 1)\n              fullPixels[fullPos++] = pixels[partPos++];\n            fullPos += (dx - 1) * pixelBytes;\n          }\n        }\n        row++;\n      }\n    }\n    if (_this.interlaceMethod == 1) {\n      /*\n          1 6 4 6 2 6 4 6\n          7 7 7 7 7 7 7 7\n          5 6 5 6 5 6 5 6\n          7 7 7 7 7 7 7 7\n          3 6 4 6 3 6 4 6\n          7 7 7 7 7 7 7 7\n          5 6 5 6 5 6 5 6\n          7 7 7 7 7 7 7 7\n        */\n      pass(0, 0, 8, 8); // 1\n      /* NOTE these seem to follow the pattern:\n       * pass(x, 0, 2*x, 2*x);\n       * pass(0, x,   x, 2*x);\n       * with x being 4, 2, 1.\n       */\n      pass(4, 0, 8, 8); // 2\n      pass(0, 4, 4, 8); // 3\n\n      pass(2, 0, 4, 4); // 4\n      pass(0, 2, 2, 4); // 5\n\n      pass(1, 0, 2, 2); // 6\n      pass(0, 1, 1, 2); // 7\n    } else {\n      pass(0, 0, 1, 1);\n    }\n    return fullPixels;\n  };\n\n  PNG.prototype.decodePalette = function() {\n    var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;\n    palette = this.palette;\n    transparency = this.transparency.indexed || [];\n    ret = new Uint8Array((transparency.length || 0) + palette.length);\n    pos = 0;\n    length = palette.length;\n    c = 0;\n    for (i = _i = 0, _ref = length; _i < _ref; i = _i += 3) {\n      ret[pos++] = palette[i];\n      ret[pos++] = palette[i + 1];\n      ret[pos++] = palette[i + 2];\n      ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;\n    }\n    return ret;\n  };\n\n  PNG.prototype.copyToImageData = function(imageData, pixels) {\n    var alpha, colors, data, i, input, j, k, length, palette, v, _ref;\n    colors = this.colors;\n    palette = null;\n    alpha = this.hasAlphaChannel;\n    if (this.palette.length) {\n      palette =\n        (_ref = this._decodedPalette) != null\n          ? _ref\n          : (this._decodedPalette = this.decodePalette());\n      colors = 4;\n      alpha = true;\n    }\n    data = imageData.data || imageData;\n    length = data.length;\n    input = palette || pixels;\n    i = j = 0;\n    if (colors === 1) {\n      while (i < length) {\n        k = palette ? pixels[i / 4] * 4 : j;\n        v = input[k++];\n        data[i++] = v;\n        data[i++] = v;\n        data[i++] = v;\n        data[i++] = alpha ? input[k++] : 255;\n        j = k;\n      }\n    } else {\n      while (i < length) {\n        k = palette ? pixels[i / 4] * 4 : j;\n        data[i++] = input[k++];\n        data[i++] = input[k++];\n        data[i++] = input[k++];\n        data[i++] = alpha ? input[k++] : 255;\n        j = k;\n      }\n    }\n  };\n\n  PNG.prototype.decode = function() {\n    var ret;\n    ret = new Uint8Array(this.width * this.height * 4);\n    this.copyToImageData(ret, this.decodePixels());\n    return ret;\n  };\n\n  var hasBrowserCanvas = function() {\n    if (Object.prototype.toString.call(globalObject) === \"[object Window]\") {\n      try {\n        scratchCanvas = globalObject.document.createElement(\"canvas\");\n        scratchCtx = scratchCanvas.getContext(\"2d\");\n      } catch (e) {\n        return false;\n      }\n      return true;\n    }\n    return false;\n  };\n\n  hasBrowserCanvas();\n\n  makeImage = function(imageData) {\n    if (hasBrowserCanvas() === true) {\n      var img;\n      scratchCtx.width = imageData.width;\n      scratchCtx.height = imageData.height;\n      scratchCtx.clearRect(0, 0, imageData.width, imageData.height);\n      scratchCtx.putImageData(imageData, 0, 0);\n      img = new Image();\n      img.src = scratchCanvas.toDataURL();\n      return img;\n    }\n    throw new Error(\"This method requires a Browser with Canvas-capability.\");\n  };\n\n  PNG.prototype.decodeFrames = function(ctx) {\n    var frame, i, imageData, pixels, _i, _len, _ref, _results;\n    if (!this.animation) {\n      return;\n    }\n    _ref = this.animation.frames;\n    _results = [];\n    for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n      frame = _ref[i];\n      imageData = ctx.createImageData(frame.width, frame.height);\n      pixels = this.decodePixels(new Uint8Array(frame.data));\n      this.copyToImageData(imageData, pixels);\n      frame.imageData = imageData;\n      _results.push((frame.image = makeImage(imageData)));\n    }\n    return _results;\n  };\n\n  PNG.prototype.renderFrame = function(ctx, number) {\n    var frame, frames, prev;\n    frames = this.animation.frames;\n    frame = frames[number];\n    prev = frames[number - 1];\n    if (number === 0) {\n      ctx.clearRect(0, 0, this.width, this.height);\n    }\n    if (\n      (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_BACKGROUND\n    ) {\n      ctx.clearRect(prev.xOffset, prev.yOffset, prev.width, prev.height);\n    } else if (\n      (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_PREVIOUS\n    ) {\n      ctx.putImageData(prev.imageData, prev.xOffset, prev.yOffset);\n    }\n    if (frame.blendOp === APNG_BLEND_OP_SOURCE) {\n      ctx.clearRect(frame.xOffset, frame.yOffset, frame.width, frame.height);\n    }\n    return ctx.drawImage(frame.image, frame.xOffset, frame.yOffset);\n  };\n\n  PNG.prototype.animate = function(ctx) {\n    var doFrame,\n      frameNumber,\n      frames,\n      numFrames,\n      numPlays,\n      _ref,\n      _this = this;\n    frameNumber = 0;\n    (_ref = this.animation),\n      (numFrames = _ref.numFrames),\n      (frames = _ref.frames),\n      (numPlays = _ref.numPlays);\n    return (doFrame = function() {\n      var f, frame;\n      f = frameNumber++ % numFrames;\n      frame = frames[f];\n      _this.renderFrame(ctx, f);\n      if (numFrames > 1 && frameNumber / numFrames < numPlays) {\n        return (_this.animation._timeout = setTimeout(doFrame, frame.delay));\n      }\n    })();\n  };\n\n  PNG.prototype.stopAnimation = function() {\n    var _ref;\n    return clearTimeout(\n      (_ref = this.animation) != null ? _ref._timeout : void 0\n    );\n  };\n\n  PNG.prototype.render = function(canvas) {\n    var ctx, data;\n    if (canvas._png) {\n      canvas._png.stopAnimation();\n    }\n    canvas._png = this;\n    canvas.width = this.width;\n    canvas.height = this.height;\n    ctx = canvas.getContext(\"2d\");\n    if (this.animation) {\n      this.decodeFrames(ctx);\n      return this.animate(ctx);\n    } else {\n      data = ctx.createImageData(this.width, this.height);\n      this.copyToImageData(data, this.decodePixels());\n      return ctx.putImageData(data, 0, 0);\n    }\n  };\n\n  return PNG;\n})();\n\nexport { PNG };\n", "/** @license\n * MIT license.\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *               2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF split_text_to_size plugin\n *\n * @name split_text_to_size\n * @module\n */\n(function(API) {\n  \"use strict\";\n  /**\n   * Returns an array of length matching length of the 'word' string, with each\n   * cell occupied by the width of the char in that position.\n   *\n   * @name getCharWidthsArray\n   * @function\n   * @param {string} text\n   * @param {Object} options\n   * @returns {Array}\n   */\n  var getCharWidthsArray = (API.getCharWidthsArray = function(text, options) {\n    options = options || {};\n\n    var activeFont = options.font || this.internal.getFont();\n    var fontSize = options.fontSize || this.internal.getFontSize();\n    var charSpace = options.charSpace || this.internal.getCharSpace();\n\n    var widths = options.widths\n      ? options.widths\n      : activeFont.metadata.Unicode.widths;\n    var widthsFractionOf = widths.fof ? widths.fof : 1;\n    var kerning = options.kerning\n      ? options.kerning\n      : activeFont.metadata.Unicode.kerning;\n    var kerningFractionOf = kerning.fof ? kerning.fof : 1;\n    var doKerning = options.doKerning === false ? false : true;\n    var kerningValue = 0;\n\n    var i;\n    var length = text.length;\n    var char_code;\n    var prior_char_code = 0; //for kerning\n    var default_char_width = widths[0] || widthsFractionOf;\n    var output = [];\n\n    for (i = 0; i < length; i++) {\n      char_code = text.charCodeAt(i);\n\n      if (typeof activeFont.metadata.widthOfString === \"function\") {\n        output.push(\n          (activeFont.metadata.widthOfGlyph(\n            activeFont.metadata.characterToGlyph(char_code)\n          ) +\n            charSpace * (1000 / fontSize) || 0) / 1000\n        );\n      } else {\n        if (\n          doKerning &&\n          typeof kerning[char_code] === \"object\" &&\n          !isNaN(parseInt(kerning[char_code][prior_char_code], 10))\n        ) {\n          kerningValue =\n            kerning[char_code][prior_char_code] / kerningFractionOf;\n        } else {\n          kerningValue = 0;\n        }\n        output.push(\n          (widths[char_code] || default_char_width) / widthsFractionOf +\n            kerningValue\n        );\n      }\n      prior_char_code = char_code;\n    }\n\n    return output;\n  });\n\n  /**\n   * Returns a widths of string in a given font, if the font size is set as 1 point.\n   *\n   * In other words, this is \"proportional\" value. For 1 unit of font size, the length\n   * of the string will be that much.\n   *\n   * Multiply by font size to get actual width in *points*\n   * Then divide by 72 to get inches or divide by (72/25.6) to get 'mm' etc.\n   *\n   * @name getStringUnitWidth\n   * @public\n   * @function\n   * @param {string} text\n   * @param {string} options\n   * @returns {number} result\n   */\n  var getStringUnitWidth = (API.getStringUnitWidth = function(text, options) {\n    options = options || {};\n\n    var fontSize = options.fontSize || this.internal.getFontSize();\n    var font = options.font || this.internal.getFont();\n    var charSpace = options.charSpace || this.internal.getCharSpace();\n    var result = 0;\n\n    if (API.processArabic) {\n      text = API.processArabic(text);\n    }\n\n    if (typeof font.metadata.widthOfString === \"function\") {\n      result =\n        font.metadata.widthOfString(text, fontSize, charSpace) / fontSize;\n    } else {\n      result = getCharWidthsArray\n        .apply(this, arguments)\n        .reduce(function(pv, cv) {\n          return pv + cv;\n        }, 0);\n    }\n    return result;\n  });\n\n  /**\n  returns array of lines\n  */\n  var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {\n    var answer = [];\n\n    // 1st, chop off the piece that can fit on the hanging line.\n    var i = 0,\n      l = word.length,\n      workingLen = 0;\n    while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {\n      workingLen += widths_array[i];\n      i++;\n    }\n    // this is first line.\n    answer.push(word.slice(0, i));\n\n    // 2nd. Split the rest into maxLen pieces.\n    var startOfLine = i;\n    workingLen = 0;\n    while (i !== l) {\n      if (workingLen + widths_array[i] > maxLen) {\n        answer.push(word.slice(startOfLine, i));\n        workingLen = 0;\n        startOfLine = i;\n      }\n      workingLen += widths_array[i];\n      i++;\n    }\n    if (startOfLine !== i) {\n      answer.push(word.slice(startOfLine, i));\n    }\n\n    return answer;\n  };\n\n  // Note, all sizing inputs for this function must be in \"font measurement units\"\n  // By default, for PDF, it's \"point\".\n  var splitParagraphIntoLines = function(text, maxlen, options) {\n    // at this time works only on Western scripts, ones with space char\n    // separating the words. Feel free to expand.\n\n    if (!options) {\n      options = {};\n    }\n\n    var line = [],\n      lines = [line],\n      line_length = options.textIndent || 0,\n      separator_length = 0,\n      current_word_length = 0,\n      word,\n      widths_array,\n      words = text.split(\" \"),\n      spaceCharWidth = getCharWidthsArray.apply(this, [\" \", options])[0],\n      i,\n      l,\n      tmp,\n      lineIndent;\n\n    if (options.lineIndent === -1) {\n      lineIndent = words[0].length + 2;\n    } else {\n      lineIndent = options.lineIndent || 0;\n    }\n    if (lineIndent) {\n      var pad = Array(lineIndent).join(\" \"),\n        wrds = [];\n      words.map(function(wrd) {\n        wrd = wrd.split(/\\s*\\n/);\n        if (wrd.length > 1) {\n          wrds = wrds.concat(\n            wrd.map(function(wrd, idx) {\n              return (idx && wrd.length ? \"\\n\" : \"\") + wrd;\n            })\n          );\n        } else {\n          wrds.push(wrd[0]);\n        }\n      });\n      words = wrds;\n      lineIndent = getStringUnitWidth.apply(this, [pad, options]);\n    }\n\n    for (i = 0, l = words.length; i < l; i++) {\n      var force = 0;\n\n      word = words[i];\n      if (lineIndent && word[0] == \"\\n\") {\n        word = word.substr(1);\n        force = 1;\n      }\n      widths_array = getCharWidthsArray.apply(this, [word, options]);\n      current_word_length = widths_array.reduce(function(pv, cv) {\n        return pv + cv;\n      }, 0);\n\n      if (\n        line_length + separator_length + current_word_length > maxlen ||\n        force\n      ) {\n        if (current_word_length > maxlen) {\n          // this happens when you have space-less long URLs for example.\n          // we just chop these to size. We do NOT insert hiphens\n          tmp = splitLongWord.apply(this, [\n            word,\n            widths_array,\n            maxlen - (line_length + separator_length),\n            maxlen\n          ]);\n          // first line we add to existing line object\n          line.push(tmp.shift()); // it's ok to have extra space indicator there\n          // last line we make into new line object\n          line = [tmp.pop()];\n          // lines in the middle we apped to lines object as whole lines\n          while (tmp.length) {\n            lines.push([tmp.shift()]); // single fragment occupies whole line\n          }\n          current_word_length = widths_array\n            .slice(word.length - (line[0] ? line[0].length : 0))\n            .reduce(function(pv, cv) {\n              return pv + cv;\n            }, 0);\n        } else {\n          // just put it on a new line\n          line = [word];\n        }\n\n        // now we attach new line to lines\n        lines.push(line);\n        line_length = current_word_length + lineIndent;\n        separator_length = spaceCharWidth;\n      } else {\n        line.push(word);\n\n        line_length += separator_length + current_word_length;\n        separator_length = spaceCharWidth;\n      }\n    }\n\n    var postProcess;\n    if (lineIndent) {\n      postProcess = function(ln, idx) {\n        return (idx ? pad : \"\") + ln.join(\" \");\n      };\n    } else {\n      postProcess = function(ln) {\n        return ln.join(\" \");\n      };\n    }\n\n    return lines.map(postProcess);\n  };\n\n  /**\n   * Splits a given string into an array of strings. Uses 'size' value\n   * (in measurement units declared as default for the jsPDF instance)\n   * and the font's \"widths\" and \"Kerning\" tables, where available, to\n   * determine display length of a given string for a given font.\n   *\n   * We use character's 100% of unit size (height) as width when Width\n   * table or other default width is not available.\n   *\n   * @name splitTextToSize\n   * @public\n   * @function\n   * @param {string} text Unencoded, regular JavaScript (Unicode, UTF-16 / UCS-2) string.\n   * @param {number} size Nominal number, measured in units default to this instance of jsPDF.\n   * @param {Object} options Optional flags needed for chopper to do the right thing.\n   * @returns {Array} array Array with strings chopped to size.\n   */\n  API.splitTextToSize = function(text, maxlen, options) {\n    \"use strict\";\n\n    options = options || {};\n\n    var fsize = options.fontSize || this.internal.getFontSize(),\n      newOptions = function(options) {\n        var widths = {\n            0: 1\n          },\n          kerning = {};\n\n        if (!options.widths || !options.kerning) {\n          var f = this.internal.getFont(options.fontName, options.fontStyle),\n            encoding = \"Unicode\";\n          // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE\n          // Actual JavaScript-native String's 16bit char codes used.\n          // no multi-byte logic here\n\n          if (f.metadata[encoding]) {\n            return {\n              widths: f.metadata[encoding].widths || widths,\n              kerning: f.metadata[encoding].kerning || kerning\n            };\n          } else {\n            return {\n              font: f.metadata,\n              fontSize: this.internal.getFontSize(),\n              charSpace: this.internal.getCharSpace()\n            };\n          }\n        } else {\n          return {\n            widths: options.widths,\n            kerning: options.kerning\n          };\n        }\n      }.call(this, options);\n\n    // first we split on end-of-line chars\n    var paragraphs;\n    if (Array.isArray(text)) {\n      paragraphs = text;\n    } else {\n      paragraphs = String(text).split(/\\r?\\n/);\n    }\n\n    // now we convert size (max length of line) into \"font size units\"\n    // at present time, the \"font size unit\" is always 'point'\n    // 'proportional' means, \"in proportion to font size\"\n    var fontUnit_maxLen = (1.0 * this.internal.scaleFactor * maxlen) / fsize;\n    // at this time, fsize is always in \"points\" regardless of the default measurement unit of the doc.\n    // this may change in the future?\n    // until then, proportional_maxlen is likely to be in 'points'\n\n    // If first line is to be indented (shorter or longer) than maxLen\n    // we indicate that by using CSS-style \"text-indent\" option.\n    // here it's in font units too (which is likely 'points')\n    // it can be negative (which makes the first line longer than maxLen)\n    newOptions.textIndent = options.textIndent\n      ? (options.textIndent * 1.0 * this.internal.scaleFactor) / fsize\n      : 0;\n    newOptions.lineIndent = options.lineIndent;\n\n    var i,\n      l,\n      output = [];\n    for (i = 0, l = paragraphs.length; i < l; i++) {\n      output = output.concat(\n        splitParagraphIntoLines.apply(this, [\n          paragraphs[i],\n          fontUnit_maxLen,\n          newOptions\n        ])\n      );\n    }\n\n    return output;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * (c) Dean McNamee <dean@gmail.com>, 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression.  It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\n\n\"use strict\";\n\nimport { console } from \"./console.js\";\n\nfunction GifWriter(buf, width, height, gopts) {\n  var p = 0;\n\n  var gopts = gopts === undefined ? {} : gopts;\n  var loop_count = gopts.loop === undefined ? null : gopts.loop;\n  var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n  if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n    throw new Error(\"Width/Height invalid.\");\n\n  function check_palette_and_num_colors(palette) {\n    var num_colors = palette.length;\n    if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1)) {\n      throw new Error(\n        \"Invalid code/color length, must be power of 2 and 2 .. 256.\"\n      );\n    }\n    return num_colors;\n  }\n\n  // - Header.\n  buf[p++] = 0x47;\n  buf[p++] = 0x49;\n  buf[p++] = 0x46; // GIF\n  buf[p++] = 0x38;\n  buf[p++] = 0x39;\n  buf[p++] = 0x61; // 89a\n\n  // Handling of Global Color Table (palette) and background index.\n  var gp_num_colors_pow2 = 0;\n  var background = 0;\n  if (global_palette !== null) {\n    var gp_num_colors = check_palette_and_num_colors(global_palette);\n    while ((gp_num_colors >>= 1)) ++gp_num_colors_pow2;\n    gp_num_colors = 1 << gp_num_colors_pow2;\n    --gp_num_colors_pow2;\n    if (gopts.background !== undefined) {\n      background = gopts.background;\n      if (background >= gp_num_colors)\n        throw new Error(\"Background index out of range.\");\n      // The GIF spec states that a background index of 0 should be ignored, so\n      // this is probably a mistake and you really want to set it to another\n      // slot in the palette.  But actually in the end most browsers, etc end\n      // up ignoring this almost completely (including for dispose background).\n      if (background === 0)\n        throw new Error(\"Background index explicitly passed as 0.\");\n    }\n  }\n\n  // - Logical Screen Descriptor.\n  // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n  buf[p++] = width & 0xff;\n  buf[p++] = (width >> 8) & 0xff;\n  buf[p++] = height & 0xff;\n  buf[p++] = (height >> 8) & 0xff;\n  // NOTE: Indicates 0-bpp original color resolution (unused?).\n  buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2; // Global Color Table Flag. // NOTE: No sort flag (unused?).\n  buf[p++] = background; // Background Color Index.\n  buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n  // - Global Color Table\n  if (global_palette !== null) {\n    for (var i = 0, il = global_palette.length; i < il; ++i) {\n      var rgb = global_palette[i];\n      buf[p++] = (rgb >> 16) & 0xff;\n      buf[p++] = (rgb >> 8) & 0xff;\n      buf[p++] = rgb & 0xff;\n    }\n  }\n\n  if (loop_count !== null) {\n    // Netscape block for looping.\n    if (loop_count < 0 || loop_count > 65535)\n      throw new Error(\"Loop count invalid.\");\n    // Extension code, label, and length.\n    buf[p++] = 0x21;\n    buf[p++] = 0xff;\n    buf[p++] = 0x0b;\n    // NETSCAPE2.0\n    buf[p++] = 0x4e;\n    buf[p++] = 0x45;\n    buf[p++] = 0x54;\n    buf[p++] = 0x53;\n    buf[p++] = 0x43;\n    buf[p++] = 0x41;\n    buf[p++] = 0x50;\n    buf[p++] = 0x45;\n    buf[p++] = 0x32;\n    buf[p++] = 0x2e;\n    buf[p++] = 0x30;\n    // Sub-block\n    buf[p++] = 0x03;\n    buf[p++] = 0x01;\n    buf[p++] = loop_count & 0xff;\n    buf[p++] = (loop_count >> 8) & 0xff;\n    buf[p++] = 0x00; // Terminator.\n  }\n\n  var ended = false;\n\n  this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n    if (ended === true) {\n      --p;\n      ended = false;\n    } // Un-end.\n\n    opts = opts === undefined ? {} : opts;\n\n    // TODO(deanm): Bounds check x, y.  Do they need to be within the virtual\n    // canvas width/height, I imagine?\n    if (x < 0 || y < 0 || x > 65535 || y > 65535)\n      throw new Error(\"x/y invalid.\");\n\n    if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n      throw new Error(\"Width/Height invalid.\");\n\n    if (indexed_pixels.length < w * h)\n      throw new Error(\"Not enough pixels for the frame size.\");\n\n    var using_local_palette = true;\n    var palette = opts.palette;\n    if (palette === undefined || palette === null) {\n      using_local_palette = false;\n      palette = global_palette;\n    }\n\n    if (palette === undefined || palette === null)\n      throw new Error(\"Must supply either a local or global palette.\");\n\n    var num_colors = check_palette_and_num_colors(palette);\n\n    // Compute the min_code_size (power of 2), destroying num_colors.\n    var min_code_size = 0;\n    while ((num_colors >>= 1)) ++min_code_size;\n    num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n    var delay = opts.delay === undefined ? 0 : opts.delay;\n\n    // From the spec:\n    //     0 -   No disposal specified. The decoder is\n    //           not required to take any action.\n    //     1 -   Do not dispose. The graphic is to be left\n    //           in place.\n    //     2 -   Restore to background color. The area used by the\n    //           graphic must be restored to the background color.\n    //     3 -   Restore to previous. The decoder is required to\n    //           restore the area overwritten by the graphic with\n    //           what was there prior to rendering the graphic.\n    //  4-7 -    To be defined.\n    // NOTE(deanm): Dispose background doesn't really work, apparently most\n    // browsers ignore the background palette index and clear to transparency.\n    var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n    if (disposal < 0 || disposal > 3)\n      // 4-7 is reserved.\n      throw new Error(\"Disposal out of range.\");\n\n    var use_transparency = false;\n    var transparent_index = 0;\n    if (opts.transparent !== undefined && opts.transparent !== null) {\n      use_transparency = true;\n      transparent_index = opts.transparent;\n      if (transparent_index < 0 || transparent_index >= num_colors)\n        throw new Error(\"Transparent color index.\");\n    }\n\n    if (disposal !== 0 || use_transparency || delay !== 0) {\n      // - Graphics Control Extension\n      buf[p++] = 0x21;\n      buf[p++] = 0xf9; // Extension / Label.\n      buf[p++] = 4; // Byte size.\n\n      buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n      buf[p++] = delay & 0xff;\n      buf[p++] = (delay >> 8) & 0xff;\n      buf[p++] = transparent_index; // Transparent color index.\n      buf[p++] = 0; // Block Terminator.\n    }\n\n    // - Image Descriptor\n    buf[p++] = 0x2c; // Image Seperator.\n    buf[p++] = x & 0xff;\n    buf[p++] = (x >> 8) & 0xff; // Left.\n    buf[p++] = y & 0xff;\n    buf[p++] = (y >> 8) & 0xff; // Top.\n    buf[p++] = w & 0xff;\n    buf[p++] = (w >> 8) & 0xff;\n    buf[p++] = h & 0xff;\n    buf[p++] = (h >> 8) & 0xff;\n    // NOTE: No sort flag (unused?).\n    // TODO(deanm): Support interlace.\n    buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n\n    // - Local Color Table\n    if (using_local_palette === true) {\n      for (var i = 0, il = palette.length; i < il; ++i) {\n        var rgb = palette[i];\n        buf[p++] = (rgb >> 16) & 0xff;\n        buf[p++] = (rgb >> 8) & 0xff;\n        buf[p++] = rgb & 0xff;\n      }\n    }\n\n    p = GifWriterOutputLZWCodeStream(\n      buf,\n      p,\n      min_code_size < 2 ? 2 : min_code_size,\n      indexed_pixels\n    );\n\n    return p;\n  };\n\n  this.end = function() {\n    if (ended === false) {\n      buf[p++] = 0x3b; // Trailer.\n      ended = true;\n    }\n    return p;\n  };\n\n  this.getOutputBuffer = function() {\n    return buf;\n  };\n  this.setOutputBuffer = function(v) {\n    buf = v;\n  };\n  this.getOutputBufferPosition = function() {\n    return p;\n  };\n  this.setOutputBufferPosition = function(v) {\n    p = v;\n  };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n  buf[p++] = min_code_size;\n  var cur_subblock = p++; // Pointing at the length field.\n\n  var clear_code = 1 << min_code_size;\n  var code_mask = clear_code - 1;\n  var eoi_code = clear_code + 1;\n  var next_code = eoi_code + 1;\n\n  var cur_code_size = min_code_size + 1; // Number of bits per code.\n  var cur_shift = 0;\n  // We have at most 12-bit codes, so we should have to hold a max of 19\n  // bits here (and then we would write out).\n  var cur = 0;\n\n  function emit_bytes_to_buffer(bit_block_size) {\n    while (cur_shift >= bit_block_size) {\n      buf[p++] = cur & 0xff;\n      cur >>= 8;\n      cur_shift -= 8;\n      if (p === cur_subblock + 256) {\n        // Finished a subblock.\n        buf[cur_subblock] = 255;\n        cur_subblock = p++;\n      }\n    }\n  }\n\n  function emit_code(c) {\n    cur |= c << cur_shift;\n    cur_shift += cur_code_size;\n    emit_bytes_to_buffer(8);\n  }\n\n  // I am not an expert on the topic, and I don't want to write a thesis.\n  // However, it is good to outline here the basic algorithm and the few data\n  // structures and optimizations here that make this implementation fast.\n  // The basic idea behind LZW is to build a table of previously seen runs\n  // addressed by a short id (herein called output code).  All data is\n  // referenced by a code, which represents one or more values from the\n  // original input stream.  All input bytes can be referenced as the same\n  // value as an output code.  So if you didn't want any compression, you\n  // could more or less just output the original bytes as codes (there are\n  // some details to this, but it is the idea).  In order to achieve\n  // compression, values greater then the input range (codes can be up to\n  // 12-bit while input only 8-bit) represent a sequence of previously seen\n  // inputs.  The decompressor is able to build the same mapping while\n  // decoding, so there is always a shared common knowledge between the\n  // encoding and decoder, which is also important for \"timing\" aspects like\n  // how to handle variable bit width code encoding.\n  //\n  // One obvious but very important consequence of the table system is there\n  // is always a unique id (at most 12-bits) to map the runs.  'A' might be\n  // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc.  This relationship\n  // can be used for an effecient lookup strategy for the code mapping.  We\n  // need to know if a run has been seen before, and be able to map that run\n  // to the output code.  Since we start with known unique ids (input bytes),\n  // and then from those build more unique ids (table entries), we can\n  // continue this chain (almost like a linked list) to always have small\n  // integer values that represent the current byte chains in the encoder.\n  // This means instead of tracking the input bytes (AAAABCD) to know our\n  // current state, we can track the table entry for AAAABC (it is guaranteed\n  // to exist by the nature of the algorithm) and the next character D.\n  // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n  // unique.  This allows us to create a simple lookup key for mapping input\n  // sequences to codes (table indices) without having to store or search\n  // any of the code sequences.  So if 'AAAA' has a table entry of 12, the\n  // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n  // key.  This leads to a integer value at most 20-bits, which can always\n  // fit in an SMI value and be used as a fast sparse array / object key.\n\n  // Output code for the current contents of the index buffer.\n  var ib_code = index_stream[0] & code_mask; // Load first input index.\n  var code_table = {}; // Key'd on our 20-bit \"tuple\".\n\n  emit_code(clear_code); // Spec says first code should be a clear code.\n\n  // First index already loaded, process the rest of the stream.\n  for (var i = 1, il = index_stream.length; i < il; ++i) {\n    var k = index_stream[i] & code_mask;\n    var cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n    var cur_code = code_table[cur_key]; // buffer + k.\n\n    // Check if we have to create a new code table entry.\n    if (cur_code === undefined) {\n      // We don't have buffer + k.\n      // Emit index buffer (without k).\n      // This is an inline version of emit_code, because this is the core\n      // writing routine of the compressor (and V8 cannot inline emit_code\n      // because it is a closure here in a different context).  Additionally\n      // we can call emit_byte_to_buffer less often, because we can have\n      // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n      // be 12-bits, so can safely have 18-bits there without overflow.\n      // emit_code(ib_code);\n      cur |= ib_code << cur_shift;\n      cur_shift += cur_code_size;\n      while (cur_shift >= 8) {\n        buf[p++] = cur & 0xff;\n        cur >>= 8;\n        cur_shift -= 8;\n        if (p === cur_subblock + 256) {\n          // Finished a subblock.\n          buf[cur_subblock] = 255;\n          cur_subblock = p++;\n        }\n      }\n\n      if (next_code === 4096) {\n        // Table full, need a clear.\n        emit_code(clear_code);\n        next_code = eoi_code + 1;\n        cur_code_size = min_code_size + 1;\n        code_table = {};\n      } else {\n        // Table not full, insert a new entry.\n        // Increase our variable bit code sizes if necessary.  This is a bit\n        // tricky as it is based on \"timing\" between the encoding and\n        // decoder.  From the encoders perspective this should happen after\n        // we've already emitted the index buffer and are about to create the\n        // first table entry that would overflow our current code bit size.\n        if (next_code >= 1 << cur_code_size) ++cur_code_size;\n        code_table[cur_key] = next_code++; // Insert into code table.\n      }\n\n      ib_code = k; // Index buffer to single input k.\n    } else {\n      ib_code = cur_code; // Index buffer to sequence in code table.\n    }\n  }\n\n  emit_code(ib_code); // There will still be something in the index buffer.\n  emit_code(eoi_code); // End Of Information.\n\n  // Flush / finalize the sub-blocks stream to the buffer.\n  emit_bytes_to_buffer(1);\n\n  // Finish the sub-blocks, writing out any unfinished lengths and\n  // terminating with a sub-block of length 0.  If we have already started\n  // but not yet used a sub-block it can just become the terminator.\n  if (cur_subblock + 1 === p) {\n    // Started but unused.\n    buf[cur_subblock] = 0;\n  } else {\n    // Started and used, write length and additional terminator block.\n    buf[cur_subblock] = p - cur_subblock - 1;\n    buf[p++] = 0;\n  }\n  return p;\n}\n\nfunction GifReader(buf) {\n  var p = 0;\n\n  // - Header (GIF87a or GIF89a).\n  if (\n    buf[p++] !== 0x47 ||\n    buf[p++] !== 0x49 ||\n    buf[p++] !== 0x46 ||\n    buf[p++] !== 0x38 ||\n    ((buf[p++] + 1) & 0xfd) !== 0x38 ||\n    buf[p++] !== 0x61\n  ) {\n    throw new Error(\"Invalid GIF 87a/89a header.\");\n  }\n\n  // - Logical Screen Descriptor.\n  var width = buf[p++] | (buf[p++] << 8);\n  var height = buf[p++] | (buf[p++] << 8);\n  var pf0 = buf[p++]; // <Packed Fields>.\n  var global_palette_flag = pf0 >> 7;\n  var num_global_colors_pow2 = pf0 & 0x7;\n  var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n  var background = buf[p++];\n  buf[p++]; // Pixel aspect ratio (unused?).\n\n  var global_palette_offset = null;\n  var global_palette_size = null;\n\n  if (global_palette_flag) {\n    global_palette_offset = p;\n    global_palette_size = num_global_colors;\n    p += num_global_colors * 3; // Seek past palette.\n  }\n\n  var no_eof = true;\n\n  var frames = [];\n\n  var delay = 0;\n  var transparent_index = null;\n  var disposal = 0; // 0 - No disposal specified.\n  var loop_count = null;\n\n  this.width = width;\n  this.height = height;\n\n  while (no_eof && p < buf.length) {\n    switch (buf[p++]) {\n      case 0x21: // Graphics Control Extension Block\n        switch (buf[p++]) {\n          case 0xff: // Application specific block\n            // Try if it's a Netscape block (with animation loop counter).\n            if (\n              buf[p] !== 0x0b || // 21 FF already read, check block size.\n              // NETSCAPE2.0\n              (buf[p + 1] == 0x4e &&\n                buf[p + 2] == 0x45 &&\n                buf[p + 3] == 0x54 &&\n                buf[p + 4] == 0x53 &&\n                buf[p + 5] == 0x43 &&\n                buf[p + 6] == 0x41 &&\n                buf[p + 7] == 0x50 &&\n                buf[p + 8] == 0x45 &&\n                buf[p + 9] == 0x32 &&\n                buf[p + 10] == 0x2e &&\n                buf[p + 11] == 0x30 &&\n                // Sub-block\n                buf[p + 12] == 0x03 &&\n                buf[p + 13] == 0x01 &&\n                buf[p + 16] == 0)\n            ) {\n              p += 14;\n              loop_count = buf[p++] | (buf[p++] << 8);\n              p++; // Skip terminator.\n            } else {\n              // We don't know what it is, just try to get past it.\n              p += 12;\n              while (true) {\n                // Seek through subblocks.\n                var block_size = buf[p++];\n                // Bad block size (ex: undefined from an out of bounds read).\n                if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n                if (block_size === 0) break; // 0 size is terminator\n                p += block_size;\n              }\n            }\n            break;\n\n          case 0xf9: // Graphics Control Extension\n            if (buf[p++] !== 0x4 || buf[p + 4] !== 0)\n              throw new Error(\"Invalid graphics extension block.\");\n            var pf1 = buf[p++];\n            delay = buf[p++] | (buf[p++] << 8);\n            transparent_index = buf[p++];\n            if ((pf1 & 1) === 0) transparent_index = null;\n            disposal = (pf1 >> 2) & 0x7;\n            p++; // Skip terminator.\n            break;\n\n          case 0xfe: // Comment Extension.\n            while (true) {\n              // Seek through subblocks.\n              var block_size = buf[p++];\n              // Bad block size (ex: undefined from an out of bounds read).\n              if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n              if (block_size === 0) break; // 0 size is terminator\n              // console.log(buf.slice(p, p+block_size).toString('ascii'));\n              p += block_size;\n            }\n            break;\n\n          default:\n            throw new Error(\n              \"Unknown graphic control label: 0x\" + buf[p - 1].toString(16)\n            );\n        }\n        break;\n\n      case 0x2c: // Image Descriptor.\n        var x = buf[p++] | (buf[p++] << 8);\n        var y = buf[p++] | (buf[p++] << 8);\n        var w = buf[p++] | (buf[p++] << 8);\n        var h = buf[p++] | (buf[p++] << 8);\n        var pf2 = buf[p++];\n        var local_palette_flag = pf2 >> 7;\n        var interlace_flag = (pf2 >> 6) & 1;\n        var num_local_colors_pow2 = pf2 & 0x7;\n        var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n        var palette_offset = global_palette_offset;\n        var palette_size = global_palette_size;\n        var has_local_palette = false;\n        if (local_palette_flag) {\n          var has_local_palette = true;\n          palette_offset = p; // Override with local palette.\n          palette_size = num_local_colors;\n          p += num_local_colors * 3; // Seek past palette.\n        }\n\n        var data_offset = p;\n\n        p++; // codesize\n        while (true) {\n          var block_size = buf[p++];\n          // Bad block size (ex: undefined from an out of bounds read).\n          if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n          if (block_size === 0) break; // 0 size is terminator\n          p += block_size;\n        }\n\n        frames.push({\n          x: x,\n          y: y,\n          width: w,\n          height: h,\n          has_local_palette: has_local_palette,\n          palette_offset: palette_offset,\n          palette_size: palette_size,\n          data_offset: data_offset,\n          data_length: p - data_offset,\n          transparent_index: transparent_index,\n          interlaced: !!interlace_flag,\n          delay: delay,\n          disposal: disposal\n        });\n        break;\n\n      case 0x3b: // Trailer Marker (end of file).\n        no_eof = false;\n        break;\n\n      default:\n        throw new Error(\"Unknown gif block: 0x\" + buf[p - 1].toString(16));\n        break;\n    }\n  }\n\n  this.numFrames = function() {\n    return frames.length;\n  };\n\n  this.loopCount = function() {\n    return loop_count;\n  };\n\n  this.frameInfo = function(frame_num) {\n    if (frame_num < 0 || frame_num >= frames.length)\n      throw new Error(\"Frame index out of range.\");\n    return frames[frame_num];\n  };\n\n  this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n    var frame = this.frameInfo(frame_num);\n    var num_pixels = frame.width * frame.height;\n    var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n    GifReaderLZWOutputIndexStream(\n      buf,\n      frame.data_offset,\n      index_stream,\n      num_pixels\n    );\n    var palette_offset = frame.palette_offset;\n\n    // NOTE(deanm): It seems to be much faster to compare index to 256 than\n    // to === null.  Not sure why, but CompareStub_EQ_STRICT shows up high in\n    // the profile, not sure if it's related to using a Uint8Array.\n    var trans = frame.transparent_index;\n    if (trans === null) trans = 256;\n\n    // We are possibly just blitting to a portion of the entire frame.\n    // That is a subrect within the framerect, so the additional pixels\n    // must be skipped over after we finished a scanline.\n    var framewidth = frame.width;\n    var framestride = width - framewidth;\n    var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n    // Output indices of the top left and bottom right corners of the subrect.\n    var opbeg = (frame.y * width + frame.x) * 4;\n    var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n    var op = opbeg;\n\n    var scanstride = framestride * 4;\n\n    // Use scanstride to skip past the rows when interlacing.  This is skipping\n    // 7 rows for the first two passes, then 3 then 1.\n    if (frame.interlaced === true) {\n      scanstride += width * 4 * 7; // Pass 1.\n    }\n\n    var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n    for (var i = 0, il = index_stream.length; i < il; ++i) {\n      var index = index_stream[i];\n\n      if (xleft === 0) {\n        // Beginning of new scan line\n        op += scanstride;\n        xleft = framewidth;\n        if (op >= opend) {\n          // Catch the wrap to switch passes when interlacing.\n          scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n          // interlaceskip / 2 * 4 is interlaceskip << 1.\n          op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n          interlaceskip >>= 1;\n        }\n      }\n\n      if (index === trans) {\n        op += 4;\n      } else {\n        var r = buf[palette_offset + index * 3];\n        var g = buf[palette_offset + index * 3 + 1];\n        var b = buf[palette_offset + index * 3 + 2];\n        pixels[op++] = b;\n        pixels[op++] = g;\n        pixels[op++] = r;\n        pixels[op++] = 255;\n      }\n      --xleft;\n    }\n  };\n\n  // I will go to copy and paste hell one day...\n  this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n    var frame = this.frameInfo(frame_num);\n    var num_pixels = frame.width * frame.height;\n    var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n    GifReaderLZWOutputIndexStream(\n      buf,\n      frame.data_offset,\n      index_stream,\n      num_pixels\n    );\n    var palette_offset = frame.palette_offset;\n\n    // NOTE(deanm): It seems to be much faster to compare index to 256 than\n    // to === null.  Not sure why, but CompareStub_EQ_STRICT shows up high in\n    // the profile, not sure if it's related to using a Uint8Array.\n    var trans = frame.transparent_index;\n    if (trans === null) trans = 256;\n\n    // We are possibly just blitting to a portion of the entire frame.\n    // That is a subrect within the framerect, so the additional pixels\n    // must be skipped over after we finished a scanline.\n    var framewidth = frame.width;\n    var framestride = width - framewidth;\n    var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n    // Output indices of the top left and bottom right corners of the subrect.\n    var opbeg = (frame.y * width + frame.x) * 4;\n    var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n    var op = opbeg;\n\n    var scanstride = framestride * 4;\n\n    // Use scanstride to skip past the rows when interlacing.  This is skipping\n    // 7 rows for the first two passes, then 3 then 1.\n    if (frame.interlaced === true) {\n      scanstride += width * 4 * 7; // Pass 1.\n    }\n\n    var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n    for (var i = 0, il = index_stream.length; i < il; ++i) {\n      var index = index_stream[i];\n\n      if (xleft === 0) {\n        // Beginning of new scan line\n        op += scanstride;\n        xleft = framewidth;\n        if (op >= opend) {\n          // Catch the wrap to switch passes when interlacing.\n          scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n          // interlaceskip / 2 * 4 is interlaceskip << 1.\n          op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n          interlaceskip >>= 1;\n        }\n      }\n\n      if (index === trans) {\n        op += 4;\n      } else {\n        var r = buf[palette_offset + index * 3];\n        var g = buf[palette_offset + index * 3 + 1];\n        var b = buf[palette_offset + index * 3 + 2];\n        pixels[op++] = r;\n        pixels[op++] = g;\n        pixels[op++] = b;\n        pixels[op++] = 255;\n      }\n      --xleft;\n    }\n  };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n  var min_code_size = code_stream[p++];\n\n  var clear_code = 1 << min_code_size;\n  var eoi_code = clear_code + 1;\n  var next_code = eoi_code + 1;\n\n  var cur_code_size = min_code_size + 1; // Number of bits per code.\n  // NOTE: This shares the same name as the encoder, but has a different\n  // meaning here.  Here this masks each code coming from the code stream.\n  var code_mask = (1 << cur_code_size) - 1;\n  var cur_shift = 0;\n  var cur = 0;\n\n  var op = 0; // Output pointer.\n\n  var subblock_size = code_stream[p++];\n\n  // TODO(deanm): Would using a TypedArray be any faster?  At least it would\n  // solve the fast mode / backing store uncertainty.\n  // var code_table = Array(4096);\n  var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n  var prev_code = null; // Track code-1.\n\n  while (true) {\n    // Read up to two bytes, making sure we always 12-bits for max sized code.\n    while (cur_shift < 16) {\n      if (subblock_size === 0) break; // No more data to be read.\n\n      cur |= code_stream[p++] << cur_shift;\n      cur_shift += 8;\n\n      if (subblock_size === 1) {\n        // Never let it get to 0 to hold logic above.\n        subblock_size = code_stream[p++]; // Next subblock.\n      } else {\n        --subblock_size;\n      }\n    }\n\n    // TODO(deanm): We should never really get here, we should have received\n    // and EOI.\n    if (cur_shift < cur_code_size) break;\n\n    var code = cur & code_mask;\n    cur >>= cur_code_size;\n    cur_shift -= cur_code_size;\n\n    // TODO(deanm): Maybe should check that the first code was a clear code,\n    // at least this is what you're supposed to do.  But actually our encoder\n    // now doesn't emit a clear code first anyway.\n    if (code === clear_code) {\n      // We don't actually have to clear the table.  This could be a good idea\n      // for greater error checking, but we don't really do any anyway.  We\n      // will just track it with next_code and overwrite old entries.\n\n      next_code = eoi_code + 1;\n      cur_code_size = min_code_size + 1;\n      code_mask = (1 << cur_code_size) - 1;\n\n      // Don't update prev_code ?\n      prev_code = null;\n      continue;\n    } else if (code === eoi_code) {\n      break;\n    }\n\n    // We have a similar situation as the decoder, where we want to store\n    // variable length entries (code table entries), but we want to do in a\n    // faster manner than an array of arrays.  The code below stores sort of a\n    // linked list within the code table, and then \"chases\" through it to\n    // construct the dictionary entries.  When a new entry is created, just the\n    // last byte is stored, and the rest (prefix) of the entry is only\n    // referenced by its table entry.  Then the code chases through the\n    // prefixes until it reaches a single byte code.  We have to chase twice,\n    // first to compute the length, and then to actually copy the data to the\n    // output (backwards, since we know the length).  The alternative would be\n    // storing something in an intermediate stack, but that doesn't make any\n    // more sense.  I implemented an approach where it also stored the length\n    // in the code table, although it's a bit tricky because you run out of\n    // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n    // entries are generally not the long).  Even when I created benchmarks for\n    // very long table entries the complexity did not seem worth it.\n    // The code table stores the prefix entry in 12 bits and then the suffix\n    // byte in 8 bits, so each entry is 20 bits.\n\n    var chase_code = code < next_code ? code : prev_code;\n\n    // Chase what we will output, either {CODE} or {CODE-1}.\n    var chase_length = 0;\n    var chase = chase_code;\n    while (chase > clear_code) {\n      chase = code_table[chase] >> 8;\n      ++chase_length;\n    }\n\n    var k = chase;\n\n    var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n    if (op_end > output_length) {\n      console.log(\"Warning, gif stream longer than expected.\");\n      return;\n    }\n\n    // Already have the first byte from the chase, might as well write it fast.\n    output[op++] = k;\n\n    op += chase_length;\n    var b = op; // Track pointer, writing backwards.\n\n    if (chase_code !== code)\n      // The case of emitting {CODE-1} + k.\n      output[op++] = k;\n\n    chase = chase_code;\n    while (chase_length--) {\n      chase = code_table[chase];\n      output[--b] = chase & 0xff; // Write backwards.\n      chase >>= 8; // Pull down to the prefix code.\n    }\n\n    if (prev_code !== null && next_code < 4096) {\n      code_table[next_code++] = (prev_code << 8) | k;\n      // TODO(deanm): Figure out this clearing vs code growth logic better.  I\n      // have an feeling that it should just happen somewhere else, for now it\n      // is awkward between when we grow past the max and then hit a clear code.\n      // For now just check if we hit the max 12-bits (then a clear code should\n      // follow, also of course encoded in 12-bits).\n      if (next_code >= code_mask + 1 && cur_code_size < 12) {\n        ++cur_code_size;\n        code_mask = (code_mask << 1) | 1;\n      }\n    }\n\n    prev_code = code;\n  }\n\n  if (op !== output_length) {\n    console.log(\"Warning, gif stream shorter than expected.\");\n  }\n\n  return output;\n}\n\nexport { GifReader, GifWriter };\n", "/**\n * @license\n  Copyright (c) 2008, Adobe Systems Incorporated\n  All rights reserved.\n\n  Redistribution and use in source and binary forms, with or without \n  modification, are permitted provided that the following conditions are\n  met:\n\n  * Redistributions of source code must retain the above copyright notice, \n    this list of conditions and the following disclaimer.\n  \n  * Redistributions in binary form must reproduce the above copyright\n    notice, this list of conditions and the following disclaimer in the \n    documentation and/or other materials provided with the distribution.\n  \n  * Neither the name of Adobe Systems Incorporated nor the names of its \n    contributors may be used to endorse or promote products derived from \n    this software without specific prior written permission.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n  IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nfunction JPEGEncoder(quality) {\n  var ffloor = Math.floor;\n  var YTable = new Array(64);\n  var UVTable = new Array(64);\n  var fdtbl_Y = new Array(64);\n  var fdtbl_UV = new Array(64);\n  var YDC_HT;\n  var UVDC_HT;\n  var YAC_HT;\n  var UVAC_HT;\n\n  var bitcode = new Array(65535);\n  var category = new Array(65535);\n  var outputfDCTQuant = new Array(64);\n  var DU = new Array(64);\n  var byteout = [];\n  var bytenew = 0;\n  var bytepos = 7;\n\n  var YDU = new Array(64);\n  var UDU = new Array(64);\n  var VDU = new Array(64);\n  var clt = new Array(256);\n  var RGB_YUV_TABLE = new Array(2048);\n  var currentQuality;\n\n  var ZigZag = [\n    0,\n    1,\n    5,\n    6,\n    14,\n    15,\n    27,\n    28,\n    2,\n    4,\n    7,\n    13,\n    16,\n    26,\n    29,\n    42,\n    3,\n    8,\n    12,\n    17,\n    25,\n    30,\n    41,\n    43,\n    9,\n    11,\n    18,\n    24,\n    31,\n    40,\n    44,\n    53,\n    10,\n    19,\n    23,\n    32,\n    39,\n    45,\n    52,\n    54,\n    20,\n    22,\n    33,\n    38,\n    46,\n    51,\n    55,\n    60,\n    21,\n    34,\n    37,\n    47,\n    50,\n    56,\n    59,\n    61,\n    35,\n    36,\n    48,\n    49,\n    57,\n    58,\n    62,\n    63\n  ];\n\n  var std_dc_luminance_nrcodes = [\n    0,\n    0,\n    1,\n    5,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0\n  ];\n  var std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n  var std_ac_luminance_nrcodes = [\n    0,\n    0,\n    2,\n    1,\n    3,\n    3,\n    2,\n    4,\n    3,\n    5,\n    5,\n    4,\n    4,\n    0,\n    0,\n    1,\n    0x7d\n  ];\n  var std_ac_luminance_values = [\n    0x01,\n    0x02,\n    0x03,\n    0x00,\n    0x04,\n    0x11,\n    0x05,\n    0x12,\n    0x21,\n    0x31,\n    0x41,\n    0x06,\n    0x13,\n    0x51,\n    0x61,\n    0x07,\n    0x22,\n    0x71,\n    0x14,\n    0x32,\n    0x81,\n    0x91,\n    0xa1,\n    0x08,\n    0x23,\n    0x42,\n    0xb1,\n    0xc1,\n    0x15,\n    0x52,\n    0xd1,\n    0xf0,\n    0x24,\n    0x33,\n    0x62,\n    0x72,\n    0x82,\n    0x09,\n    0x0a,\n    0x16,\n    0x17,\n    0x18,\n    0x19,\n    0x1a,\n    0x25,\n    0x26,\n    0x27,\n    0x28,\n    0x29,\n    0x2a,\n    0x34,\n    0x35,\n    0x36,\n    0x37,\n    0x38,\n    0x39,\n    0x3a,\n    0x43,\n    0x44,\n    0x45,\n    0x46,\n    0x47,\n    0x48,\n    0x49,\n    0x4a,\n    0x53,\n    0x54,\n    0x55,\n    0x56,\n    0x57,\n    0x58,\n    0x59,\n    0x5a,\n    0x63,\n    0x64,\n    0x65,\n    0x66,\n    0x67,\n    0x68,\n    0x69,\n    0x6a,\n    0x73,\n    0x74,\n    0x75,\n    0x76,\n    0x77,\n    0x78,\n    0x79,\n    0x7a,\n    0x83,\n    0x84,\n    0x85,\n    0x86,\n    0x87,\n    0x88,\n    0x89,\n    0x8a,\n    0x92,\n    0x93,\n    0x94,\n    0x95,\n    0x96,\n    0x97,\n    0x98,\n    0x99,\n    0x9a,\n    0xa2,\n    0xa3,\n    0xa4,\n    0xa5,\n    0xa6,\n    0xa7,\n    0xa8,\n    0xa9,\n    0xaa,\n    0xb2,\n    0xb3,\n    0xb4,\n    0xb5,\n    0xb6,\n    0xb7,\n    0xb8,\n    0xb9,\n    0xba,\n    0xc2,\n    0xc3,\n    0xc4,\n    0xc5,\n    0xc6,\n    0xc7,\n    0xc8,\n    0xc9,\n    0xca,\n    0xd2,\n    0xd3,\n    0xd4,\n    0xd5,\n    0xd6,\n    0xd7,\n    0xd8,\n    0xd9,\n    0xda,\n    0xe1,\n    0xe2,\n    0xe3,\n    0xe4,\n    0xe5,\n    0xe6,\n    0xe7,\n    0xe8,\n    0xe9,\n    0xea,\n    0xf1,\n    0xf2,\n    0xf3,\n    0xf4,\n    0xf5,\n    0xf6,\n    0xf7,\n    0xf8,\n    0xf9,\n    0xfa\n  ];\n\n  var std_dc_chrominance_nrcodes = [\n    0,\n    0,\n    3,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    0,\n    0,\n    0,\n    0,\n    0\n  ];\n  var std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n  var std_ac_chrominance_nrcodes = [\n    0,\n    0,\n    2,\n    1,\n    2,\n    4,\n    4,\n    3,\n    4,\n    7,\n    5,\n    4,\n    4,\n    0,\n    1,\n    2,\n    0x77\n  ];\n  var std_ac_chrominance_values = [\n    0x00,\n    0x01,\n    0x02,\n    0x03,\n    0x11,\n    0x04,\n    0x05,\n    0x21,\n    0x31,\n    0x06,\n    0x12,\n    0x41,\n    0x51,\n    0x07,\n    0x61,\n    0x71,\n    0x13,\n    0x22,\n    0x32,\n    0x81,\n    0x08,\n    0x14,\n    0x42,\n    0x91,\n    0xa1,\n    0xb1,\n    0xc1,\n    0x09,\n    0x23,\n    0x33,\n    0x52,\n    0xf0,\n    0x15,\n    0x62,\n    0x72,\n    0xd1,\n    0x0a,\n    0x16,\n    0x24,\n    0x34,\n    0xe1,\n    0x25,\n    0xf1,\n    0x17,\n    0x18,\n    0x19,\n    0x1a,\n    0x26,\n    0x27,\n    0x28,\n    0x29,\n    0x2a,\n    0x35,\n    0x36,\n    0x37,\n    0x38,\n    0x39,\n    0x3a,\n    0x43,\n    0x44,\n    0x45,\n    0x46,\n    0x47,\n    0x48,\n    0x49,\n    0x4a,\n    0x53,\n    0x54,\n    0x55,\n    0x56,\n    0x57,\n    0x58,\n    0x59,\n    0x5a,\n    0x63,\n    0x64,\n    0x65,\n    0x66,\n    0x67,\n    0x68,\n    0x69,\n    0x6a,\n    0x73,\n    0x74,\n    0x75,\n    0x76,\n    0x77,\n    0x78,\n    0x79,\n    0x7a,\n    0x82,\n    0x83,\n    0x84,\n    0x85,\n    0x86,\n    0x87,\n    0x88,\n    0x89,\n    0x8a,\n    0x92,\n    0x93,\n    0x94,\n    0x95,\n    0x96,\n    0x97,\n    0x98,\n    0x99,\n    0x9a,\n    0xa2,\n    0xa3,\n    0xa4,\n    0xa5,\n    0xa6,\n    0xa7,\n    0xa8,\n    0xa9,\n    0xaa,\n    0xb2,\n    0xb3,\n    0xb4,\n    0xb5,\n    0xb6,\n    0xb7,\n    0xb8,\n    0xb9,\n    0xba,\n    0xc2,\n    0xc3,\n    0xc4,\n    0xc5,\n    0xc6,\n    0xc7,\n    0xc8,\n    0xc9,\n    0xca,\n    0xd2,\n    0xd3,\n    0xd4,\n    0xd5,\n    0xd6,\n    0xd7,\n    0xd8,\n    0xd9,\n    0xda,\n    0xe2,\n    0xe3,\n    0xe4,\n    0xe5,\n    0xe6,\n    0xe7,\n    0xe8,\n    0xe9,\n    0xea,\n    0xf2,\n    0xf3,\n    0xf4,\n    0xf5,\n    0xf6,\n    0xf7,\n    0xf8,\n    0xf9,\n    0xfa\n  ];\n\n  function initQuantTables(sf) {\n    var YQT = [\n      16,\n      11,\n      10,\n      16,\n      24,\n      40,\n      51,\n      61,\n      12,\n      12,\n      14,\n      19,\n      26,\n      58,\n      60,\n      55,\n      14,\n      13,\n      16,\n      24,\n      40,\n      57,\n      69,\n      56,\n      14,\n      17,\n      22,\n      29,\n      51,\n      87,\n      80,\n      62,\n      18,\n      22,\n      37,\n      56,\n      68,\n      109,\n      103,\n      77,\n      24,\n      35,\n      55,\n      64,\n      81,\n      104,\n      113,\n      92,\n      49,\n      64,\n      78,\n      87,\n      103,\n      121,\n      120,\n      101,\n      72,\n      92,\n      95,\n      98,\n      112,\n      100,\n      103,\n      99\n    ];\n\n    for (var i = 0; i < 64; i++) {\n      var t = ffloor((YQT[i] * sf + 50) / 100);\n      t = Math.min(Math.max(t, 1), 255);\n      YTable[ZigZag[i]] = t;\n    }\n    var UVQT = [\n      17,\n      18,\n      24,\n      47,\n      99,\n      99,\n      99,\n      99,\n      18,\n      21,\n      26,\n      66,\n      99,\n      99,\n      99,\n      99,\n      24,\n      26,\n      56,\n      99,\n      99,\n      99,\n      99,\n      99,\n      47,\n      66,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99\n    ];\n    for (var j = 0; j < 64; j++) {\n      var u = ffloor((UVQT[j] * sf + 50) / 100);\n      u = Math.min(Math.max(u, 1), 255);\n      UVTable[ZigZag[j]] = u;\n    }\n    var aasf = [\n      1.0,\n      1.387039845,\n      1.306562965,\n      1.175875602,\n      1.0,\n      0.785694958,\n      0.5411961,\n      0.275899379\n    ];\n    var k = 0;\n    for (var row = 0; row < 8; row++) {\n      for (var col = 0; col < 8; col++) {\n        fdtbl_Y[k] = 1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n        fdtbl_UV[k] = 1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n        k++;\n      }\n    }\n  }\n\n  function computeHuffmanTbl(nrcodes, std_table) {\n    var codevalue = 0;\n    var pos_in_table = 0;\n    var HT = new Array();\n    for (var k = 1; k <= 16; k++) {\n      for (var j = 1; j <= nrcodes[k]; j++) {\n        HT[std_table[pos_in_table]] = [];\n        HT[std_table[pos_in_table]][0] = codevalue;\n        HT[std_table[pos_in_table]][1] = k;\n        pos_in_table++;\n        codevalue++;\n      }\n      codevalue *= 2;\n    }\n    return HT;\n  }\n\n  function initHuffmanTbl() {\n    YDC_HT = computeHuffmanTbl(\n      std_dc_luminance_nrcodes,\n      std_dc_luminance_values\n    );\n    UVDC_HT = computeHuffmanTbl(\n      std_dc_chrominance_nrcodes,\n      std_dc_chrominance_values\n    );\n    YAC_HT = computeHuffmanTbl(\n      std_ac_luminance_nrcodes,\n      std_ac_luminance_values\n    );\n    UVAC_HT = computeHuffmanTbl(\n      std_ac_chrominance_nrcodes,\n      std_ac_chrominance_values\n    );\n  }\n\n  function initCategoryNumber() {\n    var nrlower = 1;\n    var nrupper = 2;\n    for (var cat = 1; cat <= 15; cat++) {\n      //Positive numbers\n      for (var nr = nrlower; nr < nrupper; nr++) {\n        category[32767 + nr] = cat;\n        bitcode[32767 + nr] = [];\n        bitcode[32767 + nr][1] = cat;\n        bitcode[32767 + nr][0] = nr;\n      }\n      //Negative numbers\n      for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {\n        category[32767 + nrneg] = cat;\n        bitcode[32767 + nrneg] = [];\n        bitcode[32767 + nrneg][1] = cat;\n        bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;\n      }\n      nrlower <<= 1;\n      nrupper <<= 1;\n    }\n  }\n\n  function initRGBYUVTable() {\n    for (var i = 0; i < 256; i++) {\n      RGB_YUV_TABLE[i] = 19595 * i;\n      RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i;\n      RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000;\n      RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i;\n      RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i;\n      RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807fff;\n      RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i;\n      RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i;\n    }\n  }\n\n  // IO functions\n  function writeBits(bs) {\n    var value = bs[0];\n    var posval = bs[1] - 1;\n    while (posval >= 0) {\n      if (value & (1 << posval)) {\n        bytenew |= 1 << bytepos;\n      }\n      posval--;\n      bytepos--;\n      if (bytepos < 0) {\n        if (bytenew == 0xff) {\n          writeByte(0xff);\n          writeByte(0);\n        } else {\n          writeByte(bytenew);\n        }\n        bytepos = 7;\n        bytenew = 0;\n      }\n    }\n  }\n\n  function writeByte(value) {\n    //byteout.push(clt[value]); // write char directly instead of converting later\n    byteout.push(value);\n  }\n\n  function writeWord(value) {\n    writeByte((value >> 8) & 0xff);\n    writeByte(value & 0xff);\n  }\n\n  // DCT & quantization core\n  function fDCTQuant(data, fdtbl) {\n    var d0, d1, d2, d3, d4, d5, d6, d7;\n    /* Pass 1: process rows. */\n    var dataOff = 0;\n    var i;\n    var I8 = 8;\n    var I64 = 64;\n    for (i = 0; i < I8; ++i) {\n      d0 = data[dataOff];\n      d1 = data[dataOff + 1];\n      d2 = data[dataOff + 2];\n      d3 = data[dataOff + 3];\n      d4 = data[dataOff + 4];\n      d5 = data[dataOff + 5];\n      d6 = data[dataOff + 6];\n      d7 = data[dataOff + 7];\n\n      var tmp0 = d0 + d7;\n      var tmp7 = d0 - d7;\n      var tmp1 = d1 + d6;\n      var tmp6 = d1 - d6;\n      var tmp2 = d2 + d5;\n      var tmp5 = d2 - d5;\n      var tmp3 = d3 + d4;\n      var tmp4 = d3 - d4;\n\n      /* Even part */\n      var tmp10 = tmp0 + tmp3; /* phase 2 */\n      var tmp13 = tmp0 - tmp3;\n      var tmp11 = tmp1 + tmp2;\n      var tmp12 = tmp1 - tmp2;\n\n      data[dataOff] = tmp10 + tmp11; /* phase 3 */\n      data[dataOff + 4] = tmp10 - tmp11;\n\n      var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n      data[dataOff + 2] = tmp13 + z1; /* phase 5 */\n      data[dataOff + 6] = tmp13 - z1;\n\n      /* Odd part */\n      tmp10 = tmp4 + tmp5; /* phase 2 */\n      tmp11 = tmp5 + tmp6;\n      tmp12 = tmp6 + tmp7;\n\n      /* The rotator is modified from fig 4-8 to avoid extra negations. */\n      var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n      var z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n      var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n      var z3 = tmp11 * 0.707106781; /* c4 */\n\n      var z11 = tmp7 + z3; /* phase 5 */\n      var z13 = tmp7 - z3;\n\n      data[dataOff + 5] = z13 + z2; /* phase 6 */\n      data[dataOff + 3] = z13 - z2;\n      data[dataOff + 1] = z11 + z4;\n      data[dataOff + 7] = z11 - z4;\n\n      dataOff += 8; /* advance pointer to next row */\n    }\n\n    /* Pass 2: process columns. */\n    dataOff = 0;\n    for (i = 0; i < I8; ++i) {\n      d0 = data[dataOff];\n      d1 = data[dataOff + 8];\n      d2 = data[dataOff + 16];\n      d3 = data[dataOff + 24];\n      d4 = data[dataOff + 32];\n      d5 = data[dataOff + 40];\n      d6 = data[dataOff + 48];\n      d7 = data[dataOff + 56];\n\n      var tmp0p2 = d0 + d7;\n      var tmp7p2 = d0 - d7;\n      var tmp1p2 = d1 + d6;\n      var tmp6p2 = d1 - d6;\n      var tmp2p2 = d2 + d5;\n      var tmp5p2 = d2 - d5;\n      var tmp3p2 = d3 + d4;\n      var tmp4p2 = d3 - d4;\n\n      /* Even part */\n      var tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n      var tmp13p2 = tmp0p2 - tmp3p2;\n      var tmp11p2 = tmp1p2 + tmp2p2;\n      var tmp12p2 = tmp1p2 - tmp2p2;\n\n      data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n      data[dataOff + 32] = tmp10p2 - tmp11p2;\n\n      var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n      data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n      data[dataOff + 48] = tmp13p2 - z1p2;\n\n      /* Odd part */\n      tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n      tmp11p2 = tmp5p2 + tmp6p2;\n      tmp12p2 = tmp6p2 + tmp7p2;\n\n      /* The rotator is modified from fig 4-8 to avoid extra negations. */\n      var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n      var z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n      var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n      var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n      var z11p2 = tmp7p2 + z3p2; /* phase 5 */\n      var z13p2 = tmp7p2 - z3p2;\n\n      data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n      data[dataOff + 24] = z13p2 - z2p2;\n      data[dataOff + 8] = z11p2 + z4p2;\n      data[dataOff + 56] = z11p2 - z4p2;\n\n      dataOff++; /* advance pointer to next column */\n    }\n\n    // Quantize/descale the coefficients\n    var fDCTQuant;\n    for (i = 0; i < I64; ++i) {\n      // Apply the quantization and scaling factor & Round to nearest integer\n      fDCTQuant = data[i] * fdtbl[i];\n      outputfDCTQuant[i] =\n        fDCTQuant > 0.0 ? (fDCTQuant + 0.5) | 0 : (fDCTQuant - 0.5) | 0;\n      //outputfDCTQuant[i] = fround(fDCTQuant);\n    }\n    return outputfDCTQuant;\n  }\n\n  function writeAPP0() {\n    writeWord(0xffe0); // marker\n    writeWord(16); // length\n    writeByte(0x4a); // J\n    writeByte(0x46); // F\n    writeByte(0x49); // I\n    writeByte(0x46); // F\n    writeByte(0); // = \"JFIF\",'\\0'\n    writeByte(1); // versionhi\n    writeByte(1); // versionlo\n    writeByte(0); // xyunits\n    writeWord(1); // xdensity\n    writeWord(1); // ydensity\n    writeByte(0); // thumbnwidth\n    writeByte(0); // thumbnheight\n  }\n\n  function writeSOF0(width, height) {\n    writeWord(0xffc0); // marker\n    writeWord(17); // length, truecolor YUV JPG\n    writeByte(8); // precision\n    writeWord(height);\n    writeWord(width);\n    writeByte(3); // nrofcomponents\n    writeByte(1); // IdY\n    writeByte(0x11); // HVY\n    writeByte(0); // QTY\n    writeByte(2); // IdU\n    writeByte(0x11); // HVU\n    writeByte(1); // QTU\n    writeByte(3); // IdV\n    writeByte(0x11); // HVV\n    writeByte(1); // QTV\n  }\n\n  function writeDQT() {\n    writeWord(0xffdb); // marker\n    writeWord(132); // length\n    writeByte(0);\n    for (var i = 0; i < 64; i++) {\n      writeByte(YTable[i]);\n    }\n    writeByte(1);\n    for (var j = 0; j < 64; j++) {\n      writeByte(UVTable[j]);\n    }\n  }\n\n  function writeDHT() {\n    writeWord(0xffc4); // marker\n    writeWord(0x01a2); // length\n\n    writeByte(0); // HTYDCinfo\n    for (var i = 0; i < 16; i++) {\n      writeByte(std_dc_luminance_nrcodes[i + 1]);\n    }\n    for (var j = 0; j <= 11; j++) {\n      writeByte(std_dc_luminance_values[j]);\n    }\n\n    writeByte(0x10); // HTYACinfo\n    for (var k = 0; k < 16; k++) {\n      writeByte(std_ac_luminance_nrcodes[k + 1]);\n    }\n    for (var l = 0; l <= 161; l++) {\n      writeByte(std_ac_luminance_values[l]);\n    }\n\n    writeByte(1); // HTUDCinfo\n    for (var m = 0; m < 16; m++) {\n      writeByte(std_dc_chrominance_nrcodes[m + 1]);\n    }\n    for (var n = 0; n <= 11; n++) {\n      writeByte(std_dc_chrominance_values[n]);\n    }\n\n    writeByte(0x11); // HTUACinfo\n    for (var o = 0; o < 16; o++) {\n      writeByte(std_ac_chrominance_nrcodes[o + 1]);\n    }\n    for (var p = 0; p <= 161; p++) {\n      writeByte(std_ac_chrominance_values[p]);\n    }\n  }\n\n  function writeSOS() {\n    writeWord(0xffda); // marker\n    writeWord(12); // length\n    writeByte(3); // nrofcomponents\n    writeByte(1); // IdY\n    writeByte(0); // HTY\n    writeByte(2); // IdU\n    writeByte(0x11); // HTU\n    writeByte(3); // IdV\n    writeByte(0x11); // HTV\n    writeByte(0); // Ss\n    writeByte(0x3f); // Se\n    writeByte(0); // Bf\n  }\n\n  function processDU(CDU, fdtbl, DC, HTDC, HTAC) {\n    var EOB = HTAC[0x00];\n    var M16zeroes = HTAC[0xf0];\n    var pos;\n    var I16 = 16;\n    var I63 = 63;\n    var I64 = 64;\n    var DU_DCT = fDCTQuant(CDU, fdtbl);\n    //ZigZag reorder\n    for (var j = 0; j < I64; ++j) {\n      DU[ZigZag[j]] = DU_DCT[j];\n    }\n    var Diff = DU[0] - DC;\n    DC = DU[0];\n    //Encode DC\n    if (Diff == 0) {\n      writeBits(HTDC[0]); // Diff might be 0\n    } else {\n      pos = 32767 + Diff;\n      writeBits(HTDC[category[pos]]);\n      writeBits(bitcode[pos]);\n    }\n    //Encode ACs\n    var end0pos = 63; // was const... which is crazy\n    while (end0pos > 0 && DU[end0pos] == 0) {\n      end0pos--;\n    }\n    //end0pos = first element in reverse order !=0\n    if (end0pos == 0) {\n      writeBits(EOB);\n      return DC;\n    }\n    var i = 1;\n    var lng;\n    while (i <= end0pos) {\n      var startpos = i;\n      while (DU[i] == 0 && i <= end0pos) {\n        ++i;\n      }\n      var nrzeroes = i - startpos;\n      if (nrzeroes >= I16) {\n        lng = nrzeroes >> 4;\n        for (var nrmarker = 1; nrmarker <= lng; ++nrmarker)\n          writeBits(M16zeroes);\n        nrzeroes = nrzeroes & 0xf;\n      }\n      pos = 32767 + DU[i];\n      writeBits(HTAC[(nrzeroes << 4) + category[pos]]);\n      writeBits(bitcode[pos]);\n      i++;\n    }\n    if (end0pos != I63) {\n      writeBits(EOB);\n    }\n    return DC;\n  }\n\n  function initCharLookupTable() {\n    var sfcc = String.fromCharCode;\n    for (var i = 0; i < 256; i++) {\n      ///// ACHTUNG // 255\n      clt[i] = sfcc(i);\n    }\n  }\n\n  this.encode = function(\n    image,\n    quality // image data object\n  ) {\n    if (quality) setQuality(quality);\n\n    // Initialize bit writer\n    byteout = new Array();\n    bytenew = 0;\n    bytepos = 7;\n\n    // Add JPEG headers\n    writeWord(0xffd8); // SOI\n    writeAPP0();\n    writeDQT();\n    writeSOF0(image.width, image.height);\n    writeDHT();\n    writeSOS();\n\n    // Encode 8x8 macroblocks\n    var DCY = 0;\n    var DCU = 0;\n    var DCV = 0;\n\n    bytenew = 0;\n    bytepos = 7;\n\n    this.encode.displayName = \"_encode_\";\n\n    var imageData = image.data;\n    var width = image.width;\n    var height = image.height;\n\n    var quadWidth = width * 4;\n\n    var x,\n      y = 0;\n    var r, g, b;\n    var start, p, col, row, pos;\n    while (y < height) {\n      x = 0;\n      while (x < quadWidth) {\n        start = quadWidth * y + x;\n        col = -1;\n        row = 0;\n\n        for (pos = 0; pos < 64; pos++) {\n          row = pos >> 3; // /8\n          col = (pos & 7) * 4; // %8\n          p = start + row * quadWidth + col;\n\n          if (y + row >= height) {\n            // padding bottom\n            p -= quadWidth * (y + 1 + row - height);\n          }\n\n          if (x + col >= quadWidth) {\n            // padding right\n            p -= x + col - quadWidth + 4;\n          }\n\n          r = imageData[p++];\n          g = imageData[p++];\n          b = imageData[p++];\n\n          /* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\n          // use lookup table (slightly faster)\n          YDU[pos] =\n            ((RGB_YUV_TABLE[r] +\n              RGB_YUV_TABLE[(g + 256) >> 0] +\n              RGB_YUV_TABLE[(b + 512) >> 0]) >>\n              16) -\n            128;\n          UDU[pos] =\n            ((RGB_YUV_TABLE[(r + 768) >> 0] +\n              RGB_YUV_TABLE[(g + 1024) >> 0] +\n              RGB_YUV_TABLE[(b + 1280) >> 0]) >>\n              16) -\n            128;\n          VDU[pos] =\n            ((RGB_YUV_TABLE[(r + 1280) >> 0] +\n              RGB_YUV_TABLE[(g + 1536) >> 0] +\n              RGB_YUV_TABLE[(b + 1792) >> 0]) >>\n              16) -\n            128;\n        }\n\n        DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n        DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n        DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n        x += 32;\n      }\n      y += 8;\n    }\n\n    ////////////////////////////////////////////////////////////////\n\n    // Do the bit alignment of the EOI marker\n    if (bytepos >= 0) {\n      var fillbits = [];\n      fillbits[1] = bytepos + 1;\n      fillbits[0] = (1 << (bytepos + 1)) - 1;\n      writeBits(fillbits);\n    }\n\n    writeWord(0xffd9); //EOI\n\n    return new Uint8Array(byteout);\n  };\n\n  function setQuality(quality) {\n    quality = Math.min(Math.max(quality, 1), 100);\n\n    if (currentQuality == quality) return; // don't recalc if unchanged\n\n    var sf =\n      quality < 50 ? Math.floor(5000 / quality) : Math.floor(200 - quality * 2);\n\n    initQuantTables(sf);\n    currentQuality = quality;\n    //console.log('Quality set to: '+quality +'%');\n  }\n\n  function init() {\n    quality = quality || 50;\n    // Create tables\n    initCharLookupTable();\n    initHuffmanTbl();\n    initCategoryNumber();\n    initRGBYUVTable();\n\n    setQuality(quality);\n  }\n  init();\n}\n\nexport { JPEGEncoder };\n", "/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nimport { console } from \"./console.js\";\n\nfunction BmpDecoder(buffer, is_with_alpha) {\n  this.pos = 0;\n  this.buffer = buffer;\n  this.datav = new DataView(buffer.buffer);\n  this.is_with_alpha = !!is_with_alpha;\n  this.bottom_up = true;\n  this.flag =\n    String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]);\n  this.pos += 2;\n  if ([\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag) === -1)\n    throw new Error(\"Invalid BMP File\");\n  this.parseHeader();\n  this.parseBGR();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n  this.fileSize = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.reserved = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.offset = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.headerSize = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.width = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.height = this.datav.getInt32(this.pos, true);\n  this.pos += 4;\n  this.planes = this.datav.getUint16(this.pos, true);\n  this.pos += 2;\n  this.bitPP = this.datav.getUint16(this.pos, true);\n  this.pos += 2;\n  this.compress = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.rawSize = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.hr = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.vr = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.colors = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.importantColors = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n\n  if (this.bitPP === 16 && this.is_with_alpha) {\n    this.bitPP = 15;\n  }\n  if (this.bitPP < 15) {\n    var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n    this.palette = new Array(len);\n    for (var i = 0; i < len; i++) {\n      var blue = this.datav.getUint8(this.pos++, true);\n      var green = this.datav.getUint8(this.pos++, true);\n      var red = this.datav.getUint8(this.pos++, true);\n      var quad = this.datav.getUint8(this.pos++, true);\n      this.palette[i] = {\n        red: red,\n        green: green,\n        blue: blue,\n        quad: quad\n      };\n    }\n  }\n  if (this.height < 0) {\n    this.height *= -1;\n    this.bottom_up = false;\n  }\n};\n\nBmpDecoder.prototype.parseBGR = function() {\n  this.pos = this.offset;\n  try {\n    var bitn = \"bit\" + this.bitPP;\n    var len = this.width * this.height * 4;\n    this.data = new Uint8Array(len);\n\n    this[bitn]();\n  } catch (e) {\n    console.log(\"bit decode error:\" + e);\n  }\n};\n\nBmpDecoder.prototype.bit1 = function() {\n  var xlen = Math.ceil(this.width / 8);\n  var mode = xlen % 4;\n  var y;\n  for (y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < xlen; x++) {\n      var b = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 8 * 4;\n      for (var i = 0; i < 8; i++) {\n        if (x * 8 + i < this.width) {\n          var rgb = this.palette[(b >> (7 - i)) & 0x1];\n          this.data[location + i * 4] = rgb.blue;\n          this.data[location + i * 4 + 1] = rgb.green;\n          this.data[location + i * 4 + 2] = rgb.red;\n          this.data[location + i * 4 + 3] = 0xff;\n        } else {\n          break;\n        }\n      }\n    }\n\n    if (mode !== 0) {\n      this.pos += 4 - mode;\n    }\n  }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n  var xlen = Math.ceil(this.width / 2);\n  var mode = xlen % 4;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < xlen; x++) {\n      var b = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 2 * 4;\n\n      var before = b >> 4;\n      var after = b & 0x0f;\n\n      var rgb = this.palette[before];\n      this.data[location] = rgb.blue;\n      this.data[location + 1] = rgb.green;\n      this.data[location + 2] = rgb.red;\n      this.data[location + 3] = 0xff;\n\n      if (x * 2 + 1 >= this.width) break;\n\n      rgb = this.palette[after];\n      this.data[location + 4] = rgb.blue;\n      this.data[location + 4 + 1] = rgb.green;\n      this.data[location + 4 + 2] = rgb.red;\n      this.data[location + 4 + 3] = 0xff;\n    }\n\n    if (mode !== 0) {\n      this.pos += 4 - mode;\n    }\n  }\n};\n\nBmpDecoder.prototype.bit8 = function() {\n  var mode = this.width % 4;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var b = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 4;\n      if (b < this.palette.length) {\n        var rgb = this.palette[b];\n        this.data[location] = rgb.red;\n        this.data[location + 1] = rgb.green;\n        this.data[location + 2] = rgb.blue;\n        this.data[location + 3] = 0xff;\n      } else {\n        this.data[location] = 0xff;\n        this.data[location + 1] = 0xff;\n        this.data[location + 2] = 0xff;\n        this.data[location + 3] = 0xff;\n      }\n    }\n    if (mode !== 0) {\n      this.pos += 4 - mode;\n    }\n  }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n  var dif_w = this.width % 3;\n  var _11111 = parseInt(\"11111\", 2),\n    _1_5 = _11111;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var B = this.datav.getUint16(this.pos, true);\n      this.pos += 2;\n      var blue = (((B & _1_5) / _1_5) * 255) | 0;\n      var green = ((((B >> 5) & _1_5) / _1_5) * 255) | 0;\n      var red = ((((B >> 10) & _1_5) / _1_5) * 255) | 0;\n      var alpha = B >> 15 ? 0xff : 0x00;\n\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = alpha;\n    }\n    //skip extra bytes\n    this.pos += dif_w;\n  }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n  var dif_w = this.width % 3;\n  var _11111 = parseInt(\"11111\", 2),\n    _1_5 = _11111;\n  var _111111 = parseInt(\"111111\", 2),\n    _1_6 = _111111;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var B = this.datav.getUint16(this.pos, true);\n      this.pos += 2;\n      var alpha = 0xff;\n      var blue = (((B & _1_5) / _1_5) * 255) | 0;\n      var green = ((((B >> 5) & _1_6) / _1_6) * 255) | 0;\n      var red = (((B >> 11) / _1_5) * 255) | 0;\n\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = alpha;\n    }\n    //skip extra bytes\n    this.pos += dif_w;\n  }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n  //when height > 0\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var blue = this.datav.getUint8(this.pos++, true);\n      var green = this.datav.getUint8(this.pos++, true);\n      var red = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = 0xff;\n    }\n    //skip extra bytes\n    this.pos += this.width % 4;\n  }\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n  //when height > 0\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var blue = this.datav.getUint8(this.pos++, true);\n      var green = this.datav.getUint8(this.pos++, true);\n      var red = this.datav.getUint8(this.pos++, true);\n      var alpha = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = alpha;\n    }\n    //skip extra bytes\n    //this.pos += (this.width % 4);\n  }\n};\n\nBmpDecoder.prototype.getData = function() {\n  return this.data;\n};\n\nexport { BmpDecoder };\n", "function WebPDecoder(imageData) {\n  /** @license\n   * Copyright 2011 Google Inc.\n   *\n   * This code is licensed under the same terms as WebM:\n   *  Software License Agreement:  http://www.webmproject.org/license/software/\n   *  Additional IP Rights Grant:  http://www.webmproject.org/license/additional/\n   * -----------------------------------------------------------------------------\n   *\n   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n   * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n   * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n   * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n   *\n   * -----------------------------------------------------------------------------\n   *\n   * Copyright 2011-2017 Dominik Homberger\n   * Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.6.0)\n   *\n   * Author: Dominik Homberger (dominik.homberger@gmail.com)\n   */\n\n  var self = this;\n  var UpsampleRgbLinePair,\n    UpsampleBgrLinePair,\n    UpsampleRgbaLinePair,\n    UpsampleBgraLinePair,\n    UpsampleArgbLinePair,\n    UpsampleArgbLinePair,\n    UpsampleRgba4444LinePair,\n    UpsampleRgb565LinePair;\n\n  function x(F) {\n    if (!F) throw Error(\"assert :P\");\n  }\n  function fa(F, L, J) {\n    for (var H = 0; 4 > H; H++) if (F[L + H] != J.charCodeAt(H)) return !0;\n    return !1;\n  }\n  function I(F, L, J, H, Z) {\n    for (var O = 0; O < Z; O++) F[L + O] = J[H + O];\n  }\n  function M(F, L, J, H) {\n    for (var Z = 0; Z < H; Z++) F[L + Z] = J;\n  }\n  function V(F) {\n    return new Int32Array(F);\n  }\n  function wa(F, L) {\n    for (var J = [], H = 0; H < F; H++) J.push(new L());\n    return J;\n  }\n  function wb() {\n    function F(J, H, Z) {\n      for (var O = Z[H], L = 0; L < O; L++) {\n        J.push(Z.length > H + 1 ? [] : 0);\n        if (Z.length < H + 1) break;\n        F(J[L], H + 1, Z);\n      }\n    }\n    var L = [];\n    F(L, 0, [3, 11]);\n    return L;\n  }\n  function Ed(F, L) {\n    function J(H, O, F) {\n      for (var Z = F[O], ma = 0; ma < Z; ma++) {\n        H.push(F.length > O + 1 ? [] : new L());\n        if (F.length < O + 1) break;\n        J(H[ma], O + 1, F);\n      }\n    }\n    var H = [];\n    J(H, 0, F);\n    return H;\n  }\n  var _WebPDecoder = function() {\n    var self = this;\n    function F() {\n      V(55);\n    }\n    function L(a, b) {\n      for (var c = (1 << (b - 1)) >>> 0; a & c; ) c >>>= 1;\n      return c ? (a & (c - 1)) + c : a;\n    }\n    function J(a, b, c, d, e) {\n      x(!(d % c));\n      do (d -= c), (a[b + d] = e);\n      while (0 < d);\n    }\n    function H(a, b, c, d, e, f) {\n      var g = b,\n        h = 1 << c,\n        k,\n        l,\n        m = V(16),\n        n = V(16);\n      x(0 != e);\n      x(null != d);\n      x(null != a);\n      x(0 < c);\n      for (l = 0; l < e; ++l) {\n        if (15 < d[l]) return 0;\n        ++m[d[l]];\n      }\n      if (m[0] == e) return 0;\n      n[1] = 0;\n      for (k = 1; 15 > k; ++k) {\n        if (m[k] > 1 << k) return 0;\n        n[k + 1] = n[k] + m[k];\n      }\n      for (l = 0; l < e; ++l) (k = d[l]), 0 < d[l] && (f[n[k]++] = l);\n      if (1 == n[15])\n        return (d = new O()), (d.g = 0), (d.value = f[0]), J(a, g, 1, h, d), h;\n      var r = -1,\n        q = h - 1,\n        t = 0,\n        v = 1,\n        p = 1,\n        u,\n        w = 1 << c;\n      l = 0;\n      k = 1;\n      for (e = 2; k <= c; ++k, e <<= 1) {\n        p <<= 1;\n        v += p;\n        p -= m[k];\n        if (0 > p) return 0;\n        for (; 0 < m[k]; --m[k])\n          (d = new O()),\n            (d.g = k),\n            (d.value = f[l++]),\n            J(a, g + t, e, w, d),\n            (t = L(t, k));\n      }\n      k = c + 1;\n      for (e = 2; 15 >= k; ++k, e <<= 1) {\n        p <<= 1;\n        v += p;\n        p -= m[k];\n        if (0 > p) return 0;\n        for (; 0 < m[k]; --m[k]) {\n          d = new O();\n          if ((t & q) != r) {\n            g += w;\n            r = k;\n            for (u = 1 << (r - c); 15 > r; ) {\n              u -= m[r];\n              if (0 >= u) break;\n              ++r;\n              u <<= 1;\n            }\n            u = r - c;\n            w = 1 << u;\n            h += w;\n            r = t & q;\n            a[b + r].g = u + c;\n            a[b + r].value = g - b - r;\n          }\n          d.g = k - c;\n          d.value = f[l++];\n          J(a, g + (t >> c), e, w, d);\n          t = L(t, k);\n        }\n      }\n      return v != 2 * n[15] - 1 ? 0 : h;\n    }\n    function Z(a, b, c, d, e) {\n      x(2328 >= e);\n      if (512 >= e) var f = V(512);\n      else if (((f = V(e)), null == f)) return 0;\n      return H(a, b, c, d, e, f);\n    }\n    function O() {\n      this.value = this.g = 0;\n    }\n    function Fd() {\n      this.value = this.g = 0;\n    }\n    function Ub() {\n      this.G = wa(5, O);\n      this.H = V(5);\n      this.jc = this.Qb = this.qb = this.nd = 0;\n      this.pd = wa(xb, Fd);\n    }\n    function ma(a, b, c, d) {\n      x(null != a);\n      x(null != b);\n      x(2147483648 > d);\n      a.Ca = 254;\n      a.I = 0;\n      a.b = -8;\n      a.Ka = 0;\n      a.oa = b;\n      a.pa = c;\n      a.Jd = b;\n      a.Yc = c + d;\n      a.Zc = 4 <= d ? c + d - 4 + 1 : c;\n      Qa(a);\n    }\n    function na(a, b) {\n      for (var c = 0; 0 < b--; ) c |= K(a, 128) << b;\n      return c;\n    }\n    function ca(a, b) {\n      var c = na(a, b);\n      return G(a) ? -c : c;\n    }\n    function cb(a, b, c, d) {\n      var e,\n        f = 0;\n      x(null != a);\n      x(null != b);\n      x(4294967288 > d);\n      a.Sb = d;\n      a.Ra = 0;\n      a.u = 0;\n      a.h = 0;\n      4 < d && (d = 4);\n      for (e = 0; e < d; ++e) f += b[c + e] << (8 * e);\n      a.Ra = f;\n      a.bb = d;\n      a.oa = b;\n      a.pa = c;\n    }\n    function Vb(a) {\n      for (; 8 <= a.u && a.bb < a.Sb; )\n        (a.Ra >>>= 8),\n          (a.Ra += (a.oa[a.pa + a.bb] << (ob - 8)) >>> 0),\n          ++a.bb,\n          (a.u -= 8);\n      db(a) && ((a.h = 1), (a.u = 0));\n    }\n    function D(a, b) {\n      x(0 <= b);\n      if (!a.h && b <= Gd) {\n        var c = pb(a) & Hd[b];\n        a.u += b;\n        Vb(a);\n        return c;\n      }\n      a.h = 1;\n      return (a.u = 0);\n    }\n    function Wb() {\n      this.b = this.Ca = this.I = 0;\n      this.oa = [];\n      this.pa = 0;\n      this.Jd = [];\n      this.Yc = 0;\n      this.Zc = [];\n      this.Ka = 0;\n    }\n    function Ra() {\n      this.Ra = 0;\n      this.oa = [];\n      this.h = this.u = this.bb = this.Sb = this.pa = 0;\n    }\n    function pb(a) {\n      return (a.Ra >>> (a.u & (ob - 1))) >>> 0;\n    }\n    function db(a) {\n      x(a.bb <= a.Sb);\n      return a.h || (a.bb == a.Sb && a.u > ob);\n    }\n    function qb(a, b) {\n      a.u = b;\n      a.h = db(a);\n    }\n    function Sa(a) {\n      a.u >= Xb && (x(a.u >= Xb), Vb(a));\n    }\n    function Qa(a) {\n      x(null != a && null != a.oa);\n      a.pa < a.Zc\n        ? ((a.I = (a.oa[a.pa++] | (a.I << 8)) >>> 0), (a.b += 8))\n        : (x(null != a && null != a.oa),\n          a.pa < a.Yc\n            ? ((a.b += 8), (a.I = a.oa[a.pa++] | (a.I << 8)))\n            : a.Ka\n            ? (a.b = 0)\n            : ((a.I <<= 8), (a.b += 8), (a.Ka = 1)));\n    }\n    function G(a) {\n      return na(a, 1);\n    }\n    function K(a, b) {\n      var c = a.Ca;\n      0 > a.b && Qa(a);\n      var d = a.b,\n        e = (c * b) >>> 8,\n        f = (a.I >>> d > e) + 0;\n      f ? ((c -= e), (a.I -= ((e + 1) << d) >>> 0)) : (c = e + 1);\n      d = c;\n      for (e = 0; 256 <= d; ) (e += 8), (d >>= 8);\n      d = 7 ^ (e + Id[d]);\n      a.b -= d;\n      a.Ca = (c << d) - 1;\n      return f;\n    }\n    function ra(a, b, c) {\n      a[b + 0] = (c >> 24) & 255;\n      a[b + 1] = (c >> 16) & 255;\n      a[b + 2] = (c >> 8) & 255;\n      a[b + 3] = (c >> 0) & 255;\n    }\n    function Ta(a, b) {\n      return (a[b + 0] << 0) | (a[b + 1] << 8);\n    }\n    function Yb(a, b) {\n      return Ta(a, b) | (a[b + 2] << 16);\n    }\n    function Ha(a, b) {\n      return Ta(a, b) | (Ta(a, b + 2) << 16);\n    }\n    function Zb(a, b) {\n      var c = 1 << b;\n      x(null != a);\n      x(0 < b);\n      a.X = V(c);\n      if (null == a.X) return 0;\n      a.Mb = 32 - b;\n      a.Xa = b;\n      return 1;\n    }\n    function $b(a, b) {\n      x(null != a);\n      x(null != b);\n      x(a.Xa == b.Xa);\n      I(b.X, 0, a.X, 0, 1 << b.Xa);\n    }\n    function ac() {\n      this.X = [];\n      this.Xa = this.Mb = 0;\n    }\n    function bc(a, b, c, d) {\n      x(null != c);\n      x(null != d);\n      var e = c[0],\n        f = d[0];\n      0 == e && (e = (a * f + b / 2) / b);\n      0 == f && (f = (b * e + a / 2) / a);\n      if (0 >= e || 0 >= f) return 0;\n      c[0] = e;\n      d[0] = f;\n      return 1;\n    }\n    function xa(a, b) {\n      return (a + (1 << b) - 1) >>> b;\n    }\n    function yb(a, b) {\n      return (\n        (((((a & 4278255360) + (b & 4278255360)) >>> 0) & 4278255360) +\n          ((((a & 16711935) + (b & 16711935)) >>> 0) & 16711935)) >>>\n        0\n      );\n    }\n    function X(a, b) {\n      self[b] = function(b, d, e, f, g, h, k) {\n        var c;\n        for (c = 0; c < g; ++c) {\n          var m = self[a](h[k + c - 1], e, f + c);\n          h[k + c] = yb(b[d + c], m);\n        }\n      };\n    }\n    function Jd() {\n      this.ud = this.hd = this.jd = 0;\n    }\n    function aa(a, b) {\n      return ((((a ^ b) & 4278124286) >>> 1) + (a & b)) >>> 0;\n    }\n    function sa(a) {\n      if (0 <= a && 256 > a) return a;\n      if (0 > a) return 0;\n      if (255 < a) return 255;\n    }\n    function eb(a, b) {\n      return sa(a + ((a - b + 0.5) >> 1));\n    }\n    function Ia(a, b, c) {\n      return Math.abs(b - c) - Math.abs(a - c);\n    }\n    function cc(a, b, c, d, e, f, g) {\n      d = f[g - 1];\n      for (c = 0; c < e; ++c) f[g + c] = d = yb(a[b + c], d);\n    }\n    function Kd(a, b, c, d, e) {\n      var f;\n      for (f = 0; f < c; ++f) {\n        var g = a[b + f],\n          h = (g >> 8) & 255,\n          k = g & 16711935,\n          k = k + ((h << 16) + h),\n          k = k & 16711935;\n        d[e + f] = ((g & 4278255360) + k) >>> 0;\n      }\n    }\n    function dc(a, b) {\n      b.jd = (a >> 0) & 255;\n      b.hd = (a >> 8) & 255;\n      b.ud = (a >> 16) & 255;\n    }\n    function Ld(a, b, c, d, e, f) {\n      var g;\n      for (g = 0; g < d; ++g) {\n        var h = b[c + g],\n          k = h >>> 8,\n          l = h >>> 16,\n          m = h,\n          l = l + ((((a.jd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n          l = l & 255,\n          m = m + ((((a.hd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n          m = m + ((((a.ud << 24) >> 24) * ((l << 24) >> 24)) >>> 5),\n          m = m & 255;\n        e[f + g] = (h & 4278255360) + (l << 16) + m;\n      }\n    }\n    function ec(a, b, c, d, e) {\n      self[b] = function(a, b, c, k, l, m, n, r, q) {\n        for (k = n; k < r; ++k)\n          for (n = 0; n < q; ++n) l[m++] = e(c[d(a[b++])]);\n      };\n      self[a] = function(a, b, h, k, l, m, n) {\n        var f = 8 >> a.b,\n          g = a.Ea,\n          t = a.K[0],\n          v = a.w;\n        if (8 > f)\n          for (a = (1 << a.b) - 1, v = (1 << f) - 1; b < h; ++b) {\n            var p = 0,\n              u;\n            for (u = 0; u < g; ++u)\n              u & a || (p = d(k[l++])), (m[n++] = e(t[p & v])), (p >>= f);\n          }\n        else self[\"VP8LMapColor\" + c](k, l, t, v, m, n, b, h, g);\n      };\n    }\n    function Md(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++];\n        d[e++] = (f >> 16) & 255;\n        d[e++] = (f >> 8) & 255;\n        d[e++] = (f >> 0) & 255;\n      }\n    }\n    function Nd(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++];\n        d[e++] = (f >> 16) & 255;\n        d[e++] = (f >> 8) & 255;\n        d[e++] = (f >> 0) & 255;\n        d[e++] = (f >> 24) & 255;\n      }\n    }\n    function Od(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++],\n          g = ((f >> 16) & 240) | ((f >> 12) & 15),\n          f = ((f >> 0) & 240) | ((f >> 28) & 15);\n        d[e++] = g;\n        d[e++] = f;\n      }\n    }\n    function Pd(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++],\n          g = ((f >> 16) & 248) | ((f >> 13) & 7),\n          f = ((f >> 5) & 224) | ((f >> 3) & 31);\n        d[e++] = g;\n        d[e++] = f;\n      }\n    }\n    function Qd(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++];\n        d[e++] = (f >> 0) & 255;\n        d[e++] = (f >> 8) & 255;\n        d[e++] = (f >> 16) & 255;\n      }\n    }\n    function fb(a, b, c, d, e, f) {\n      if (0 == f)\n        for (c = b + c; b < c; )\n          (f = a[b++]),\n            ra(\n              d,\n              ((f[0] >> 24) |\n                ((f[1] >> 8) & 65280) |\n                ((f[2] << 8) & 16711680) |\n                (f[3] << 24)) >>>\n                0\n            ),\n            (e += 32);\n      else I(d, e, a, b, c);\n    }\n    function gb(a, b) {\n      self[b][0] = self[a + \"0\"];\n      self[b][1] = self[a + \"1\"];\n      self[b][2] = self[a + \"2\"];\n      self[b][3] = self[a + \"3\"];\n      self[b][4] = self[a + \"4\"];\n      self[b][5] = self[a + \"5\"];\n      self[b][6] = self[a + \"6\"];\n      self[b][7] = self[a + \"7\"];\n      self[b][8] = self[a + \"8\"];\n      self[b][9] = self[a + \"9\"];\n      self[b][10] = self[a + \"10\"];\n      self[b][11] = self[a + \"11\"];\n      self[b][12] = self[a + \"12\"];\n      self[b][13] = self[a + \"13\"];\n      self[b][14] = self[a + \"0\"];\n      self[b][15] = self[a + \"0\"];\n    }\n    function hb(a) {\n      return a == zb || a == Ab || a == Ja || a == Bb;\n    }\n    function Rd() {\n      this.eb = [];\n      this.size = this.A = this.fb = 0;\n    }\n    function Sd() {\n      this.y = [];\n      this.f = [];\n      this.ea = [];\n      this.F = [];\n      this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;\n    }\n    function Cb() {\n      this.Rd = this.height = this.width = this.S = 0;\n      this.f = {};\n      this.f.RGBA = new Rd();\n      this.f.kb = new Sd();\n      this.sd = null;\n    }\n    function Td() {\n      this.width = [0];\n      this.height = [0];\n      this.Pd = [0];\n      this.Qd = [0];\n      this.format = [0];\n    }\n    function Ud() {\n      this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;\n    }\n    function Vd(a) {\n      alert(\"todo:WebPSamplerProcessPlane\");\n      return a.T;\n    }\n    function Wd(a, b) {\n      var c = a.T,\n        d = b.ba.f.RGBA,\n        e = d.eb,\n        f = d.fb + a.ka * d.A,\n        g = P[b.ba.S],\n        h = a.y,\n        k = a.O,\n        l = a.f,\n        m = a.N,\n        n = a.ea,\n        r = a.W,\n        q = b.cc,\n        t = b.dc,\n        v = b.Mc,\n        p = b.Nc,\n        u = a.ka,\n        w = a.ka + a.T,\n        y = a.U,\n        A = (y + 1) >> 1;\n      0 == u\n        ? g(h, k, null, null, l, m, n, r, l, m, n, r, e, f, null, null, y)\n        : (g(b.ec, b.fc, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y),\n          ++c);\n      for (; u + 2 < w; u += 2)\n        (q = l),\n          (t = m),\n          (v = n),\n          (p = r),\n          (m += a.Rc),\n          (r += a.Rc),\n          (f += 2 * d.A),\n          (k += 2 * a.fa),\n          g(h, k - a.fa, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y);\n      k += a.fa;\n      a.j + w < a.o\n        ? (I(b.ec, b.fc, h, k, y),\n          I(b.cc, b.dc, l, m, A),\n          I(b.Mc, b.Nc, n, r, A),\n          c--)\n        : w & 1 ||\n          g(\n            h,\n            k,\n            null,\n            null,\n            l,\n            m,\n            n,\n            r,\n            l,\n            m,\n            n,\n            r,\n            e,\n            f + d.A,\n            null,\n            null,\n            y\n          );\n      return c;\n    }\n    function Xd(a, b, c) {\n      var d = a.F,\n        e = [a.J];\n      if (null != d) {\n        var f = a.U,\n          g = b.ba.S,\n          h = g == ya || g == Ja;\n        b = b.ba.f.RGBA;\n        var k = [0],\n          l = a.ka;\n        k[0] = a.T;\n        a.Kb &&\n          (0 == l ? --k[0] : (--l, (e[0] -= a.width)),\n          a.j + a.ka + a.T == a.o && (k[0] = a.o - a.j - l));\n        var m = b.eb,\n          l = b.fb + l * b.A;\n        a = fc(d, e[0], a.width, f, k, m, l + (h ? 0 : 3), b.A);\n        x(c == k);\n        a && hb(g) && za(m, l, h, f, k, b.A);\n      }\n      return 0;\n    }\n    function gc(a) {\n      var b = a.ma,\n        c = b.ba.S,\n        d = 11 > c,\n        e = c == Ua || c == Va || c == ya || c == Db || 12 == c || hb(c);\n      b.memory = null;\n      b.Ib = null;\n      b.Jb = null;\n      b.Nd = null;\n      if (!hc(b.Oa, a, e ? 11 : 12)) return 0;\n      e && hb(c) && ic();\n      if (a.da) alert(\"todo:use_scaling\");\n      else {\n        if (d) {\n          if (((b.Ib = Vd), a.Kb)) {\n            c = (a.U + 1) >> 1;\n            b.memory = V(a.U + 2 * c);\n            if (null == b.memory) return 0;\n            b.ec = b.memory;\n            b.fc = 0;\n            b.cc = b.ec;\n            b.dc = b.fc + a.U;\n            b.Mc = b.cc;\n            b.Nc = b.dc + c;\n            b.Ib = Wd;\n            ic();\n          }\n        } else alert(\"todo:EmitYUV\");\n        e && ((b.Jb = Xd), d && Aa());\n      }\n      if (d && !jc) {\n        for (a = 0; 256 > a; ++a)\n          (Yd[a] = (89858 * (a - 128) + Ba) >> Wa),\n            (Zd[a] = -22014 * (a - 128) + Ba),\n            ($d[a] = -45773 * (a - 128)),\n            (ae[a] = (113618 * (a - 128) + Ba) >> Wa);\n        for (a = ta; a < Eb; ++a)\n          (b = (76283 * (a - 16) + Ba) >> Wa),\n            (be[a - ta] = ga(b, 255)),\n            (ce[a - ta] = ga((b + 8) >> 4, 15));\n        jc = 1;\n      }\n      return 1;\n    }\n    function kc(a) {\n      var b = a.ma,\n        c = a.U,\n        d = a.T;\n      x(!(a.ka & 1));\n      if (0 >= c || 0 >= d) return 0;\n      c = b.Ib(a, b);\n      null != b.Jb && b.Jb(a, b, c);\n      b.Dc += c;\n      return 1;\n    }\n    function lc(a) {\n      a.ma.memory = null;\n    }\n    function mc(a, b, c, d) {\n      if (47 != D(a, 8)) return 0;\n      b[0] = D(a, 14) + 1;\n      c[0] = D(a, 14) + 1;\n      d[0] = D(a, 1);\n      return 0 != D(a, 3) ? 0 : !a.h;\n    }\n    function ib(a, b) {\n      if (4 > a) return a + 1;\n      var c = (a - 2) >> 1;\n      return ((2 + (a & 1)) << c) + D(b, c) + 1;\n    }\n    function nc(a, b) {\n      if (120 < b) return b - 120;\n      var c = de[b - 1],\n        c = (c >> 4) * a + (8 - (c & 15));\n      return 1 <= c ? c : 1;\n    }\n    function ua(a, b, c) {\n      var d = pb(c);\n      b += d & 255;\n      var e = a[b].g - 8;\n      0 < e &&\n        (qb(c, c.u + 8),\n        (d = pb(c)),\n        (b += a[b].value),\n        (b += d & ((1 << e) - 1)));\n      qb(c, c.u + a[b].g);\n      return a[b].value;\n    }\n    function ub(a, b, c) {\n      c.g += a.g;\n      c.value += (a.value << b) >>> 0;\n      x(8 >= c.g);\n      return a.g;\n    }\n    function ha(a, b, c) {\n      var d = a.xc;\n      b = 0 == d ? 0 : a.vc[a.md * (c >> d) + (b >> d)];\n      x(b < a.Wb);\n      return a.Ya[b];\n    }\n    function oc(a, b, c, d) {\n      var e = a.ab,\n        f = a.c * b,\n        g = a.C;\n      b = g + b;\n      var h = c,\n        k = d;\n      d = a.Ta;\n      for (c = a.Ua; 0 < e--; ) {\n        var l = a.gc[e],\n          m = g,\n          n = b,\n          r = h,\n          q = k,\n          k = d,\n          h = c,\n          t = l.Ea;\n        x(m < n);\n        x(n <= l.nc);\n        switch (l.hc) {\n          case 2:\n            pc(r, q, (n - m) * t, k, h);\n            break;\n          case 0:\n            var v = l,\n              p = m,\n              u = n,\n              w = k,\n              y = h,\n              A = v.Ea;\n            0 == p &&\n              (ee(r, q, null, null, 1, w, y),\n              cc(r, q + 1, 0, 0, A - 1, w, y + 1),\n              (q += A),\n              (y += A),\n              ++p);\n            for (\n              var E = 1 << v.b,\n                B = E - 1,\n                C = xa(A, v.b),\n                N = v.K,\n                v = v.w + (p >> v.b) * C;\n              p < u;\n\n            ) {\n              var z = N,\n                Q = v,\n                S = 1;\n              for (fe(r, q, w, y - A, 1, w, y); S < A; ) {\n                var K = qc[(z[Q++] >> 8) & 15],\n                  D = (S & ~B) + E;\n                D > A && (D = A);\n                K(r, q + +S, w, y + S - A, D - S, w, y + S);\n                S = D;\n              }\n              q += A;\n              y += A;\n              ++p;\n              p & B || (v += C);\n            }\n            n != l.nc && I(k, h - t, k, h + (n - m - 1) * t, t);\n            break;\n          case 1:\n            t = r;\n            u = q;\n            r = l.Ea;\n            q = 1 << l.b;\n            w = q - 1;\n            y = r & ~w;\n            A = r - y;\n            p = xa(r, l.b);\n            E = l.K;\n            for (l = l.w + (m >> l.b) * p; m < n; ) {\n              B = E;\n              C = l;\n              N = new Jd();\n              v = u + y;\n              for (z = u + r; u < v; )\n                dc(B[C++], N), Fb(N, t, u, q, k, h), (u += q), (h += q);\n              u < z &&\n                (dc(B[C++], N), Fb(N, t, u, A, k, h), (u += A), (h += A));\n              ++m;\n              m & w || (l += p);\n            }\n            break;\n          case 3:\n            if (r == k && q == h && 0 < l.b) {\n              y = (n - m) * xa(l.Ea, l.b);\n              t = h + (n - m) * t - y;\n              u = k;\n              r = t;\n              q = k;\n              w = h;\n              A = y;\n              p = [];\n              for (y = A - 1; 0 <= y; --y) p[y] = q[w + y];\n              for (y = A - 1; 0 <= y; --y) u[r + y] = p[y];\n              rc(l, m, n, k, t, k, h);\n            } else rc(l, m, n, r, q, k, h);\n        }\n        h = d;\n        k = c;\n      }\n      k != c && I(d, c, h, k, f);\n    }\n    function ge(a, b) {\n      var c = a.V,\n        d = a.Ba + a.c * a.C,\n        e = b - a.C;\n      x(b <= a.l.o);\n      x(16 >= e);\n      if (0 < e) {\n        var f = a.l,\n          g = a.Ta,\n          h = a.Ua,\n          k = f.width;\n        oc(a, e, c, d);\n        h = [h];\n        c = a.C;\n        d = b;\n        e = h;\n        x(c < d);\n        x(f.v < f.va);\n        d > f.o && (d = f.o);\n        if (c < f.j) {\n          var l = f.j - c,\n            c = f.j;\n          e[0] += l * k;\n        }\n        c >= d\n          ? (c = 0)\n          : ((e[0] += 4 * f.v),\n            (f.ka = c - f.j),\n            (f.U = f.va - f.v),\n            (f.T = d - c),\n            (c = 1));\n        if (c) {\n          h = h[0];\n          c = a.ca;\n          if (11 > c.S) {\n            for (\n              var m = c.f.RGBA,\n                d = c.S,\n                e = f.U,\n                f = f.T,\n                l = m.eb,\n                n = m.A,\n                r = f,\n                m = m.fb + a.Ma * m.A;\n              0 < r--;\n\n            ) {\n              var q = g,\n                t = h,\n                v = e,\n                p = l,\n                u = m;\n              switch (d) {\n                case Ca:\n                  sc(q, t, v, p, u);\n                  break;\n                case Ua:\n                  Gb(q, t, v, p, u);\n                  break;\n                case zb:\n                  Gb(q, t, v, p, u);\n                  za(p, u, 0, v, 1, 0);\n                  break;\n                case tc:\n                  uc(q, t, v, p, u);\n                  break;\n                case Va:\n                  fb(q, t, v, p, u, 1);\n                  break;\n                case Ab:\n                  fb(q, t, v, p, u, 1);\n                  za(p, u, 0, v, 1, 0);\n                  break;\n                case ya:\n                  fb(q, t, v, p, u, 0);\n                  break;\n                case Ja:\n                  fb(q, t, v, p, u, 0);\n                  za(p, u, 1, v, 1, 0);\n                  break;\n                case Db:\n                  Hb(q, t, v, p, u);\n                  break;\n                case Bb:\n                  Hb(q, t, v, p, u);\n                  vc(p, u, v, 1, 0);\n                  break;\n                case wc:\n                  xc(q, t, v, p, u);\n                  break;\n                default:\n                  x(0);\n              }\n              h += k;\n              m += n;\n            }\n            a.Ma += f;\n          } else alert(\"todo:EmitRescaledRowsYUVA\");\n          x(a.Ma <= c.height);\n        }\n      }\n      a.C = b;\n      x(a.C <= a.i);\n    }\n    function yc(a) {\n      var b;\n      if (0 < a.ua) return 0;\n      for (b = 0; b < a.Wb; ++b) {\n        var c = a.Ya[b].G,\n          d = a.Ya[b].H;\n        if (\n          0 < c[1][d[1] + 0].g ||\n          0 < c[2][d[2] + 0].g ||\n          0 < c[3][d[3] + 0].g\n        )\n          return 0;\n      }\n      return 1;\n    }\n    function zc(a, b, c, d, e, f) {\n      if (0 != a.Z) {\n        var g = a.qd,\n          h = a.rd;\n        for (x(null != ia[a.Z]); b < c; ++b)\n          ia[a.Z](g, h, d, e, d, e, f), (g = d), (h = e), (e += f);\n        a.qd = g;\n        a.rd = h;\n      }\n    }\n    function Ib(a, b) {\n      var c = a.l.ma,\n        d = 0 == c.Z || 1 == c.Z ? a.l.j : a.C,\n        d = a.C < d ? d : a.C;\n      x(b <= a.l.o);\n      if (b > d) {\n        var e = a.l.width,\n          f = c.ca,\n          g = c.tb + e * d,\n          h = a.V,\n          k = a.Ba + a.c * d,\n          l = a.gc;\n        x(1 == a.ab);\n        x(3 == l[0].hc);\n        he(l[0], d, b, h, k, f, g);\n        zc(c, d, b, f, g, e);\n      }\n      a.C = a.Ma = b;\n    }\n    function Jb(a, b, c, d, e, f, g) {\n      var h = a.$ / d,\n        k = a.$ % d,\n        l = a.m,\n        m = a.s,\n        n = c + a.$,\n        r = n;\n      e = c + d * e;\n      var q = c + d * f,\n        t = 280 + m.ua,\n        v = a.Pb ? h : 16777216,\n        p = 0 < m.ua ? m.Wa : null,\n        u = m.wc,\n        w = n < q ? ha(m, k, h) : null;\n      x(a.C < f);\n      x(q <= e);\n      var y = !1;\n      a: for (;;) {\n        for (; y || n < q; ) {\n          var A = 0;\n          if (h >= v) {\n            var v = a,\n              E = n - c;\n            x(v.Pb);\n            v.wd = v.m;\n            v.xd = E;\n            0 < v.s.ua && $b(v.s.Wa, v.s.vb);\n            v = h + ie;\n          }\n          k & u || (w = ha(m, k, h));\n          x(null != w);\n          w.Qb && ((b[n] = w.qb), (y = !0));\n          if (!y)\n            if ((Sa(l), w.jc)) {\n              var A = l,\n                E = b,\n                B = n,\n                C = w.pd[pb(A) & (xb - 1)];\n              x(w.jc);\n              256 > C.g\n                ? (qb(A, A.u + C.g), (E[B] = C.value), (A = 0))\n                : (qb(A, A.u + C.g - 256), x(256 <= C.value), (A = C.value));\n              0 == A && (y = !0);\n            } else A = ua(w.G[0], w.H[0], l);\n          if (l.h) break;\n          if (y || 256 > A) {\n            if (!y)\n              if (w.nd) b[n] = (w.qb | (A << 8)) >>> 0;\n              else {\n                Sa(l);\n                y = ua(w.G[1], w.H[1], l);\n                Sa(l);\n                E = ua(w.G[2], w.H[2], l);\n                B = ua(w.G[3], w.H[3], l);\n                if (l.h) break;\n                b[n] = ((B << 24) | (y << 16) | (A << 8) | E) >>> 0;\n              }\n            y = !1;\n            ++n;\n            ++k;\n            if (\n              k >= d &&\n              ((k = 0),\n              ++h,\n              null != g && h <= f && !(h % 16) && g(a, h),\n              null != p)\n            )\n              for (; r < n; )\n                (A = b[r++]),\n                  (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n          } else if (280 > A) {\n            A = ib(A - 256, l);\n            E = ua(w.G[4], w.H[4], l);\n            Sa(l);\n            E = ib(E, l);\n            E = nc(d, E);\n            if (l.h) break;\n            if (n - c < E || e - n < A) break a;\n            else for (B = 0; B < A; ++B) b[n + B] = b[n + B - E];\n            n += A;\n            for (k += A; k >= d; )\n              (k -= d), ++h, null != g && h <= f && !(h % 16) && g(a, h);\n            x(n <= e);\n            k & u && (w = ha(m, k, h));\n            if (null != p)\n              for (; r < n; )\n                (A = b[r++]),\n                  (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n          } else if (A < t) {\n            y = A - 280;\n            for (x(null != p); r < n; )\n              (A = b[r++]), (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n            A = n;\n            E = p;\n            x(!(y >>> E.Xa));\n            b[A] = E.X[y];\n            y = !0;\n          } else break a;\n          y || x(l.h == db(l));\n        }\n        if (a.Pb && l.h && n < e)\n          x(a.m.h),\n            (a.a = 5),\n            (a.m = a.wd),\n            (a.$ = a.xd),\n            0 < a.s.ua && $b(a.s.vb, a.s.Wa);\n        else if (l.h) break a;\n        else null != g && g(a, h > f ? f : h), (a.a = 0), (a.$ = n - c);\n        return 1;\n      }\n      a.a = 3;\n      return 0;\n    }\n    function Ac(a) {\n      x(null != a);\n      a.vc = null;\n      a.yc = null;\n      a.Ya = null;\n      var b = a.Wa;\n      null != b && (b.X = null);\n      a.vb = null;\n      x(null != a);\n    }\n    function Bc() {\n      var a = new je();\n      if (null == a) return null;\n      a.a = 0;\n      a.xb = Cc;\n      gb(\"Predictor\", \"VP8LPredictors\");\n      gb(\"Predictor\", \"VP8LPredictors_C\");\n      gb(\"PredictorAdd\", \"VP8LPredictorsAdd\");\n      gb(\"PredictorAdd\", \"VP8LPredictorsAdd_C\");\n      pc = Kd;\n      Fb = Ld;\n      sc = Md;\n      Gb = Nd;\n      Hb = Od;\n      xc = Pd;\n      uc = Qd;\n      self.VP8LMapColor32b = ke;\n      self.VP8LMapColor8b = le;\n      return a;\n    }\n    function rb(a, b, c, d, e) {\n      var f = 1,\n        g = [a],\n        h = [b],\n        k = d.m,\n        l = d.s,\n        m = null,\n        n = 0;\n      a: for (;;) {\n        if (c)\n          for (; f && D(k, 1); ) {\n            var r = g,\n              q = h,\n              t = d,\n              v = 1,\n              p = t.m,\n              u = t.gc[t.ab],\n              w = D(p, 2);\n            if (t.Oc & (1 << w)) f = 0;\n            else {\n              t.Oc |= 1 << w;\n              u.hc = w;\n              u.Ea = r[0];\n              u.nc = q[0];\n              u.K = [null];\n              ++t.ab;\n              x(4 >= t.ab);\n              switch (w) {\n                case 0:\n                case 1:\n                  u.b = D(p, 3) + 2;\n                  v = rb(xa(u.Ea, u.b), xa(u.nc, u.b), 0, t, u.K);\n                  u.K = u.K[0];\n                  break;\n                case 3:\n                  var y = D(p, 8) + 1,\n                    A = 16 < y ? 0 : 4 < y ? 1 : 2 < y ? 2 : 3;\n                  r[0] = xa(u.Ea, A);\n                  u.b = A;\n                  var v = rb(y, 1, 0, t, u.K),\n                    E;\n                  if ((E = v)) {\n                    var B,\n                      C = y,\n                      N = u,\n                      z = 1 << (8 >> N.b),\n                      Q = V(z);\n                    if (null == Q) E = 0;\n                    else {\n                      var S = N.K[0],\n                        K = N.w;\n                      Q[0] = N.K[0][0];\n                      for (B = 1; B < 1 * C; ++B) Q[B] = yb(S[K + B], Q[B - 1]);\n                      for (; B < 4 * z; ++B) Q[B] = 0;\n                      N.K[0] = null;\n                      N.K[0] = Q;\n                      E = 1;\n                    }\n                  }\n                  v = E;\n                  break;\n                case 2:\n                  break;\n                default:\n                  x(0);\n              }\n              f = v;\n            }\n          }\n        g = g[0];\n        h = h[0];\n        if (f && D(k, 1) && ((n = D(k, 4)), (f = 1 <= n && 11 >= n), !f)) {\n          d.a = 3;\n          break a;\n        }\n        var H;\n        if ((H = f))\n          b: {\n            var F = d,\n              G = g,\n              L = h,\n              J = n,\n              T = c,\n              Da,\n              ba,\n              X = F.m,\n              R = F.s,\n              P = [null],\n              U,\n              W = 1,\n              aa = 0,\n              na = me[J];\n            c: for (;;) {\n              if (T && D(X, 1)) {\n                var ca = D(X, 3) + 2,\n                  ga = xa(G, ca),\n                  ka = xa(L, ca),\n                  qa = ga * ka;\n                if (!rb(ga, ka, 0, F, P)) break c;\n                P = P[0];\n                R.xc = ca;\n                for (Da = 0; Da < qa; ++Da) {\n                  var ia = (P[Da] >> 8) & 65535;\n                  P[Da] = ia;\n                  ia >= W && (W = ia + 1);\n                }\n              }\n              if (X.h) break c;\n              for (ba = 0; 5 > ba; ++ba) {\n                var Y = Dc[ba];\n                !ba && 0 < J && (Y += 1 << J);\n                aa < Y && (aa = Y);\n              }\n              var ma = wa(W * na, O);\n              var ua = W,\n                va = wa(ua, Ub);\n              if (null == va) var la = null;\n              else x(65536 >= ua), (la = va);\n              var ha = V(aa);\n              if (null == la || null == ha || null == ma) {\n                F.a = 1;\n                break c;\n              }\n              var pa = ma;\n              for (Da = U = 0; Da < W; ++Da) {\n                var ja = la[Da],\n                  da = ja.G,\n                  ea = ja.H,\n                  Fa = 0,\n                  ra = 1,\n                  Ha = 0;\n                for (ba = 0; 5 > ba; ++ba) {\n                  Y = Dc[ba];\n                  da[ba] = pa;\n                  ea[ba] = U;\n                  !ba && 0 < J && (Y += 1 << J);\n                  d: {\n                    var sa,\n                      za = Y,\n                      ta = F,\n                      oa = ha,\n                      db = pa,\n                      eb = U,\n                      Ia = 0,\n                      Ka = ta.m,\n                      fb = D(Ka, 1);\n                    M(oa, 0, 0, za);\n                    if (fb) {\n                      var gb = D(Ka, 1) + 1,\n                        hb = D(Ka, 1),\n                        Ja = D(Ka, 0 == hb ? 1 : 8);\n                      oa[Ja] = 1;\n                      2 == gb && ((Ja = D(Ka, 8)), (oa[Ja] = 1));\n                      var ya = 1;\n                    } else {\n                      var Ua = V(19),\n                        Va = D(Ka, 4) + 4;\n                      if (19 < Va) {\n                        ta.a = 3;\n                        var Aa = 0;\n                        break d;\n                      }\n                      for (sa = 0; sa < Va; ++sa) Ua[ne[sa]] = D(Ka, 3);\n                      var Ba = void 0,\n                        sb = void 0,\n                        Wa = ta,\n                        ib = Ua,\n                        Ca = za,\n                        Xa = oa,\n                        Oa = 0,\n                        La = Wa.m,\n                        Ya = 8,\n                        Za = wa(128, O);\n                      e: for (;;) {\n                        if (!Z(Za, 0, 7, ib, 19)) break e;\n                        if (D(La, 1)) {\n                          var kb = 2 + 2 * D(La, 3),\n                            Ba = 2 + D(La, kb);\n                          if (Ba > Ca) break e;\n                        } else Ba = Ca;\n                        for (sb = 0; sb < Ca && Ba--; ) {\n                          Sa(La);\n                          var $a = Za[0 + (pb(La) & 127)];\n                          qb(La, La.u + $a.g);\n                          var jb = $a.value;\n                          if (16 > jb) (Xa[sb++] = jb), 0 != jb && (Ya = jb);\n                          else {\n                            var lb = 16 == jb,\n                              ab = jb - 16,\n                              mb = oe[ab],\n                              bb = D(La, pe[ab]) + mb;\n                            if (sb + bb > Ca) break e;\n                            else\n                              for (var nb = lb ? Ya : 0; 0 < bb--; )\n                                Xa[sb++] = nb;\n                          }\n                        }\n                        Oa = 1;\n                        break e;\n                      }\n                      Oa || (Wa.a = 3);\n                      ya = Oa;\n                    }\n                    (ya = ya && !Ka.h) && (Ia = Z(db, eb, 8, oa, za));\n                    ya && 0 != Ia ? (Aa = Ia) : ((ta.a = 3), (Aa = 0));\n                  }\n                  if (0 == Aa) break c;\n                  ra && 1 == qe[ba] && (ra = 0 == pa[U].g);\n                  Fa += pa[U].g;\n                  U += Aa;\n                  if (3 >= ba) {\n                    var Pa = ha[0],\n                      tb;\n                    for (tb = 1; tb < Y; ++tb) ha[tb] > Pa && (Pa = ha[tb]);\n                    Ha += Pa;\n                  }\n                }\n                ja.nd = ra;\n                ja.Qb = 0;\n                ra &&\n                  ((ja.qb =\n                    ((da[3][ea[3] + 0].value << 24) |\n                      (da[1][ea[1] + 0].value << 16) |\n                      da[2][ea[2] + 0].value) >>>\n                    0),\n                  0 == Fa &&\n                    256 > da[0][ea[0] + 0].value &&\n                    ((ja.Qb = 1), (ja.qb += da[0][ea[0] + 0].value << 8)));\n                ja.jc = !ja.Qb && 6 > Ha;\n                if (ja.jc) {\n                  var Ga,\n                    Ea = ja;\n                  for (Ga = 0; Ga < xb; ++Ga) {\n                    var Ma = Ga,\n                      Na = Ea.pd[Ma],\n                      vb = Ea.G[0][Ea.H[0] + Ma];\n                    256 <= vb.value\n                      ? ((Na.g = vb.g + 256), (Na.value = vb.value))\n                      : ((Na.g = 0),\n                        (Na.value = 0),\n                        (Ma >>= ub(vb, 8, Na)),\n                        (Ma >>= ub(Ea.G[1][Ea.H[1] + Ma], 16, Na)),\n                        (Ma >>= ub(Ea.G[2][Ea.H[2] + Ma], 0, Na)),\n                        ub(Ea.G[3][Ea.H[3] + Ma], 24, Na));\n                  }\n                }\n              }\n              R.vc = P;\n              R.Wb = W;\n              R.Ya = la;\n              R.yc = ma;\n              H = 1;\n              break b;\n            }\n            H = 0;\n          }\n        f = H;\n        if (!f) {\n          d.a = 3;\n          break a;\n        }\n        if (0 < n) {\n          if (((l.ua = 1 << n), !Zb(l.Wa, n))) {\n            d.a = 1;\n            f = 0;\n            break a;\n          }\n        } else l.ua = 0;\n        var Qa = d,\n          cb = g,\n          ob = h,\n          Ra = Qa.s,\n          Ta = Ra.xc;\n        Qa.c = cb;\n        Qa.i = ob;\n        Ra.md = xa(cb, Ta);\n        Ra.wc = 0 == Ta ? -1 : (1 << Ta) - 1;\n        if (c) {\n          d.xb = re;\n          break a;\n        }\n        m = V(g * h);\n        if (null == m) {\n          d.a = 1;\n          f = 0;\n          break a;\n        }\n        f = (f = Jb(d, m, 0, g, h, h, null)) && !k.h;\n        break a;\n      }\n      f\n        ? (null != e ? (e[0] = m) : (x(null == m), x(c)), (d.$ = 0), c || Ac(l))\n        : Ac(l);\n      return f;\n    }\n    function Ec(a, b) {\n      var c = a.c * a.i,\n        d = c + b + 16 * b;\n      x(a.c <= b);\n      a.V = V(d);\n      if (null == a.V) return (a.Ta = null), (a.Ua = 0), (a.a = 1), 0;\n      a.Ta = a.V;\n      a.Ua = a.Ba + c + b;\n      return 1;\n    }\n    function se(a, b) {\n      var c = a.C,\n        d = b - c,\n        e = a.V,\n        f = a.Ba + a.c * c;\n      for (x(b <= a.l.o); 0 < d; ) {\n        var g = 16 < d ? 16 : d,\n          h = a.l.ma,\n          k = a.l.width,\n          l = k * g,\n          m = h.ca,\n          n = h.tb + k * c,\n          r = a.Ta,\n          q = a.Ua;\n        oc(a, g, e, f);\n        Fc(r, q, m, n, l);\n        zc(h, c, c + g, m, n, k);\n        d -= g;\n        e += g * a.c;\n        c += g;\n      }\n      x(c == b);\n      a.C = a.Ma = b;\n    }\n    function te(a, b) {\n      var c = [0],\n        d = [0],\n        e = [0];\n      a: for (;;) {\n        if (null == a) return 0;\n        if (null == b) return (a.a = 2), 0;\n        a.l = b;\n        a.a = 0;\n        cb(a.m, b.data, b.w, b.ha);\n        if (!mc(a.m, c, d, e)) {\n          a.a = 3;\n          break a;\n        }\n        a.xb = Cc;\n        b.width = c[0];\n        b.height = d[0];\n        if (!rb(c[0], d[0], 1, a, null)) break a;\n        return 1;\n      }\n      x(0 != a.a);\n      return 0;\n    }\n    function ue() {\n      this.ub = this.yd = this.td = this.Rb = 0;\n    }\n    function ve() {\n      this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;\n    }\n    function we() {\n      this.Fb = this.Bb = this.Cb = 0;\n      this.Zb = V(4);\n      this.Lb = V(4);\n    }\n    function Gc() {\n      this.Yb = wb();\n    }\n    function xe() {\n      this.jb = V(3);\n      this.Wc = Ed([4, 8], Gc);\n      this.Xc = Ed([4, 17], Gc);\n    }\n    function ye() {\n      this.Pc = this.wb = this.Tb = this.zd = 0;\n      this.vd = new V(4);\n      this.od = new V(4);\n    }\n    function Xa() {\n      this.ld = this.La = this.dd = this.tc = 0;\n    }\n    function Hc() {\n      this.Na = this.la = 0;\n    }\n    function ze() {\n      this.Sc = [0, 0];\n      this.Eb = [0, 0];\n      this.Qc = [0, 0];\n      this.ia = this.lc = 0;\n    }\n    function Kb() {\n      this.ad = V(384);\n      this.Za = 0;\n      this.Ob = V(16);\n      this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;\n    }\n    function Ae() {\n      this.uc = this.M = this.Nb = 0;\n      this.wa = Array(new Xa());\n      this.Y = 0;\n      this.ya = Array(new Kb());\n      this.aa = 0;\n      this.l = new Oa();\n    }\n    function Ic() {\n      this.y = V(16);\n      this.f = V(8);\n      this.ea = V(8);\n    }\n    function Be() {\n      this.cb = this.a = 0;\n      this.sc = \"\";\n      this.m = new Wb();\n      this.Od = new ue();\n      this.Kc = new ve();\n      this.ed = new ye();\n      this.Qa = new we();\n      this.Ic = this.$c = this.Aa = 0;\n      this.D = new Ae();\n      this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0;\n      this.Jc = wa(8, Wb);\n      this.ia = 0;\n      new F();\n      this.pb = wa(4, ze);\n      this.Pa = new xe();\n      this.Bd = this.kc = 0;\n      this.Ac = [];\n      this.Bc = 0;\n      this.zc = [0, 0, 0, 0];\n      this.Gd = Array(new Ic());\n      this.Hd = 0;\n      this.rb = Array(new Hc());\n      this.sb = 0;\n      this.wa = Array(new Xa());\n      this.Y = 0;\n      this.oc = [];\n      this.pc = 0;\n      this.sa = [];\n      this.ta = 0;\n      this.qa = [];\n      this.ra = 0;\n      this.Ha = [];\n      this.B = this.R = this.Ia = 0;\n      this.Ec = [];\n      this.M = this.ja = this.Vb = this.Fc = 0;\n      this.ya = Array(new Kb());\n      this.L = this.aa = 0;\n      this.gd = Ed([4, 2], Xa);\n      this.ga = null;\n      this.Fa = [];\n      this.Cc = this.qc = this.P = 0;\n      this.Gb = [];\n      this.Uc = 0;\n      this.mb = [];\n      this.nb = 0;\n      this.rc = [];\n      this.Ga = this.Vc = 0;\n    }\n    function ga(a, b) {\n      return 0 > a ? 0 : a > b ? b : a;\n    }\n    function Oa() {\n      this.T = this.U = this.ka = this.height = this.width = 0;\n      this.y = [];\n      this.f = [];\n      this.ea = [];\n      this.Rc = this.fa = this.W = this.N = this.O = 0;\n      this.ma = \"void\";\n      this.put = \"VP8IoPutHook\";\n      this.ac = \"VP8IoSetupHook\";\n      this.bc = \"VP8IoTeardownHook\";\n      this.ha = this.Kb = 0;\n      this.data = [];\n      this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0;\n      this.F = [];\n      this.J = 0;\n    }\n    function Ce() {\n      var a = new Be();\n      null != a &&\n        ((a.a = 0), (a.sc = \"OK\"), (a.cb = 0), (a.Xb = 0), oa || (oa = De));\n      return a;\n    }\n    function T(a, b, c) {\n      0 == a.a && ((a.a = b), (a.sc = c), (a.cb = 0));\n      return 0;\n    }\n    function Jc(a, b, c) {\n      return 3 <= c && 157 == a[b + 0] && 1 == a[b + 1] && 42 == a[b + 2];\n    }\n    function Kc(a, b) {\n      if (null == a) return 0;\n      a.a = 0;\n      a.sc = \"OK\";\n      if (null == b) return T(a, 2, \"null VP8Io passed to VP8GetHeaders()\");\n      var c = b.data;\n      var d = b.w;\n      var e = b.ha;\n      if (4 > e) return T(a, 7, \"Truncated header.\");\n      var f = c[d + 0] | (c[d + 1] << 8) | (c[d + 2] << 16);\n      var g = a.Od;\n      g.Rb = !(f & 1);\n      g.td = (f >> 1) & 7;\n      g.yd = (f >> 4) & 1;\n      g.ub = f >> 5;\n      if (3 < g.td) return T(a, 3, \"Incorrect keyframe parameters.\");\n      if (!g.yd) return T(a, 4, \"Frame not displayable.\");\n      d += 3;\n      e -= 3;\n      var h = a.Kc;\n      if (g.Rb) {\n        if (7 > e) return T(a, 7, \"cannot parse picture header\");\n        if (!Jc(c, d, e)) return T(a, 3, \"Bad code word\");\n        h.c = ((c[d + 4] << 8) | c[d + 3]) & 16383;\n        h.Td = c[d + 4] >> 6;\n        h.i = ((c[d + 6] << 8) | c[d + 5]) & 16383;\n        h.Ud = c[d + 6] >> 6;\n        d += 7;\n        e -= 7;\n        a.za = (h.c + 15) >> 4;\n        a.Ub = (h.i + 15) >> 4;\n        b.width = h.c;\n        b.height = h.i;\n        b.Da = 0;\n        b.j = 0;\n        b.v = 0;\n        b.va = b.width;\n        b.o = b.height;\n        b.da = 0;\n        b.ib = b.width;\n        b.hb = b.height;\n        b.U = b.width;\n        b.T = b.height;\n        f = a.Pa;\n        M(f.jb, 0, 255, f.jb.length);\n        f = a.Qa;\n        x(null != f);\n        f.Cb = 0;\n        f.Bb = 0;\n        f.Fb = 1;\n        M(f.Zb, 0, 0, f.Zb.length);\n        M(f.Lb, 0, 0, f.Lb);\n      }\n      if (g.ub > e) return T(a, 7, \"bad partition length\");\n      f = a.m;\n      ma(f, c, d, g.ub);\n      d += g.ub;\n      e -= g.ub;\n      g.Rb && ((h.Ld = G(f)), (h.Kd = G(f)));\n      h = a.Qa;\n      var k = a.Pa,\n        l;\n      x(null != f);\n      x(null != h);\n      h.Cb = G(f);\n      if (h.Cb) {\n        h.Bb = G(f);\n        if (G(f)) {\n          h.Fb = G(f);\n          for (l = 0; 4 > l; ++l) h.Zb[l] = G(f) ? ca(f, 7) : 0;\n          for (l = 0; 4 > l; ++l) h.Lb[l] = G(f) ? ca(f, 6) : 0;\n        }\n        if (h.Bb) for (l = 0; 3 > l; ++l) k.jb[l] = G(f) ? na(f, 8) : 255;\n      } else h.Bb = 0;\n      if (f.Ka) return T(a, 3, \"cannot parse segment header\");\n      h = a.ed;\n      h.zd = G(f);\n      h.Tb = na(f, 6);\n      h.wb = na(f, 3);\n      h.Pc = G(f);\n      if (h.Pc && G(f)) {\n        for (k = 0; 4 > k; ++k) G(f) && (h.vd[k] = ca(f, 6));\n        for (k = 0; 4 > k; ++k) G(f) && (h.od[k] = ca(f, 6));\n      }\n      a.L = 0 == h.Tb ? 0 : h.zd ? 1 : 2;\n      if (f.Ka) return T(a, 3, \"cannot parse filter header\");\n      l = d;\n      var m = e;\n      e = l;\n      d = l + m;\n      h = m;\n      a.Xb = (1 << na(a.m, 2)) - 1;\n      k = a.Xb;\n      if (m < 3 * k) c = 7;\n      else {\n        l += 3 * k;\n        h -= 3 * k;\n        for (m = 0; m < k; ++m) {\n          var n = c[e + 0] | (c[e + 1] << 8) | (c[e + 2] << 16);\n          n > h && (n = h);\n          ma(a.Jc[+m], c, l, n);\n          l += n;\n          h -= n;\n          e += 3;\n        }\n        ma(a.Jc[+k], c, l, h);\n        c = l < d ? 0 : 5;\n      }\n      if (0 != c) return T(a, c, \"cannot parse partitions\");\n      l = a.m;\n      c = na(l, 7);\n      e = G(l) ? ca(l, 4) : 0;\n      d = G(l) ? ca(l, 4) : 0;\n      h = G(l) ? ca(l, 4) : 0;\n      k = G(l) ? ca(l, 4) : 0;\n      l = G(l) ? ca(l, 4) : 0;\n      m = a.Qa;\n      for (n = 0; 4 > n; ++n) {\n        if (m.Cb) {\n          var r = m.Zb[n];\n          m.Fb || (r += c);\n        } else if (0 < n) {\n          a.pb[n] = a.pb[0];\n          continue;\n        } else r = c;\n        var q = a.pb[n];\n        q.Sc[0] = Lb[ga(r + e, 127)];\n        q.Sc[1] = Mb[ga(r + 0, 127)];\n        q.Eb[0] = 2 * Lb[ga(r + d, 127)];\n        q.Eb[1] = (101581 * Mb[ga(r + h, 127)]) >> 16;\n        8 > q.Eb[1] && (q.Eb[1] = 8);\n        q.Qc[0] = Lb[ga(r + k, 117)];\n        q.Qc[1] = Mb[ga(r + l, 127)];\n        q.lc = r + l;\n      }\n      if (!g.Rb) return T(a, 4, \"Not a key frame.\");\n      G(f);\n      g = a.Pa;\n      for (c = 0; 4 > c; ++c) {\n        for (e = 0; 8 > e; ++e)\n          for (d = 0; 3 > d; ++d)\n            for (h = 0; 11 > h; ++h)\n              (k = K(f, Ee[c][e][d][h]) ? na(f, 8) : Fe[c][e][d][h]),\n                (g.Wc[c][e].Yb[d][h] = k);\n        for (e = 0; 17 > e; ++e) g.Xc[c][e] = g.Wc[c][Ge[e]];\n      }\n      a.kc = G(f);\n      a.kc && (a.Bd = na(f, 8));\n      return (a.cb = 1);\n    }\n    function De(a, b, c, d, e, f, g) {\n      var h = b[e].Yb[c];\n      for (c = 0; 16 > e; ++e) {\n        if (!K(a, h[c + 0])) return e;\n        for (; !K(a, h[c + 1]); )\n          if (((h = b[++e].Yb[0]), (c = 0), 16 == e)) return 16;\n        var k = b[e + 1].Yb;\n        if (K(a, h[c + 2])) {\n          var l = a,\n            m = h,\n            n = c;\n          var r = 0;\n          if (K(l, m[n + 3]))\n            if (K(l, m[n + 6])) {\n              h = 0;\n              r = K(l, m[n + 8]);\n              m = K(l, m[n + 9 + r]);\n              n = 2 * r + m;\n              r = 0;\n              for (m = He[n]; m[h]; ++h) r += r + K(l, m[h]);\n              r += 3 + (8 << n);\n            } else\n              K(l, m[n + 7])\n                ? ((r = 7 + 2 * K(l, 165)), (r += K(l, 145)))\n                : (r = 5 + K(l, 159));\n          else K(l, m[n + 4]) ? (r = 3 + K(l, m[n + 5])) : (r = 2);\n          h = k[2];\n        } else (r = 1), (h = k[1]);\n        k = g + Ie[e];\n        l = a;\n        0 > l.b && Qa(l);\n        var m = l.b,\n          n = l.Ca >> 1,\n          q = (n - (l.I >> m)) >> 31;\n        --l.b;\n        l.Ca += q;\n        l.Ca |= 1;\n        l.I -= ((n + 1) & q) << m;\n        f[k] = ((r ^ q) - q) * d[(0 < e) + 0];\n      }\n      return 16;\n    }\n    function Lc(a) {\n      var b = a.rb[a.sb - 1];\n      b.la = 0;\n      b.Na = 0;\n      M(a.zc, 0, 0, a.zc.length);\n      a.ja = 0;\n    }\n    function Je(a, b) {\n      for (a.M = 0; a.M < a.Va; ++a.M) {\n        var c = a.Jc[a.M & a.Xb],\n          d = a.m,\n          e = a,\n          f;\n        for (f = 0; f < e.za; ++f) {\n          var g = d;\n          var h = e;\n          var k = h.Ac,\n            l = h.Bc + 4 * f,\n            m = h.zc,\n            n = h.ya[h.aa + f];\n          h.Qa.Bb\n            ? (n.$b = K(g, h.Pa.jb[0])\n                ? 2 + K(g, h.Pa.jb[2])\n                : K(g, h.Pa.jb[1]))\n            : (n.$b = 0);\n          h.kc && (n.Ad = K(g, h.Bd));\n          n.Za = !K(g, 145) + 0;\n          if (n.Za) {\n            var r = n.Ob,\n              q = 0;\n            for (h = 0; 4 > h; ++h) {\n              var t = m[0 + h];\n              var v;\n              for (v = 0; 4 > v; ++v) {\n                t = Ke[k[l + v]][t];\n                for (var p = Mc[K(g, t[0])]; 0 < p; )\n                  p = Mc[2 * p + K(g, t[p])];\n                t = -p;\n                k[l + v] = t;\n              }\n              I(r, q, k, l, 4);\n              q += 4;\n              m[0 + h] = t;\n            }\n          } else\n            (t = K(g, 156) ? (K(g, 128) ? 1 : 3) : K(g, 163) ? 2 : 0),\n              (n.Ob[0] = t),\n              M(k, l, t, 4),\n              M(m, 0, t, 4);\n          n.Dd = K(g, 142) ? (K(g, 114) ? (K(g, 183) ? 1 : 3) : 2) : 0;\n        }\n        if (e.m.Ka) return T(a, 7, \"Premature end-of-partition0 encountered.\");\n        for (; a.ja < a.za; ++a.ja) {\n          d = a;\n          e = c;\n          g = d.rb[d.sb - 1];\n          k = d.rb[d.sb + d.ja];\n          f = d.ya[d.aa + d.ja];\n          if ((l = d.kc ? f.Ad : 0))\n            (g.la = k.la = 0),\n              f.Za || (g.Na = k.Na = 0),\n              (f.Hc = 0),\n              (f.Gc = 0),\n              (f.ia = 0);\n          else {\n            var u,\n              w,\n              g = k,\n              k = e,\n              l = d.Pa.Xc,\n              m = d.ya[d.aa + d.ja],\n              n = d.pb[m.$b];\n            h = m.ad;\n            r = 0;\n            q = d.rb[d.sb - 1];\n            t = v = 0;\n            M(h, r, 0, 384);\n            if (m.Za) {\n              var y = 0;\n              var A = l[3];\n            } else {\n              p = V(16);\n              var E = g.Na + q.Na;\n              E = oa(k, l[1], E, n.Eb, 0, p, 0);\n              g.Na = q.Na = (0 < E) + 0;\n              if (1 < E) Nc(p, 0, h, r);\n              else {\n                var B = (p[0] + 3) >> 3;\n                for (p = 0; 256 > p; p += 16) h[r + p] = B;\n              }\n              y = 1;\n              A = l[0];\n            }\n            var C = g.la & 15;\n            var N = q.la & 15;\n            for (p = 0; 4 > p; ++p) {\n              var z = N & 1;\n              for (B = w = 0; 4 > B; ++B)\n                (E = z + (C & 1)),\n                  (E = oa(k, A, E, n.Sc, y, h, r)),\n                  (z = E > y),\n                  (C = (C >> 1) | (z << 7)),\n                  (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n                  (r += 16);\n              C >>= 4;\n              N = (N >> 1) | (z << 7);\n              v = ((v << 8) | w) >>> 0;\n            }\n            A = C;\n            y = N >> 4;\n            for (u = 0; 4 > u; u += 2) {\n              w = 0;\n              C = g.la >> (4 + u);\n              N = q.la >> (4 + u);\n              for (p = 0; 2 > p; ++p) {\n                z = N & 1;\n                for (B = 0; 2 > B; ++B)\n                  (E = z + (C & 1)),\n                    (E = oa(k, l[2], E, n.Qc, 0, h, r)),\n                    (z = 0 < E),\n                    (C = (C >> 1) | (z << 3)),\n                    (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n                    (r += 16);\n                C >>= 2;\n                N = (N >> 1) | (z << 5);\n              }\n              t |= w << (4 * u);\n              A |= (C << 4) << u;\n              y |= (N & 240) << u;\n            }\n            g.la = A;\n            q.la = y;\n            m.Hc = v;\n            m.Gc = t;\n            m.ia = t & 43690 ? 0 : n.ia;\n            l = !(v | t);\n          }\n          0 < d.L &&\n            ((d.wa[d.Y + d.ja] = d.gd[f.$b][f.Za]),\n            (d.wa[d.Y + d.ja].La |= !l));\n          if (e.Ka) return T(a, 7, \"Premature end-of-file encountered.\");\n        }\n        Lc(a);\n        c = a;\n        d = b;\n        e = 1;\n        f = c.D;\n        g = 0 < c.L && c.M >= c.zb && c.M <= c.Va;\n        if (0 == c.Aa)\n          a: {\n            (f.M = c.M), (f.uc = g), Oc(c, f), (e = 1);\n            w = c.D;\n            f = w.Nb;\n            t = Ya[c.L];\n            g = t * c.R;\n            k = (t / 2) * c.B;\n            p = 16 * f * c.R;\n            B = 8 * f * c.B;\n            l = c.sa;\n            m = c.ta - g + p;\n            n = c.qa;\n            h = c.ra - k + B;\n            r = c.Ha;\n            q = c.Ia - k + B;\n            C = w.M;\n            N = 0 == C;\n            v = C >= c.Va - 1;\n            2 == c.Aa && Oc(c, w);\n            if (w.uc)\n              for (E = c, z = E.D.M, x(E.D.uc), w = E.yb; w < E.Hb; ++w) {\n                var Q = E;\n                y = w;\n                A = z;\n                var S = Q.D,\n                  D = S.Nb;\n                u = Q.R;\n                var S = S.wa[S.Y + y],\n                  F = Q.sa,\n                  H = Q.ta + 16 * D * u + 16 * y,\n                  J = S.dd,\n                  G = S.tc;\n                if (0 != G)\n                  if ((x(3 <= G), 1 == Q.L))\n                    0 < y && Pc(F, H, u, G + 4),\n                      S.La && Qc(F, H, u, G),\n                      0 < A && Rc(F, H, u, G + 4),\n                      S.La && Sc(F, H, u, G);\n                  else {\n                    var L = Q.B,\n                      O = Q.qa,\n                      P = Q.ra + 8 * D * L + 8 * y,\n                      R = Q.Ha,\n                      Q = Q.Ia + 8 * D * L + 8 * y,\n                      D = S.ld;\n                    0 < y &&\n                      (Tc(F, H, u, G + 4, J, D),\n                      Uc(O, P, R, Q, L, G + 4, J, D));\n                    S.La && (Vc(F, H, u, G, J, D), Wc(O, P, R, Q, L, G, J, D));\n                    0 < A &&\n                      (Xc(F, H, u, G + 4, J, D),\n                      Yc(O, P, R, Q, L, G + 4, J, D));\n                    S.La && (Zc(F, H, u, G, J, D), $c(O, P, R, Q, L, G, J, D));\n                  }\n              }\n            c.ia && alert(\"todo:DitherRow\");\n            if (null != d.put) {\n              w = 16 * C;\n              C = 16 * (C + 1);\n              N\n                ? ((d.y = c.sa),\n                  (d.O = c.ta + p),\n                  (d.f = c.qa),\n                  (d.N = c.ra + B),\n                  (d.ea = c.Ha),\n                  (d.W = c.Ia + B))\n                : ((w -= t),\n                  (d.y = l),\n                  (d.O = m),\n                  (d.f = n),\n                  (d.N = h),\n                  (d.ea = r),\n                  (d.W = q));\n              v || (C -= t);\n              C > d.o && (C = d.o);\n              d.F = null;\n              d.J = null;\n              if (\n                null != c.Fa &&\n                0 < c.Fa.length &&\n                w < C &&\n                ((d.J = Le(c, d, w, C - w)),\n                (d.F = c.mb),\n                null == d.F && 0 == d.F.length)\n              ) {\n                e = T(c, 3, \"Could not decode alpha data.\");\n                break a;\n              }\n              w < d.j &&\n                ((t = d.j - w),\n                (w = d.j),\n                x(!(t & 1)),\n                (d.O += c.R * t),\n                (d.N += c.B * (t >> 1)),\n                (d.W += c.B * (t >> 1)),\n                null != d.F && (d.J += d.width * t));\n              w < C &&\n                ((d.O += d.v),\n                (d.N += d.v >> 1),\n                (d.W += d.v >> 1),\n                null != d.F && (d.J += d.v),\n                (d.ka = w - d.j),\n                (d.U = d.va - d.v),\n                (d.T = C - w),\n                (e = d.put(d)));\n            }\n            f + 1 != c.Ic ||\n              v ||\n              (I(c.sa, c.ta - g, l, m + 16 * c.R, g),\n              I(c.qa, c.ra - k, n, h + 8 * c.B, k),\n              I(c.Ha, c.Ia - k, r, q + 8 * c.B, k));\n          }\n        if (!e) return T(a, 6, \"Output aborted.\");\n      }\n      return 1;\n    }\n    function Me(a, b) {\n      if (null == a) return 0;\n      if (null == b) return T(a, 2, \"NULL VP8Io parameter in VP8Decode().\");\n      if (!a.cb && !Kc(a, b)) return 0;\n      x(a.cb);\n      if (null == b.ac || b.ac(b)) {\n        b.ob && (a.L = 0);\n        var c = Ya[a.L];\n        2 == a.L\n          ? ((a.yb = 0), (a.zb = 0))\n          : ((a.yb = (b.v - c) >> 4),\n            (a.zb = (b.j - c) >> 4),\n            0 > a.yb && (a.yb = 0),\n            0 > a.zb && (a.zb = 0));\n        a.Va = (b.o + 15 + c) >> 4;\n        a.Hb = (b.va + 15 + c) >> 4;\n        a.Hb > a.za && (a.Hb = a.za);\n        a.Va > a.Ub && (a.Va = a.Ub);\n        if (0 < a.L) {\n          var d = a.ed;\n          for (c = 0; 4 > c; ++c) {\n            var e;\n            if (a.Qa.Cb) {\n              var f = a.Qa.Lb[c];\n              a.Qa.Fb || (f += d.Tb);\n            } else f = d.Tb;\n            for (e = 0; 1 >= e; ++e) {\n              var g = a.gd[c][e],\n                h = f;\n              d.Pc && ((h += d.vd[0]), e && (h += d.od[0]));\n              h = 0 > h ? 0 : 63 < h ? 63 : h;\n              if (0 < h) {\n                var k = h;\n                0 < d.wb &&\n                  ((k = 4 < d.wb ? k >> 2 : k >> 1),\n                  k > 9 - d.wb && (k = 9 - d.wb));\n                1 > k && (k = 1);\n                g.dd = k;\n                g.tc = 2 * h + k;\n                g.ld = 40 <= h ? 2 : 15 <= h ? 1 : 0;\n              } else g.tc = 0;\n              g.La = e;\n            }\n          }\n        }\n        c = 0;\n      } else T(a, 6, \"Frame setup failed\"), (c = a.a);\n      if ((c = 0 == c)) {\n        if (c) {\n          a.$c = 0;\n          0 < a.Aa || (a.Ic = Ne);\n          b: {\n            c = a.Ic;\n            var k = a.za,\n              d = 4 * k,\n              l = 32 * k,\n              m = k + 1,\n              n = 0 < a.L ? k * (0 < a.Aa ? 2 : 1) : 0,\n              r = (2 == a.Aa ? 2 : 1) * k;\n            e = ((3 * (16 * c + Ya[a.L])) / 2) * l;\n            f = null != a.Fa && 0 < a.Fa.length ? a.Kc.c * a.Kc.i : 0;\n            g = d + 832 + e + f;\n            if (g != g) c = 0;\n            else {\n              if (g > a.Vb) {\n                a.Vb = 0;\n                a.Ec = V(g);\n                a.Fc = 0;\n                if (null == a.Ec) {\n                  c = T(a, 1, \"no memory during frame initialization.\");\n                  break b;\n                }\n                a.Vb = g;\n              }\n              g = a.Ec;\n              h = a.Fc;\n              a.Ac = g;\n              a.Bc = h;\n              h += d;\n              a.Gd = wa(l, Ic);\n              a.Hd = 0;\n              a.rb = wa(m + 1, Hc);\n              a.sb = 1;\n              a.wa = n ? wa(n, Xa) : null;\n              a.Y = 0;\n              a.D.Nb = 0;\n              a.D.wa = a.wa;\n              a.D.Y = a.Y;\n              0 < a.Aa && (a.D.Y += k);\n              x(!0);\n              a.oc = g;\n              a.pc = h;\n              h += 832;\n              a.ya = wa(r, Kb);\n              a.aa = 0;\n              a.D.ya = a.ya;\n              a.D.aa = a.aa;\n              2 == a.Aa && (a.D.aa += k);\n              a.R = 16 * k;\n              a.B = 8 * k;\n              l = Ya[a.L];\n              k = l * a.R;\n              l = (l / 2) * a.B;\n              a.sa = g;\n              a.ta = h + k;\n              a.qa = a.sa;\n              a.ra = a.ta + 16 * c * a.R + l;\n              a.Ha = a.qa;\n              a.Ia = a.ra + 8 * c * a.B + l;\n              a.$c = 0;\n              h += e;\n              a.mb = f ? g : null;\n              a.nb = f ? h : null;\n              x(h + f <= a.Fc + a.Vb);\n              Lc(a);\n              M(a.Ac, a.Bc, 0, d);\n              c = 1;\n            }\n          }\n          if (c) {\n            b.ka = 0;\n            b.y = a.sa;\n            b.O = a.ta;\n            b.f = a.qa;\n            b.N = a.ra;\n            b.ea = a.Ha;\n            b.Vd = a.Ia;\n            b.fa = a.R;\n            b.Rc = a.B;\n            b.F = null;\n            b.J = 0;\n            if (!ad) {\n              for (c = -255; 255 >= c; ++c) bd[255 + c] = 0 > c ? -c : c;\n              for (c = -1020; 1020 >= c; ++c)\n                cd[1020 + c] = -128 > c ? -128 : 127 < c ? 127 : c;\n              for (c = -112; 112 >= c; ++c)\n                dd[112 + c] = -16 > c ? -16 : 15 < c ? 15 : c;\n              for (c = -255; 510 >= c; ++c)\n                ed[255 + c] = 0 > c ? 0 : 255 < c ? 255 : c;\n              ad = 1;\n            }\n            Nc = Oe;\n            Za = Pe;\n            Nb = Qe;\n            pa = Re;\n            Ob = Se;\n            fd = Te;\n            Xc = Ue;\n            Tc = Ve;\n            Yc = We;\n            Uc = Xe;\n            Zc = Ye;\n            Vc = Ze;\n            $c = $e;\n            Wc = af;\n            Rc = gd;\n            Pc = hd;\n            Sc = bf;\n            Qc = cf;\n            W[0] = df;\n            W[1] = ef;\n            W[2] = ff;\n            W[3] = gf;\n            W[4] = hf;\n            W[5] = jf;\n            W[6] = kf;\n            W[7] = lf;\n            W[8] = mf;\n            W[9] = nf;\n            Y[0] = of;\n            Y[1] = pf;\n            Y[2] = qf;\n            Y[3] = rf;\n            Y[4] = sf;\n            Y[5] = tf;\n            Y[6] = uf;\n            ka[0] = vf;\n            ka[1] = wf;\n            ka[2] = xf;\n            ka[3] = yf;\n            ka[4] = zf;\n            ka[5] = Af;\n            ka[6] = Bf;\n            c = 1;\n          } else c = 0;\n        }\n        c && (c = Je(a, b));\n        null != b.bc && b.bc(b);\n        c &= 1;\n      }\n      if (!c) return 0;\n      a.cb = 0;\n      return c;\n    }\n    function qa(a, b, c, d, e) {\n      e = a[b + c + 32 * d] + (e >> 3);\n      a[b + c + 32 * d] = e & -256 ? (0 > e ? 0 : 255) : e;\n    }\n    function kb(a, b, c, d, e, f) {\n      qa(a, b, 0, c, d + e);\n      qa(a, b, 1, c, d + f);\n      qa(a, b, 2, c, d - f);\n      qa(a, b, 3, c, d - e);\n    }\n    function da(a) {\n      return ((20091 * a) >> 16) + a;\n    }\n    function id(a, b, c, d) {\n      var e = 0,\n        f;\n      var g = V(16);\n      for (f = 0; 4 > f; ++f) {\n        var h = a[b + 0] + a[b + 8];\n        var k = a[b + 0] - a[b + 8];\n        var l = ((35468 * a[b + 4]) >> 16) - da(a[b + 12]);\n        var m = da(a[b + 4]) + ((35468 * a[b + 12]) >> 16);\n        g[e + 0] = h + m;\n        g[e + 1] = k + l;\n        g[e + 2] = k - l;\n        g[e + 3] = h - m;\n        e += 4;\n        b++;\n      }\n      for (f = e = 0; 4 > f; ++f)\n        (a = g[e + 0] + 4),\n          (h = a + g[e + 8]),\n          (k = a - g[e + 8]),\n          (l = ((35468 * g[e + 4]) >> 16) - da(g[e + 12])),\n          (m = da(g[e + 4]) + ((35468 * g[e + 12]) >> 16)),\n          qa(c, d, 0, 0, h + m),\n          qa(c, d, 1, 0, k + l),\n          qa(c, d, 2, 0, k - l),\n          qa(c, d, 3, 0, h - m),\n          e++,\n          (d += 32);\n    }\n    function Te(a, b, c, d) {\n      var e = a[b + 0] + 4,\n        f = (35468 * a[b + 4]) >> 16,\n        g = da(a[b + 4]),\n        h = (35468 * a[b + 1]) >> 16;\n      a = da(a[b + 1]);\n      kb(c, d, 0, e + g, a, h);\n      kb(c, d, 1, e + f, a, h);\n      kb(c, d, 2, e - f, a, h);\n      kb(c, d, 3, e - g, a, h);\n    }\n    function Pe(a, b, c, d, e) {\n      id(a, b, c, d);\n      e && id(a, b + 16, c, d + 4);\n    }\n    function Qe(a, b, c, d) {\n      Za(a, b + 0, c, d, 1);\n      Za(a, b + 32, c, d + 128, 1);\n    }\n    function Re(a, b, c, d) {\n      a = a[b + 0] + 4;\n      var e;\n      for (e = 0; 4 > e; ++e) for (b = 0; 4 > b; ++b) qa(c, d, b, e, a);\n    }\n    function Se(a, b, c, d) {\n      a[b + 0] && pa(a, b + 0, c, d);\n      a[b + 16] && pa(a, b + 16, c, d + 4);\n      a[b + 32] && pa(a, b + 32, c, d + 128);\n      a[b + 48] && pa(a, b + 48, c, d + 128 + 4);\n    }\n    function Oe(a, b, c, d) {\n      var e = V(16),\n        f;\n      for (f = 0; 4 > f; ++f) {\n        var g = a[b + 0 + f] + a[b + 12 + f];\n        var h = a[b + 4 + f] + a[b + 8 + f];\n        var k = a[b + 4 + f] - a[b + 8 + f];\n        var l = a[b + 0 + f] - a[b + 12 + f];\n        e[0 + f] = g + h;\n        e[8 + f] = g - h;\n        e[4 + f] = l + k;\n        e[12 + f] = l - k;\n      }\n      for (f = 0; 4 > f; ++f)\n        (a = e[0 + 4 * f] + 3),\n          (g = a + e[3 + 4 * f]),\n          (h = e[1 + 4 * f] + e[2 + 4 * f]),\n          (k = e[1 + 4 * f] - e[2 + 4 * f]),\n          (l = a - e[3 + 4 * f]),\n          (c[d + 0] = (g + h) >> 3),\n          (c[d + 16] = (l + k) >> 3),\n          (c[d + 32] = (g - h) >> 3),\n          (c[d + 48] = (l - k) >> 3),\n          (d += 64);\n    }\n    function Pb(a, b, c) {\n      var d = b - 32,\n        e = R,\n        f = 255 - a[d - 1],\n        g;\n      for (g = 0; g < c; ++g) {\n        var h = e,\n          k = f + a[b - 1],\n          l;\n        for (l = 0; l < c; ++l) a[b + l] = h[k + a[d + l]];\n        b += 32;\n      }\n    }\n    function ef(a, b) {\n      Pb(a, b, 4);\n    }\n    function wf(a, b) {\n      Pb(a, b, 8);\n    }\n    function pf(a, b) {\n      Pb(a, b, 16);\n    }\n    function qf(a, b) {\n      var c;\n      for (c = 0; 16 > c; ++c) I(a, b + 32 * c, a, b - 32, 16);\n    }\n    function rf(a, b) {\n      var c;\n      for (c = 16; 0 < c; --c) M(a, b, a[b - 1], 16), (b += 32);\n    }\n    function $a(a, b, c) {\n      var d;\n      for (d = 0; 16 > d; ++d) M(b, c + 32 * d, a, 16);\n    }\n    function of(a, b) {\n      var c = 16,\n        d;\n      for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d] + a[b + d - 32];\n      $a(c >> 5, a, b);\n    }\n    function sf(a, b) {\n      var c = 8,\n        d;\n      for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d];\n      $a(c >> 4, a, b);\n    }\n    function tf(a, b) {\n      var c = 8,\n        d;\n      for (d = 0; 16 > d; ++d) c += a[b + d - 32];\n      $a(c >> 4, a, b);\n    }\n    function uf(a, b) {\n      $a(128, a, b);\n    }\n    function z(a, b, c) {\n      return (a + 2 * b + c + 2) >> 2;\n    }\n    function ff(a, b) {\n      var c = b - 32,\n        c = new Uint8Array([\n          z(a[c - 1], a[c + 0], a[c + 1]),\n          z(a[c + 0], a[c + 1], a[c + 2]),\n          z(a[c + 1], a[c + 2], a[c + 3]),\n          z(a[c + 2], a[c + 3], a[c + 4])\n        ]),\n        d;\n      for (d = 0; 4 > d; ++d) I(a, b + 32 * d, c, 0, c.length);\n    }\n    function gf(a, b) {\n      var c = a[b - 1],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 + 96];\n      ra(a, b + 0, 16843009 * z(a[b - 1 - 32], c, d));\n      ra(a, b + 32, 16843009 * z(c, d, e));\n      ra(a, b + 64, 16843009 * z(d, e, f));\n      ra(a, b + 96, 16843009 * z(e, f, f));\n    }\n    function df(a, b) {\n      var c = 4,\n        d;\n      for (d = 0; 4 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n      c >>= 3;\n      for (d = 0; 4 > d; ++d) M(a, b + 32 * d, c, 4);\n    }\n    function hf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 - 32],\n        g = a[b + 0 - 32],\n        h = a[b + 1 - 32],\n        k = a[b + 2 - 32],\n        l = a[b + 3 - 32];\n      a[b + 0 + 96] = z(d, e, a[b - 1 + 96]);\n      a[b + 1 + 96] = a[b + 0 + 64] = z(c, d, e);\n      a[b + 2 + 96] = a[b + 1 + 64] = a[b + 0 + 32] = z(f, c, d);\n      a[b + 3 + 96] = a[b + 2 + 64] = a[b + 1 + 32] = a[b + 0 + 0] = z(g, f, c);\n      a[b + 3 + 64] = a[b + 2 + 32] = a[b + 1 + 0] = z(h, g, f);\n      a[b + 3 + 32] = a[b + 2 + 0] = z(k, h, g);\n      a[b + 3 + 0] = z(l, k, h);\n    }\n    function kf(a, b) {\n      var c = a[b + 1 - 32],\n        d = a[b + 2 - 32],\n        e = a[b + 3 - 32],\n        f = a[b + 4 - 32],\n        g = a[b + 5 - 32],\n        h = a[b + 6 - 32],\n        k = a[b + 7 - 32];\n      a[b + 0 + 0] = z(a[b + 0 - 32], c, d);\n      a[b + 1 + 0] = a[b + 0 + 32] = z(c, d, e);\n      a[b + 2 + 0] = a[b + 1 + 32] = a[b + 0 + 64] = z(d, e, f);\n      a[b + 3 + 0] = a[b + 2 + 32] = a[b + 1 + 64] = a[b + 0 + 96] = z(e, f, g);\n      a[b + 3 + 32] = a[b + 2 + 64] = a[b + 1 + 96] = z(f, g, h);\n      a[b + 3 + 64] = a[b + 2 + 96] = z(g, h, k);\n      a[b + 3 + 96] = z(h, k, k);\n    }\n    function jf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 - 32],\n        g = a[b + 0 - 32],\n        h = a[b + 1 - 32],\n        k = a[b + 2 - 32],\n        l = a[b + 3 - 32];\n      a[b + 0 + 0] = a[b + 1 + 64] = (f + g + 1) >> 1;\n      a[b + 1 + 0] = a[b + 2 + 64] = (g + h + 1) >> 1;\n      a[b + 2 + 0] = a[b + 3 + 64] = (h + k + 1) >> 1;\n      a[b + 3 + 0] = (k + l + 1) >> 1;\n      a[b + 0 + 96] = z(e, d, c);\n      a[b + 0 + 64] = z(d, c, f);\n      a[b + 0 + 32] = a[b + 1 + 96] = z(c, f, g);\n      a[b + 1 + 32] = a[b + 2 + 96] = z(f, g, h);\n      a[b + 2 + 32] = a[b + 3 + 96] = z(g, h, k);\n      a[b + 3 + 32] = z(h, k, l);\n    }\n    function lf(a, b) {\n      var c = a[b + 0 - 32],\n        d = a[b + 1 - 32],\n        e = a[b + 2 - 32],\n        f = a[b + 3 - 32],\n        g = a[b + 4 - 32],\n        h = a[b + 5 - 32],\n        k = a[b + 6 - 32],\n        l = a[b + 7 - 32];\n      a[b + 0 + 0] = (c + d + 1) >> 1;\n      a[b + 1 + 0] = a[b + 0 + 64] = (d + e + 1) >> 1;\n      a[b + 2 + 0] = a[b + 1 + 64] = (e + f + 1) >> 1;\n      a[b + 3 + 0] = a[b + 2 + 64] = (f + g + 1) >> 1;\n      a[b + 0 + 32] = z(c, d, e);\n      a[b + 1 + 32] = a[b + 0 + 96] = z(d, e, f);\n      a[b + 2 + 32] = a[b + 1 + 96] = z(e, f, g);\n      a[b + 3 + 32] = a[b + 2 + 96] = z(f, g, h);\n      a[b + 3 + 64] = z(g, h, k);\n      a[b + 3 + 96] = z(h, k, l);\n    }\n    function nf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 + 96];\n      a[b + 0 + 0] = (c + d + 1) >> 1;\n      a[b + 2 + 0] = a[b + 0 + 32] = (d + e + 1) >> 1;\n      a[b + 2 + 32] = a[b + 0 + 64] = (e + f + 1) >> 1;\n      a[b + 1 + 0] = z(c, d, e);\n      a[b + 3 + 0] = a[b + 1 + 32] = z(d, e, f);\n      a[b + 3 + 32] = a[b + 1 + 64] = z(e, f, f);\n      a[b + 3 + 64] = a[b + 2 + 64] = a[b + 0 + 96] = a[b + 1 + 96] = a[\n        b + 2 + 96\n      ] = a[b + 3 + 96] = f;\n    }\n    function mf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 + 96],\n        g = a[b - 1 - 32],\n        h = a[b + 0 - 32],\n        k = a[b + 1 - 32],\n        l = a[b + 2 - 32];\n      a[b + 0 + 0] = a[b + 2 + 32] = (c + g + 1) >> 1;\n      a[b + 0 + 32] = a[b + 2 + 64] = (d + c + 1) >> 1;\n      a[b + 0 + 64] = a[b + 2 + 96] = (e + d + 1) >> 1;\n      a[b + 0 + 96] = (f + e + 1) >> 1;\n      a[b + 3 + 0] = z(h, k, l);\n      a[b + 2 + 0] = z(g, h, k);\n      a[b + 1 + 0] = a[b + 3 + 32] = z(c, g, h);\n      a[b + 1 + 32] = a[b + 3 + 64] = z(d, c, g);\n      a[b + 1 + 64] = a[b + 3 + 96] = z(e, d, c);\n      a[b + 1 + 96] = z(f, e, d);\n    }\n    function xf(a, b) {\n      var c;\n      for (c = 0; 8 > c; ++c) I(a, b + 32 * c, a, b - 32, 8);\n    }\n    function yf(a, b) {\n      var c;\n      for (c = 0; 8 > c; ++c) M(a, b, a[b - 1], 8), (b += 32);\n    }\n    function lb(a, b, c) {\n      var d;\n      for (d = 0; 8 > d; ++d) M(b, c + 32 * d, a, 8);\n    }\n    function vf(a, b) {\n      var c = 8,\n        d;\n      for (d = 0; 8 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n      lb(c >> 4, a, b);\n    }\n    function Af(a, b) {\n      var c = 4,\n        d;\n      for (d = 0; 8 > d; ++d) c += a[b + d - 32];\n      lb(c >> 3, a, b);\n    }\n    function zf(a, b) {\n      var c = 4,\n        d;\n      for (d = 0; 8 > d; ++d) c += a[b - 1 + 32 * d];\n      lb(c >> 3, a, b);\n    }\n    function Bf(a, b) {\n      lb(128, a, b);\n    }\n    function ab(a, b, c) {\n      var d = a[b - c],\n        e = a[b + 0],\n        f = 3 * (e - d) + Qb[1020 + a[b - 2 * c] - a[b + c]],\n        g = mb[112 + ((f + 4) >> 3)];\n      a[b - c] = R[255 + d + mb[112 + ((f + 3) >> 3)]];\n      a[b + 0] = R[255 + e - g];\n    }\n    function jd(a, b, c, d) {\n      var e = a[b + 0],\n        f = a[b + c];\n      return U[255 + a[b - 2 * c] - a[b - c]] > d || U[255 + f - e] > d;\n    }\n    function kd(a, b, c, d) {\n      return (\n        4 * U[255 + a[b - c] - a[b + 0]] + U[255 + a[b - 2 * c] - a[b + c]] <= d\n      );\n    }\n    function ld(a, b, c, d, e) {\n      var f = a[b - 3 * c],\n        g = a[b - 2 * c],\n        h = a[b - c],\n        k = a[b + 0],\n        l = a[b + c],\n        m = a[b + 2 * c],\n        n = a[b + 3 * c];\n      return 4 * U[255 + h - k] + U[255 + g - l] > d\n        ? 0\n        : U[255 + a[b - 4 * c] - f] <= e &&\n            U[255 + f - g] <= e &&\n            U[255 + g - h] <= e &&\n            U[255 + n - m] <= e &&\n            U[255 + m - l] <= e &&\n            U[255 + l - k] <= e;\n    }\n    function gd(a, b, c, d) {\n      var e = 2 * d + 1;\n      for (d = 0; 16 > d; ++d) kd(a, b + d, c, e) && ab(a, b + d, c);\n    }\n    function hd(a, b, c, d) {\n      var e = 2 * d + 1;\n      for (d = 0; 16 > d; ++d) kd(a, b + d * c, 1, e) && ab(a, b + d * c, 1);\n    }\n    function bf(a, b, c, d) {\n      var e;\n      for (e = 3; 0 < e; --e) (b += 4 * c), gd(a, b, c, d);\n    }\n    function cf(a, b, c, d) {\n      var e;\n      for (e = 3; 0 < e; --e) (b += 4), hd(a, b, c, d);\n    }\n    function ea(a, b, c, d, e, f, g, h) {\n      for (f = 2 * f + 1; 0 < e--; ) {\n        if (ld(a, b, c, f, g))\n          if (jd(a, b, c, h)) ab(a, b, c);\n          else {\n            var k = a,\n              l = b,\n              m = c,\n              n = k[l - 2 * m],\n              r = k[l - m],\n              q = k[l + 0],\n              t = k[l + m],\n              v = k[l + 2 * m],\n              p = Qb[1020 + 3 * (q - r) + Qb[1020 + n - t]],\n              u = (27 * p + 63) >> 7,\n              w = (18 * p + 63) >> 7,\n              p = (9 * p + 63) >> 7;\n            k[l - 3 * m] = R[255 + k[l - 3 * m] + p];\n            k[l - 2 * m] = R[255 + n + w];\n            k[l - m] = R[255 + r + u];\n            k[l + 0] = R[255 + q - u];\n            k[l + m] = R[255 + t - w];\n            k[l + 2 * m] = R[255 + v - p];\n          }\n        b += d;\n      }\n    }\n    function Fa(a, b, c, d, e, f, g, h) {\n      for (f = 2 * f + 1; 0 < e--; ) {\n        if (ld(a, b, c, f, g))\n          if (jd(a, b, c, h)) ab(a, b, c);\n          else {\n            var k = a,\n              l = b,\n              m = c,\n              n = k[l - m],\n              r = k[l + 0],\n              q = k[l + m],\n              t = 3 * (r - n),\n              v = mb[112 + ((t + 4) >> 3)],\n              t = mb[112 + ((t + 3) >> 3)],\n              p = (v + 1) >> 1;\n            k[l - 2 * m] = R[255 + k[l - 2 * m] + p];\n            k[l - m] = R[255 + n + t];\n            k[l + 0] = R[255 + r - v];\n            k[l + m] = R[255 + q - p];\n          }\n        b += d;\n      }\n    }\n    function Ue(a, b, c, d, e, f) {\n      ea(a, b, c, 1, 16, d, e, f);\n    }\n    function Ve(a, b, c, d, e, f) {\n      ea(a, b, 1, c, 16, d, e, f);\n    }\n    function Ye(a, b, c, d, e, f) {\n      var g;\n      for (g = 3; 0 < g; --g) (b += 4 * c), Fa(a, b, c, 1, 16, d, e, f);\n    }\n    function Ze(a, b, c, d, e, f) {\n      var g;\n      for (g = 3; 0 < g; --g) (b += 4), Fa(a, b, 1, c, 16, d, e, f);\n    }\n    function We(a, b, c, d, e, f, g, h) {\n      ea(a, b, e, 1, 8, f, g, h);\n      ea(c, d, e, 1, 8, f, g, h);\n    }\n    function Xe(a, b, c, d, e, f, g, h) {\n      ea(a, b, 1, e, 8, f, g, h);\n      ea(c, d, 1, e, 8, f, g, h);\n    }\n    function $e(a, b, c, d, e, f, g, h) {\n      Fa(a, b + 4 * e, e, 1, 8, f, g, h);\n      Fa(c, d + 4 * e, e, 1, 8, f, g, h);\n    }\n    function af(a, b, c, d, e, f, g, h) {\n      Fa(a, b + 4, 1, e, 8, f, g, h);\n      Fa(c, d + 4, 1, e, 8, f, g, h);\n    }\n    function Cf() {\n      this.ba = new Cb();\n      this.ec = [];\n      this.cc = [];\n      this.Mc = [];\n      this.Dc = this.Nc = this.dc = this.fc = 0;\n      this.Oa = new Ud();\n      this.memory = 0;\n      this.Ib = \"OutputFunc\";\n      this.Jb = \"OutputAlphaFunc\";\n      this.Nd = \"OutputRowFunc\";\n    }\n    function md() {\n      this.data = [];\n      this.offset = this.kd = this.ha = this.w = 0;\n      this.na = [];\n      this.xa = this.gb = this.Ja = this.Sa = this.P = 0;\n    }\n    function Df() {\n      this.nc = this.Ea = this.b = this.hc = 0;\n      this.K = [];\n      this.w = 0;\n    }\n    function Ef() {\n      this.ua = 0;\n      this.Wa = new ac();\n      this.vb = new ac();\n      this.md = this.xc = this.wc = 0;\n      this.vc = [];\n      this.Wb = 0;\n      this.Ya = new Ub();\n      this.yc = new O();\n    }\n    function je() {\n      this.xb = this.a = 0;\n      this.l = new Oa();\n      this.ca = new Cb();\n      this.V = [];\n      this.Ba = 0;\n      this.Ta = [];\n      this.Ua = 0;\n      this.m = new Ra();\n      this.Pb = 0;\n      this.wd = new Ra();\n      this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0;\n      this.s = new Ef();\n      this.ab = 0;\n      this.gc = wa(4, Df);\n      this.Oc = 0;\n    }\n    function Ff() {\n      this.Lc = this.Z = this.$a = this.i = this.c = 0;\n      this.l = new Oa();\n      this.ic = 0;\n      this.ca = [];\n      this.tb = 0;\n      this.qd = null;\n      this.rd = 0;\n    }\n    function Rb(a, b, c, d, e, f, g) {\n      a = null == a ? 0 : a[b + 0];\n      for (b = 0; b < g; ++b) (e[f + b] = (a + c[d + b]) & 255), (a = e[f + b]);\n    }\n    function Gf(a, b, c, d, e, f, g) {\n      if (null == a) Rb(null, null, c, d, e, f, g);\n      else {\n        var h;\n        for (h = 0; h < g; ++h) e[f + h] = (a[b + h] + c[d + h]) & 255;\n      }\n    }\n    function Hf(a, b, c, d, e, f, g) {\n      if (null == a) Rb(null, null, c, d, e, f, g);\n      else {\n        var h = a[b + 0],\n          k = h,\n          l = h,\n          m;\n        for (m = 0; m < g; ++m)\n          (h = a[b + m]),\n            (k = l + h - k),\n            (l = (c[d + m] + (k & -256 ? (0 > k ? 0 : 255) : k)) & 255),\n            (k = h),\n            (e[f + m] = l);\n      }\n    }\n    function Le(a, b, c, d) {\n      var e = b.width,\n        f = b.o;\n      x(null != a && null != b);\n      if (0 > c || 0 >= d || c + d > f) return null;\n      if (!a.Cc) {\n        if (null == a.ga) {\n          a.ga = new Ff();\n          var g;\n          (g = null == a.ga) ||\n            ((g = b.width * b.o),\n            x(0 == a.Gb.length),\n            (a.Gb = V(g)),\n            (a.Uc = 0),\n            null == a.Gb\n              ? (g = 0)\n              : ((a.mb = a.Gb), (a.nb = a.Uc), (a.rc = null), (g = 1)),\n            (g = !g));\n          if (!g) {\n            g = a.ga;\n            var h = a.Fa,\n              k = a.P,\n              l = a.qc,\n              m = a.mb,\n              n = a.nb,\n              r = k + 1,\n              q = l - 1,\n              t = g.l;\n            x(null != h && null != m && null != b);\n            ia[0] = null;\n            ia[1] = Rb;\n            ia[2] = Gf;\n            ia[3] = Hf;\n            g.ca = m;\n            g.tb = n;\n            g.c = b.width;\n            g.i = b.height;\n            x(0 < g.c && 0 < g.i);\n            if (1 >= l) b = 0;\n            else if (\n              ((g.$a = (h[k + 0] >> 0) & 3),\n              (g.Z = (h[k + 0] >> 2) & 3),\n              (g.Lc = (h[k + 0] >> 4) & 3),\n              (k = (h[k + 0] >> 6) & 3),\n              0 > g.$a || 1 < g.$a || 4 <= g.Z || 1 < g.Lc || k)\n            )\n              b = 0;\n            else if (\n              ((t.put = kc),\n              (t.ac = gc),\n              (t.bc = lc),\n              (t.ma = g),\n              (t.width = b.width),\n              (t.height = b.height),\n              (t.Da = b.Da),\n              (t.v = b.v),\n              (t.va = b.va),\n              (t.j = b.j),\n              (t.o = b.o),\n              g.$a)\n            )\n              b: {\n                x(1 == g.$a), (b = Bc());\n                c: for (;;) {\n                  if (null == b) {\n                    b = 0;\n                    break b;\n                  }\n                  x(null != g);\n                  g.mc = b;\n                  b.c = g.c;\n                  b.i = g.i;\n                  b.l = g.l;\n                  b.l.ma = g;\n                  b.l.width = g.c;\n                  b.l.height = g.i;\n                  b.a = 0;\n                  cb(b.m, h, r, q);\n                  if (!rb(g.c, g.i, 1, b, null)) break c;\n                  1 == b.ab && 3 == b.gc[0].hc && yc(b.s)\n                    ? ((g.ic = 1),\n                      (h = b.c * b.i),\n                      (b.Ta = null),\n                      (b.Ua = 0),\n                      (b.V = V(h)),\n                      (b.Ba = 0),\n                      null == b.V ? ((b.a = 1), (b = 0)) : (b = 1))\n                    : ((g.ic = 0), (b = Ec(b, g.c)));\n                  if (!b) break c;\n                  b = 1;\n                  break b;\n                }\n                g.mc = null;\n                b = 0;\n              }\n            else b = q >= g.c * g.i;\n            g = !b;\n          }\n          if (g) return null;\n          1 != a.ga.Lc ? (a.Ga = 0) : (d = f - c);\n        }\n        x(null != a.ga);\n        x(c + d <= f);\n        a: {\n          h = a.ga;\n          b = h.c;\n          f = h.l.o;\n          if (0 == h.$a) {\n            r = a.rc;\n            q = a.Vc;\n            t = a.Fa;\n            k = a.P + 1 + c * b;\n            l = a.mb;\n            m = a.nb + c * b;\n            x(k <= a.P + a.qc);\n            if (0 != h.Z)\n              for (x(null != ia[h.Z]), g = 0; g < d; ++g)\n                ia[h.Z](r, q, t, k, l, m, b),\n                  (r = l),\n                  (q = m),\n                  (m += b),\n                  (k += b);\n            else\n              for (g = 0; g < d; ++g)\n                I(l, m, t, k, b), (r = l), (q = m), (m += b), (k += b);\n            a.rc = r;\n            a.Vc = q;\n          } else {\n            x(null != h.mc);\n            b = c + d;\n            g = h.mc;\n            x(null != g);\n            x(b <= g.i);\n            if (g.C >= b) b = 1;\n            else if ((h.ic || Aa(), h.ic)) {\n              var h = g.V,\n                r = g.Ba,\n                q = g.c,\n                v = g.i,\n                t = 1,\n                k = g.$ / q,\n                l = g.$ % q,\n                m = g.m,\n                n = g.s,\n                p = g.$,\n                u = q * v,\n                w = q * b,\n                y = n.wc,\n                A = p < w ? ha(n, l, k) : null;\n              x(p <= u);\n              x(b <= v);\n              x(yc(n));\n              c: for (;;) {\n                for (; !m.h && p < w; ) {\n                  l & y || (A = ha(n, l, k));\n                  x(null != A);\n                  Sa(m);\n                  v = ua(A.G[0], A.H[0], m);\n                  if (256 > v)\n                    (h[r + p] = v),\n                      ++p,\n                      ++l,\n                      l >= q && ((l = 0), ++k, k <= b && !(k % 16) && Ib(g, k));\n                  else if (280 > v) {\n                    var v = ib(v - 256, m);\n                    var E = ua(A.G[4], A.H[4], m);\n                    Sa(m);\n                    E = ib(E, m);\n                    E = nc(q, E);\n                    if (p >= E && u - p >= v) {\n                      var B;\n                      for (B = 0; B < v; ++B) h[r + p + B] = h[r + p + B - E];\n                    } else {\n                      t = 0;\n                      break c;\n                    }\n                    p += v;\n                    for (l += v; l >= q; )\n                      (l -= q), ++k, k <= b && !(k % 16) && Ib(g, k);\n                    p < w && l & y && (A = ha(n, l, k));\n                  } else {\n                    t = 0;\n                    break c;\n                  }\n                  x(m.h == db(m));\n                }\n                Ib(g, k > b ? b : k);\n                break c;\n              }\n              !t || (m.h && p < u) ? ((t = 0), (g.a = m.h ? 5 : 3)) : (g.$ = p);\n              b = t;\n            } else b = Jb(g, g.V, g.Ba, g.c, g.i, b, se);\n            if (!b) {\n              d = 0;\n              break a;\n            }\n          }\n          c + d >= f && (a.Cc = 1);\n          d = 1;\n        }\n        if (!d) return null;\n        if (\n          a.Cc &&\n          ((d = a.ga), null != d && (d.mc = null), (a.ga = null), 0 < a.Ga)\n        )\n          return alert(\"todo:WebPDequantizeLevels\"), null;\n      }\n      return a.nb + c * e;\n    }\n    function If(a, b, c, d, e, f) {\n      for (; 0 < e--; ) {\n        var g = a,\n          h = b + (c ? 1 : 0),\n          k = a,\n          l = b + (c ? 0 : 3),\n          m;\n        for (m = 0; m < d; ++m) {\n          var n = k[l + 4 * m];\n          255 != n &&\n            ((n *= 32897),\n            (g[h + 4 * m + 0] = (g[h + 4 * m + 0] * n) >> 23),\n            (g[h + 4 * m + 1] = (g[h + 4 * m + 1] * n) >> 23),\n            (g[h + 4 * m + 2] = (g[h + 4 * m + 2] * n) >> 23));\n        }\n        b += f;\n      }\n    }\n    function Jf(a, b, c, d, e) {\n      for (; 0 < d--; ) {\n        var f;\n        for (f = 0; f < c; ++f) {\n          var g = a[b + 2 * f + 0],\n            h = a[b + 2 * f + 1],\n            k = h & 15,\n            l = 4369 * k,\n            h = (((h & 240) | (h >> 4)) * l) >> 16;\n          a[b + 2 * f + 0] =\n            (((((g & 240) | (g >> 4)) * l) >> 16) & 240) |\n            ((((((g & 15) | (g << 4)) * l) >> 16) >> 4) & 15);\n          a[b + 2 * f + 1] = (h & 240) | k;\n        }\n        b += e;\n      }\n    }\n    function Kf(a, b, c, d, e, f, g, h) {\n      var k = 255,\n        l,\n        m;\n      for (m = 0; m < e; ++m) {\n        for (l = 0; l < d; ++l) {\n          var n = a[b + l];\n          f[g + 4 * l] = n;\n          k &= n;\n        }\n        b += c;\n        g += h;\n      }\n      return 255 != k;\n    }\n    function Lf(a, b, c, d, e) {\n      var f;\n      for (f = 0; f < e; ++f) c[d + f] = a[b + f] >> 8;\n    }\n    function Aa() {\n      za = If;\n      vc = Jf;\n      fc = Kf;\n      Fc = Lf;\n    }\n    function va(a, b, c) {\n      self[a] = function(a, e, f, g, h, k, l, m, n, r, q, t, v, p, u, w, y) {\n        var d,\n          E = (y - 1) >> 1;\n        var B = h[k + 0] | (l[m + 0] << 16);\n        var C = n[r + 0] | (q[t + 0] << 16);\n        x(null != a);\n        var z = (3 * B + C + 131074) >> 2;\n        b(a[e + 0], z & 255, z >> 16, v, p);\n        null != f &&\n          ((z = (3 * C + B + 131074) >> 2),\n          b(f[g + 0], z & 255, z >> 16, u, w));\n        for (d = 1; d <= E; ++d) {\n          var D = h[k + d] | (l[m + d] << 16);\n          var G = n[r + d] | (q[t + d] << 16);\n          var F = B + D + C + G + 524296;\n          var H = (F + 2 * (D + C)) >> 3;\n          F = (F + 2 * (B + G)) >> 3;\n          z = (H + B) >> 1;\n          B = (F + D) >> 1;\n          b(a[e + 2 * d - 1], z & 255, z >> 16, v, p + (2 * d - 1) * c);\n          b(a[e + 2 * d - 0], B & 255, B >> 16, v, p + (2 * d - 0) * c);\n          null != f &&\n            ((z = (F + C) >> 1),\n            (B = (H + G) >> 1),\n            b(f[g + 2 * d - 1], z & 255, z >> 16, u, w + (2 * d - 1) * c),\n            b(f[g + 2 * d + 0], B & 255, B >> 16, u, w + (2 * d + 0) * c));\n          B = D;\n          C = G;\n        }\n        y & 1 ||\n          ((z = (3 * B + C + 131074) >> 2),\n          b(a[e + y - 1], z & 255, z >> 16, v, p + (y - 1) * c),\n          null != f &&\n            ((z = (3 * C + B + 131074) >> 2),\n            b(f[g + y - 1], z & 255, z >> 16, u, w + (y - 1) * c)));\n      };\n    }\n    function ic() {\n      P[Ca] = Mf;\n      P[Ua] = nd;\n      P[tc] = Nf;\n      P[Va] = od;\n      P[ya] = pd;\n      P[Db] = qd;\n      P[wc] = Of;\n      P[zb] = nd;\n      P[Ab] = od;\n      P[Ja] = pd;\n      P[Bb] = qd;\n    }\n    function Sb(a) {\n      return a & ~Pf ? (0 > a ? 0 : 255) : a >> rd;\n    }\n    function bb(a, b) {\n      return Sb(((19077 * a) >> 8) + ((26149 * b) >> 8) - 14234);\n    }\n    function nb(a, b, c) {\n      return Sb(\n        ((19077 * a) >> 8) - ((6419 * b) >> 8) - ((13320 * c) >> 8) + 8708\n      );\n    }\n    function Pa(a, b) {\n      return Sb(((19077 * a) >> 8) + ((33050 * b) >> 8) - 17685);\n    }\n    function Ga(a, b, c, d, e) {\n      d[e + 0] = bb(a, c);\n      d[e + 1] = nb(a, b, c);\n      d[e + 2] = Pa(a, b);\n    }\n    function Tb(a, b, c, d, e) {\n      d[e + 0] = Pa(a, b);\n      d[e + 1] = nb(a, b, c);\n      d[e + 2] = bb(a, c);\n    }\n    function sd(a, b, c, d, e) {\n      var f = nb(a, b, c);\n      b = ((f << 3) & 224) | (Pa(a, b) >> 3);\n      d[e + 0] = (bb(a, c) & 248) | (f >> 5);\n      d[e + 1] = b;\n    }\n    function td(a, b, c, d, e) {\n      var f = (Pa(a, b) & 240) | 15;\n      d[e + 0] = (bb(a, c) & 240) | (nb(a, b, c) >> 4);\n      d[e + 1] = f;\n    }\n    function ud(a, b, c, d, e) {\n      d[e + 0] = 255;\n      Ga(a, b, c, d, e + 1);\n    }\n    function vd(a, b, c, d, e) {\n      Tb(a, b, c, d, e);\n      d[e + 3] = 255;\n    }\n    function wd(a, b, c, d, e) {\n      Ga(a, b, c, d, e);\n      d[e + 3] = 255;\n    }\n    function ga(a, b) {\n      return 0 > a ? 0 : a > b ? b : a;\n    }\n    function la(a, b, c) {\n      self[a] = function(a, e, f, g, h, k, l, m, n) {\n        for (var d = m + (n & -2) * c; m != d; )\n          b(a[e + 0], f[g + 0], h[k + 0], l, m),\n            b(a[e + 1], f[g + 0], h[k + 0], l, m + c),\n            (e += 2),\n            ++g,\n            ++k,\n            (m += 2 * c);\n        n & 1 && b(a[e + 0], f[g + 0], h[k + 0], l, m);\n      };\n    }\n    function xd(a, b, c) {\n      return 0 == c ? (0 == a ? (0 == b ? 6 : 5) : 0 == b ? 4 : 0) : c;\n    }\n    function yd(a, b, c, d, e) {\n      switch (a >>> 30) {\n        case 3:\n          Za(b, c, d, e, 0);\n          break;\n        case 2:\n          fd(b, c, d, e);\n          break;\n        case 1:\n          pa(b, c, d, e);\n      }\n    }\n    function Oc(a, b) {\n      var c,\n        d,\n        e = b.M,\n        f = b.Nb,\n        g = a.oc,\n        h = a.pc + 40,\n        k = a.oc,\n        l = a.pc + 584,\n        m = a.oc,\n        n = a.pc + 600;\n      for (c = 0; 16 > c; ++c) g[h + 32 * c - 1] = 129;\n      for (c = 0; 8 > c; ++c)\n        (k[l + 32 * c - 1] = 129), (m[n + 32 * c - 1] = 129);\n      0 < e\n        ? (g[h - 1 - 32] = k[l - 1 - 32] = m[n - 1 - 32] = 129)\n        : (M(g, h - 32 - 1, 127, 21),\n          M(k, l - 32 - 1, 127, 9),\n          M(m, n - 32 - 1, 127, 9));\n      for (d = 0; d < a.za; ++d) {\n        var r = b.ya[b.aa + d];\n        if (0 < d) {\n          for (c = -1; 16 > c; ++c) I(g, h + 32 * c - 4, g, h + 32 * c + 12, 4);\n          for (c = -1; 8 > c; ++c)\n            I(k, l + 32 * c - 4, k, l + 32 * c + 4, 4),\n              I(m, n + 32 * c - 4, m, n + 32 * c + 4, 4);\n        }\n        var q = a.Gd,\n          t = a.Hd + d,\n          v = r.ad,\n          p = r.Hc;\n        0 < e &&\n          (I(g, h - 32, q[t].y, 0, 16),\n          I(k, l - 32, q[t].f, 0, 8),\n          I(m, n - 32, q[t].ea, 0, 8));\n        if (r.Za) {\n          var u = g;\n          var w = h - 32 + 16;\n          0 < e &&\n            (d >= a.za - 1\n              ? M(u, w, q[t].y[15], 4)\n              : I(u, w, q[t + 1].y, 0, 4));\n          for (c = 0; 4 > c; c++)\n            u[w + 128 + c] = u[w + 256 + c] = u[w + 384 + c] = u[w + 0 + c];\n          for (c = 0; 16 > c; ++c, p <<= 2)\n            (u = g), (w = h + zd[c]), W[r.Ob[c]](u, w), yd(p, v, 16 * +c, u, w);\n        } else if (((u = xd(d, e, r.Ob[0])), Y[u](g, h), 0 != p))\n          for (c = 0; 16 > c; ++c, p <<= 2) yd(p, v, 16 * +c, g, h + zd[c]);\n        c = r.Gc;\n        u = xd(d, e, r.Dd);\n        ka[u](k, l);\n        ka[u](m, n);\n        r = c >> 0;\n        p = v;\n        u = k;\n        w = l;\n        r & 255 && (r & 170 ? Nb(p, 256, u, w) : Ob(p, 256, u, w));\n        c >>= 8;\n        r = m;\n        p = n;\n        c & 255 && (c & 170 ? Nb(v, 320, r, p) : Ob(v, 320, r, p));\n        e < a.Ub - 1 &&\n          (I(q[t].y, 0, g, h + 480, 16),\n          I(q[t].f, 0, k, l + 224, 8),\n          I(q[t].ea, 0, m, n + 224, 8));\n        c = 8 * f * a.B;\n        q = a.sa;\n        t = a.ta + 16 * d + 16 * f * a.R;\n        v = a.qa;\n        r = a.ra + 8 * d + c;\n        p = a.Ha;\n        u = a.Ia + 8 * d + c;\n        for (c = 0; 16 > c; ++c) I(q, t + c * a.R, g, h + 32 * c, 16);\n        for (c = 0; 8 > c; ++c)\n          I(v, r + c * a.B, k, l + 32 * c, 8),\n            I(p, u + c * a.B, m, n + 32 * c, 8);\n      }\n    }\n    function Ad(a, b, c, d, e, f, g, h, k) {\n      var l = [0],\n        m = [0],\n        n = 0,\n        r = null != k ? k.kd : 0,\n        q = null != k ? k : new md();\n      if (null == a || 12 > c) return 7;\n      q.data = a;\n      q.w = b;\n      q.ha = c;\n      b = [b];\n      c = [c];\n      q.gb = [q.gb];\n      a: {\n        var t = b;\n        var v = c;\n        var p = q.gb;\n        x(null != a);\n        x(null != v);\n        x(null != p);\n        p[0] = 0;\n        if (12 <= v[0] && !fa(a, t[0], \"RIFF\")) {\n          if (fa(a, t[0] + 8, \"WEBP\")) {\n            p = 3;\n            break a;\n          }\n          var u = Ha(a, t[0] + 4);\n          if (12 > u || 4294967286 < u) {\n            p = 3;\n            break a;\n          }\n          if (r && u > v[0] - 8) {\n            p = 7;\n            break a;\n          }\n          p[0] = u;\n          t[0] += 12;\n          v[0] -= 12;\n        }\n        p = 0;\n      }\n      if (0 != p) return p;\n      u = 0 < q.gb[0];\n      for (c = c[0]; ; ) {\n        t = [0];\n        n = [n];\n        a: {\n          var w = a;\n          v = b;\n          p = c;\n          var y = n,\n            A = l,\n            z = m,\n            B = t;\n          y[0] = 0;\n          if (8 > p[0]) p = 7;\n          else {\n            if (!fa(w, v[0], \"VP8X\")) {\n              if (10 != Ha(w, v[0] + 4)) {\n                p = 3;\n                break a;\n              }\n              if (18 > p[0]) {\n                p = 7;\n                break a;\n              }\n              var C = Ha(w, v[0] + 8);\n              var D = 1 + Yb(w, v[0] + 12);\n              w = 1 + Yb(w, v[0] + 15);\n              if (2147483648 <= D * w) {\n                p = 3;\n                break a;\n              }\n              null != B && (B[0] = C);\n              null != A && (A[0] = D);\n              null != z && (z[0] = w);\n              v[0] += 18;\n              p[0] -= 18;\n              y[0] = 1;\n            }\n            p = 0;\n          }\n        }\n        n = n[0];\n        t = t[0];\n        if (0 != p) return p;\n        v = !!(t & 2);\n        if (!u && n) return 3;\n        null != f && (f[0] = !!(t & 16));\n        null != g && (g[0] = v);\n        null != h && (h[0] = 0);\n        g = l[0];\n        t = m[0];\n        if (n && v && null == k) {\n          p = 0;\n          break;\n        }\n        if (4 > c) {\n          p = 7;\n          break;\n        }\n        if ((u && n) || (!u && !n && !fa(a, b[0], \"ALPH\"))) {\n          c = [c];\n          q.na = [q.na];\n          q.P = [q.P];\n          q.Sa = [q.Sa];\n          a: {\n            C = a;\n            p = b;\n            u = c;\n            var y = q.gb,\n              A = q.na,\n              z = q.P,\n              B = q.Sa;\n            D = 22;\n            x(null != C);\n            x(null != u);\n            w = p[0];\n            var F = u[0];\n            x(null != A);\n            x(null != B);\n            A[0] = null;\n            z[0] = null;\n            for (B[0] = 0; ; ) {\n              p[0] = w;\n              u[0] = F;\n              if (8 > F) {\n                p = 7;\n                break a;\n              }\n              var G = Ha(C, w + 4);\n              if (4294967286 < G) {\n                p = 3;\n                break a;\n              }\n              var H = (8 + G + 1) & -2;\n              D += H;\n              if (0 < y && D > y) {\n                p = 3;\n                break a;\n              }\n              if (!fa(C, w, \"VP8 \") || !fa(C, w, \"VP8L\")) {\n                p = 0;\n                break a;\n              }\n              if (F[0] < H) {\n                p = 7;\n                break a;\n              }\n              fa(C, w, \"ALPH\") || ((A[0] = C), (z[0] = w + 8), (B[0] = G));\n              w += H;\n              F -= H;\n            }\n          }\n          c = c[0];\n          q.na = q.na[0];\n          q.P = q.P[0];\n          q.Sa = q.Sa[0];\n          if (0 != p) break;\n        }\n        c = [c];\n        q.Ja = [q.Ja];\n        q.xa = [q.xa];\n        a: if (\n          ((y = a),\n          (p = b),\n          (u = c),\n          (A = q.gb[0]),\n          (z = q.Ja),\n          (B = q.xa),\n          (C = p[0]),\n          (w = !fa(y, C, \"VP8 \")),\n          (D = !fa(y, C, \"VP8L\")),\n          x(null != y),\n          x(null != u),\n          x(null != z),\n          x(null != B),\n          8 > u[0])\n        )\n          p = 7;\n        else {\n          if (w || D) {\n            y = Ha(y, C + 4);\n            if (12 <= A && y > A - 12) {\n              p = 3;\n              break a;\n            }\n            if (r && y > u[0] - 8) {\n              p = 7;\n              break a;\n            }\n            z[0] = y;\n            p[0] += 8;\n            u[0] -= 8;\n            B[0] = D;\n          } else\n            (B[0] = 5 <= u[0] && 47 == y[C + 0] && !(y[C + 4] >> 5)),\n              (z[0] = u[0]);\n          p = 0;\n        }\n        c = c[0];\n        q.Ja = q.Ja[0];\n        q.xa = q.xa[0];\n        b = b[0];\n        if (0 != p) break;\n        if (4294967286 < q.Ja) return 3;\n        null == h || v || (h[0] = q.xa ? 2 : 1);\n        g = [g];\n        t = [t];\n        if (q.xa) {\n          if (5 > c) {\n            p = 7;\n            break;\n          }\n          h = g;\n          r = t;\n          v = f;\n          null == a || 5 > c\n            ? (a = 0)\n            : 5 <= c && 47 == a[b + 0] && !(a[b + 4] >> 5)\n            ? ((u = [0]),\n              (y = [0]),\n              (A = [0]),\n              (z = new Ra()),\n              cb(z, a, b, c),\n              mc(z, u, y, A)\n                ? (null != h && (h[0] = u[0]),\n                  null != r && (r[0] = y[0]),\n                  null != v && (v[0] = A[0]),\n                  (a = 1))\n                : (a = 0))\n            : (a = 0);\n        } else {\n          if (10 > c) {\n            p = 7;\n            break;\n          }\n          h = t;\n          null == a || 10 > c || !Jc(a, b + 3, c - 3)\n            ? (a = 0)\n            : ((r = a[b + 0] | (a[b + 1] << 8) | (a[b + 2] << 16)),\n              (v = ((a[b + 7] << 8) | a[b + 6]) & 16383),\n              (a = ((a[b + 9] << 8) | a[b + 8]) & 16383),\n              r & 1 ||\n              3 < ((r >> 1) & 7) ||\n              !((r >> 4) & 1) ||\n              r >> 5 >= q.Ja ||\n              !v ||\n              !a\n                ? (a = 0)\n                : (g && (g[0] = v), h && (h[0] = a), (a = 1)));\n        }\n        if (!a) return 3;\n        g = g[0];\n        t = t[0];\n        if (n && (l[0] != g || m[0] != t)) return 3;\n        null != k &&\n          ((k[0] = q),\n          (k.offset = b - k.w),\n          x(4294967286 > b - k.w),\n          x(k.offset == k.ha - c));\n        break;\n      }\n      return 0 == p || (7 == p && n && null == k)\n        ? (null != f && (f[0] |= null != q.na && 0 < q.na.length),\n          null != d && (d[0] = g),\n          null != e && (e[0] = t),\n          0)\n        : p;\n    }\n    function hc(a, b, c) {\n      var d = b.width,\n        e = b.height,\n        f = 0,\n        g = 0,\n        h = d,\n        k = e;\n      b.Da = null != a && 0 < a.Da;\n      if (\n        b.Da &&\n        ((h = a.cd),\n        (k = a.bd),\n        (f = a.v),\n        (g = a.j),\n        11 > c || ((f &= -2), (g &= -2)),\n        0 > f || 0 > g || 0 >= h || 0 >= k || f + h > d || g + k > e)\n      )\n        return 0;\n      b.v = f;\n      b.j = g;\n      b.va = f + h;\n      b.o = g + k;\n      b.U = h;\n      b.T = k;\n      b.da = null != a && 0 < a.da;\n      if (b.da) {\n        c = [a.ib];\n        f = [a.hb];\n        if (!bc(h, k, c, f)) return 0;\n        b.ib = c[0];\n        b.hb = f[0];\n      }\n      b.ob = null != a && a.ob;\n      b.Kb = null == a || !a.Sd;\n      b.da && ((b.ob = b.ib < (3 * d) / 4 && b.hb < (3 * e) / 4), (b.Kb = 0));\n      return 1;\n    }\n    function Bd(a) {\n      if (null == a) return 2;\n      if (11 > a.S) {\n        var b = a.f.RGBA;\n        b.fb += (a.height - 1) * b.A;\n        b.A = -b.A;\n      } else\n        (b = a.f.kb),\n          (a = a.height),\n          (b.O += (a - 1) * b.fa),\n          (b.fa = -b.fa),\n          (b.N += ((a - 1) >> 1) * b.Ab),\n          (b.Ab = -b.Ab),\n          (b.W += ((a - 1) >> 1) * b.Db),\n          (b.Db = -b.Db),\n          null != b.F && ((b.J += (a - 1) * b.lb), (b.lb = -b.lb));\n      return 0;\n    }\n    function Cd(a, b, c, d) {\n      if (null == d || 0 >= a || 0 >= b) return 2;\n      if (null != c) {\n        if (c.Da) {\n          var e = c.cd,\n            f = c.bd,\n            g = c.v & -2,\n            h = c.j & -2;\n          if (0 > g || 0 > h || 0 >= e || 0 >= f || g + e > a || h + f > b)\n            return 2;\n          a = e;\n          b = f;\n        }\n        if (c.da) {\n          e = [c.ib];\n          f = [c.hb];\n          if (!bc(a, b, e, f)) return 2;\n          a = e[0];\n          b = f[0];\n        }\n      }\n      d.width = a;\n      d.height = b;\n      a: {\n        var k = d.width;\n        var l = d.height;\n        a = d.S;\n        if (0 >= k || 0 >= l || !(a >= Ca && 13 > a)) a = 2;\n        else {\n          if (0 >= d.Rd && null == d.sd) {\n            var g = (f = e = b = 0),\n              h = k * Dd[a],\n              m = h * l;\n            11 > a ||\n              ((b = (k + 1) / 2),\n              (f = ((l + 1) / 2) * b),\n              12 == a && ((e = k), (g = e * l)));\n            l = V(m + 2 * f + g);\n            if (null == l) {\n              a = 1;\n              break a;\n            }\n            d.sd = l;\n            11 > a\n              ? ((k = d.f.RGBA),\n                (k.eb = l),\n                (k.fb = 0),\n                (k.A = h),\n                (k.size = m))\n              : ((k = d.f.kb),\n                (k.y = l),\n                (k.O = 0),\n                (k.fa = h),\n                (k.Fd = m),\n                (k.f = l),\n                (k.N = 0 + m),\n                (k.Ab = b),\n                (k.Cd = f),\n                (k.ea = l),\n                (k.W = 0 + m + f),\n                (k.Db = b),\n                (k.Ed = f),\n                12 == a && ((k.F = l), (k.J = 0 + m + 2 * f)),\n                (k.Tc = g),\n                (k.lb = e));\n          }\n          b = 1;\n          e = d.S;\n          f = d.width;\n          g = d.height;\n          if (e >= Ca && 13 > e)\n            if (11 > e)\n              (a = d.f.RGBA),\n                (h = Math.abs(a.A)),\n                (b &= h * (g - 1) + f <= a.size),\n                (b &= h >= f * Dd[e]),\n                (b &= null != a.eb);\n            else {\n              a = d.f.kb;\n              h = (f + 1) / 2;\n              m = (g + 1) / 2;\n              k = Math.abs(a.fa);\n              var l = Math.abs(a.Ab),\n                n = Math.abs(a.Db),\n                r = Math.abs(a.lb),\n                q = r * (g - 1) + f;\n              b &= k * (g - 1) + f <= a.Fd;\n              b &= l * (m - 1) + h <= a.Cd;\n              b &= n * (m - 1) + h <= a.Ed;\n              b = b & (k >= f) & (l >= h) & (n >= h);\n              b &= null != a.y;\n              b &= null != a.f;\n              b &= null != a.ea;\n              12 == e && ((b &= r >= f), (b &= q <= a.Tc), (b &= null != a.F));\n            }\n          else b = 0;\n          a = b ? 0 : 2;\n        }\n      }\n      if (0 != a) return a;\n      null != c && c.fd && (a = Bd(d));\n      return a;\n    }\n    var xb = 64,\n      Hd = [\n        0,\n        1,\n        3,\n        7,\n        15,\n        31,\n        63,\n        127,\n        255,\n        511,\n        1023,\n        2047,\n        4095,\n        8191,\n        16383,\n        32767,\n        65535,\n        131071,\n        262143,\n        524287,\n        1048575,\n        2097151,\n        4194303,\n        8388607,\n        16777215\n      ],\n      Gd = 24,\n      ob = 32,\n      Xb = 8,\n      Id = [\n        0,\n        0,\n        1,\n        1,\n        2,\n        2,\n        2,\n        2,\n        3,\n        3,\n        3,\n        3,\n        3,\n        3,\n        3,\n        3,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7\n      ];\n    X(\"Predictor0\", \"PredictorAdd0\");\n    self.Predictor0 = function() {\n      return 4278190080;\n    };\n    self.Predictor1 = function(a) {\n      return a;\n    };\n    self.Predictor2 = function(a, b, c) {\n      return b[c + 0];\n    };\n    self.Predictor3 = function(a, b, c) {\n      return b[c + 1];\n    };\n    self.Predictor4 = function(a, b, c) {\n      return b[c - 1];\n    };\n    self.Predictor5 = function(a, b, c) {\n      return aa(aa(a, b[c + 1]), b[c + 0]);\n    };\n    self.Predictor6 = function(a, b, c) {\n      return aa(a, b[c - 1]);\n    };\n    self.Predictor7 = function(a, b, c) {\n      return aa(a, b[c + 0]);\n    };\n    self.Predictor8 = function(a, b, c) {\n      return aa(b[c - 1], b[c + 0]);\n    };\n    self.Predictor9 = function(a, b, c) {\n      return aa(b[c + 0], b[c + 1]);\n    };\n    self.Predictor10 = function(a, b, c) {\n      return aa(aa(a, b[c - 1]), aa(b[c + 0], b[c + 1]));\n    };\n    self.Predictor11 = function(a, b, c) {\n      var d = b[c + 0];\n      b = b[c - 1];\n      return 0 >=\n        Ia((d >> 24) & 255, (a >> 24) & 255, (b >> 24) & 255) +\n          Ia((d >> 16) & 255, (a >> 16) & 255, (b >> 16) & 255) +\n          Ia((d >> 8) & 255, (a >> 8) & 255, (b >> 8) & 255) +\n          Ia(d & 255, a & 255, b & 255)\n        ? d\n        : a;\n    };\n    self.Predictor12 = function(a, b, c) {\n      var d = b[c + 0];\n      b = b[c - 1];\n      return (\n        ((sa(((a >> 24) & 255) + ((d >> 24) & 255) - ((b >> 24) & 255)) << 24) |\n          (sa(((a >> 16) & 255) + ((d >> 16) & 255) - ((b >> 16) & 255)) <<\n            16) |\n          (sa(((a >> 8) & 255) + ((d >> 8) & 255) - ((b >> 8) & 255)) << 8) |\n          sa((a & 255) + (d & 255) - (b & 255))) >>>\n        0\n      );\n    };\n    self.Predictor13 = function(a, b, c) {\n      var d = b[c - 1];\n      a = aa(a, b[c + 0]);\n      return (\n        ((eb((a >> 24) & 255, (d >> 24) & 255) << 24) |\n          (eb((a >> 16) & 255, (d >> 16) & 255) << 16) |\n          (eb((a >> 8) & 255, (d >> 8) & 255) << 8) |\n          eb((a >> 0) & 255, (d >> 0) & 255)) >>>\n        0\n      );\n    };\n    var ee = self.PredictorAdd0;\n    self.PredictorAdd1 = cc;\n    X(\"Predictor2\", \"PredictorAdd2\");\n    X(\"Predictor3\", \"PredictorAdd3\");\n    X(\"Predictor4\", \"PredictorAdd4\");\n    X(\"Predictor5\", \"PredictorAdd5\");\n    X(\"Predictor6\", \"PredictorAdd6\");\n    X(\"Predictor7\", \"PredictorAdd7\");\n    X(\"Predictor8\", \"PredictorAdd8\");\n    X(\"Predictor9\", \"PredictorAdd9\");\n    X(\"Predictor10\", \"PredictorAdd10\");\n    X(\"Predictor11\", \"PredictorAdd11\");\n    X(\"Predictor12\", \"PredictorAdd12\");\n    X(\"Predictor13\", \"PredictorAdd13\");\n    var fe = self.PredictorAdd2;\n    ec(\n      \"ColorIndexInverseTransform\",\n      \"MapARGB\",\n      \"32b\",\n      function(a) {\n        return (a >> 8) & 255;\n      },\n      function(a) {\n        return a;\n      }\n    );\n    ec(\n      \"VP8LColorIndexInverseTransformAlpha\",\n      \"MapAlpha\",\n      \"8b\",\n      function(a) {\n        return a;\n      },\n      function(a) {\n        return (a >> 8) & 255;\n      }\n    );\n    var rc = self.ColorIndexInverseTransform,\n      ke = self.MapARGB,\n      he = self.VP8LColorIndexInverseTransformAlpha,\n      le = self.MapAlpha,\n      pc,\n      qc = (self.VP8LPredictorsAdd = []);\n    qc.length = 16;\n    (self.VP8LPredictors = []).length = 16;\n    (self.VP8LPredictorsAdd_C = []).length = 16;\n    (self.VP8LPredictors_C = []).length = 16;\n    var Fb,\n      sc,\n      Gb,\n      Hb,\n      xc,\n      uc,\n      bd = V(511),\n      cd = V(2041),\n      dd = V(225),\n      ed = V(767),\n      ad = 0,\n      Qb = cd,\n      mb = dd,\n      R = ed,\n      U = bd,\n      Ca = 0,\n      Ua = 1,\n      tc = 2,\n      Va = 3,\n      ya = 4,\n      Db = 5,\n      wc = 6,\n      zb = 7,\n      Ab = 8,\n      Ja = 9,\n      Bb = 10,\n      pe = [2, 3, 7],\n      oe = [3, 3, 11],\n      Dc = [280, 256, 256, 256, 40],\n      qe = [0, 1, 1, 1, 0],\n      ne = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n      de = [\n        24,\n        7,\n        23,\n        25,\n        40,\n        6,\n        39,\n        41,\n        22,\n        26,\n        38,\n        42,\n        56,\n        5,\n        55,\n        57,\n        21,\n        27,\n        54,\n        58,\n        37,\n        43,\n        72,\n        4,\n        71,\n        73,\n        20,\n        28,\n        53,\n        59,\n        70,\n        74,\n        36,\n        44,\n        88,\n        69,\n        75,\n        52,\n        60,\n        3,\n        87,\n        89,\n        19,\n        29,\n        86,\n        90,\n        35,\n        45,\n        68,\n        76,\n        85,\n        91,\n        51,\n        61,\n        104,\n        2,\n        103,\n        105,\n        18,\n        30,\n        102,\n        106,\n        34,\n        46,\n        84,\n        92,\n        67,\n        77,\n        101,\n        107,\n        50,\n        62,\n        120,\n        1,\n        119,\n        121,\n        83,\n        93,\n        17,\n        31,\n        100,\n        108,\n        66,\n        78,\n        118,\n        122,\n        33,\n        47,\n        117,\n        123,\n        49,\n        63,\n        99,\n        109,\n        82,\n        94,\n        0,\n        116,\n        124,\n        65,\n        79,\n        16,\n        32,\n        98,\n        110,\n        48,\n        115,\n        125,\n        81,\n        95,\n        64,\n        114,\n        126,\n        97,\n        111,\n        80,\n        113,\n        127,\n        96,\n        112\n      ],\n      me = [\n        2954,\n        2956,\n        2958,\n        2962,\n        2970,\n        2986,\n        3018,\n        3082,\n        3212,\n        3468,\n        3980,\n        5004\n      ],\n      ie = 8,\n      Lb = [\n        4,\n        5,\n        6,\n        7,\n        8,\n        9,\n        10,\n        10,\n        11,\n        12,\n        13,\n        14,\n        15,\n        16,\n        17,\n        17,\n        18,\n        19,\n        20,\n        20,\n        21,\n        21,\n        22,\n        22,\n        23,\n        23,\n        24,\n        25,\n        25,\n        26,\n        27,\n        28,\n        29,\n        30,\n        31,\n        32,\n        33,\n        34,\n        35,\n        36,\n        37,\n        37,\n        38,\n        39,\n        40,\n        41,\n        42,\n        43,\n        44,\n        45,\n        46,\n        46,\n        47,\n        48,\n        49,\n        50,\n        51,\n        52,\n        53,\n        54,\n        55,\n        56,\n        57,\n        58,\n        59,\n        60,\n        61,\n        62,\n        63,\n        64,\n        65,\n        66,\n        67,\n        68,\n        69,\n        70,\n        71,\n        72,\n        73,\n        74,\n        75,\n        76,\n        76,\n        77,\n        78,\n        79,\n        80,\n        81,\n        82,\n        83,\n        84,\n        85,\n        86,\n        87,\n        88,\n        89,\n        91,\n        93,\n        95,\n        96,\n        98,\n        100,\n        101,\n        102,\n        104,\n        106,\n        108,\n        110,\n        112,\n        114,\n        116,\n        118,\n        122,\n        124,\n        126,\n        128,\n        130,\n        132,\n        134,\n        136,\n        138,\n        140,\n        143,\n        145,\n        148,\n        151,\n        154,\n        157\n      ],\n      Mb = [\n        4,\n        5,\n        6,\n        7,\n        8,\n        9,\n        10,\n        11,\n        12,\n        13,\n        14,\n        15,\n        16,\n        17,\n        18,\n        19,\n        20,\n        21,\n        22,\n        23,\n        24,\n        25,\n        26,\n        27,\n        28,\n        29,\n        30,\n        31,\n        32,\n        33,\n        34,\n        35,\n        36,\n        37,\n        38,\n        39,\n        40,\n        41,\n        42,\n        43,\n        44,\n        45,\n        46,\n        47,\n        48,\n        49,\n        50,\n        51,\n        52,\n        53,\n        54,\n        55,\n        56,\n        57,\n        58,\n        60,\n        62,\n        64,\n        66,\n        68,\n        70,\n        72,\n        74,\n        76,\n        78,\n        80,\n        82,\n        84,\n        86,\n        88,\n        90,\n        92,\n        94,\n        96,\n        98,\n        100,\n        102,\n        104,\n        106,\n        108,\n        110,\n        112,\n        114,\n        116,\n        119,\n        122,\n        125,\n        128,\n        131,\n        134,\n        137,\n        140,\n        143,\n        146,\n        149,\n        152,\n        155,\n        158,\n        161,\n        164,\n        167,\n        170,\n        173,\n        177,\n        181,\n        185,\n        189,\n        193,\n        197,\n        201,\n        205,\n        209,\n        213,\n        217,\n        221,\n        225,\n        229,\n        234,\n        239,\n        245,\n        249,\n        254,\n        259,\n        264,\n        269,\n        274,\n        279,\n        284\n      ],\n      oa = null,\n      He = [\n        [173, 148, 140, 0],\n        [176, 155, 140, 135, 0],\n        [180, 157, 141, 134, 130, 0],\n        [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]\n      ],\n      Ie = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],\n      Mc = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],\n      Fe = [\n        [\n          [\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],\n            [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],\n            [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],\n            [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],\n            [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]\n          ],\n          [\n            [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],\n            [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],\n            [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],\n            [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],\n            [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],\n            [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],\n            [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],\n            [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],\n            [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n          ]\n        ],\n        [\n          [\n            [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],\n            [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],\n            [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]\n          ],\n          [\n            [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],\n            [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],\n            [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]\n          ],\n          [\n            [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],\n            [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],\n            [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]\n          ],\n          [\n            [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],\n            [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],\n            [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],\n            [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],\n            [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]\n          ],\n          [\n            [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],\n            [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],\n            [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]\n          ],\n          [\n            [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],\n            [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],\n            [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]\n          ],\n          [\n            [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],\n            [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n            [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]\n          ]\n        ],\n        [\n          [\n            [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],\n            [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],\n            [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]\n          ],\n          [\n            [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],\n            [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],\n            [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],\n            [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],\n            [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]\n          ],\n          [\n            [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],\n            [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],\n            [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n            [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],\n            [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],\n            [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],\n            [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n          ]\n        ],\n        [\n          [\n            [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],\n            [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],\n            [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]\n          ],\n          [\n            [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],\n            [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],\n            [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]\n          ],\n          [\n            [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],\n            [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],\n            [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]\n          ],\n          [\n            [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],\n            [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],\n            [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]\n          ],\n          [\n            [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],\n            [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],\n            [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]\n          ],\n          [\n            [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],\n            [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],\n            [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],\n            [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],\n            [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]\n          ],\n          [\n            [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ]\n        ]\n      ],\n      Ke = [\n        [\n          [231, 120, 48, 89, 115, 113, 120, 152, 112],\n          [152, 179, 64, 126, 170, 118, 46, 70, 95],\n          [175, 69, 143, 80, 85, 82, 72, 155, 103],\n          [56, 58, 10, 171, 218, 189, 17, 13, 152],\n          [114, 26, 17, 163, 44, 195, 21, 10, 173],\n          [121, 24, 80, 195, 26, 62, 44, 64, 85],\n          [144, 71, 10, 38, 171, 213, 144, 34, 26],\n          [170, 46, 55, 19, 136, 160, 33, 206, 71],\n          [63, 20, 8, 114, 114, 208, 12, 9, 226],\n          [81, 40, 11, 96, 182, 84, 29, 16, 36]\n        ],\n        [\n          [134, 183, 89, 137, 98, 101, 106, 165, 148],\n          [72, 187, 100, 130, 157, 111, 32, 75, 80],\n          [66, 102, 167, 99, 74, 62, 40, 234, 128],\n          [41, 53, 9, 178, 241, 141, 26, 8, 107],\n          [74, 43, 26, 146, 73, 166, 49, 23, 157],\n          [65, 38, 105, 160, 51, 52, 31, 115, 128],\n          [104, 79, 12, 27, 217, 255, 87, 17, 7],\n          [87, 68, 71, 44, 114, 51, 15, 186, 23],\n          [47, 41, 14, 110, 182, 183, 21, 17, 194],\n          [66, 45, 25, 102, 197, 189, 23, 18, 22]\n        ],\n        [\n          [88, 88, 147, 150, 42, 46, 45, 196, 205],\n          [43, 97, 183, 117, 85, 38, 35, 179, 61],\n          [39, 53, 200, 87, 26, 21, 43, 232, 171],\n          [56, 34, 51, 104, 114, 102, 29, 93, 77],\n          [39, 28, 85, 171, 58, 165, 90, 98, 64],\n          [34, 22, 116, 206, 23, 34, 43, 166, 73],\n          [107, 54, 32, 26, 51, 1, 81, 43, 31],\n          [68, 25, 106, 22, 64, 171, 36, 225, 114],\n          [34, 19, 21, 102, 132, 188, 16, 76, 124],\n          [62, 18, 78, 95, 85, 57, 50, 48, 51]\n        ],\n        [\n          [193, 101, 35, 159, 215, 111, 89, 46, 111],\n          [60, 148, 31, 172, 219, 228, 21, 18, 111],\n          [112, 113, 77, 85, 179, 255, 38, 120, 114],\n          [40, 42, 1, 196, 245, 209, 10, 25, 109],\n          [88, 43, 29, 140, 166, 213, 37, 43, 154],\n          [61, 63, 30, 155, 67, 45, 68, 1, 209],\n          [100, 80, 8, 43, 154, 1, 51, 26, 71],\n          [142, 78, 78, 16, 255, 128, 34, 197, 171],\n          [41, 40, 5, 102, 211, 183, 4, 1, 221],\n          [51, 50, 17, 168, 209, 192, 23, 25, 82]\n        ],\n        [\n          [138, 31, 36, 171, 27, 166, 38, 44, 229],\n          [67, 87, 58, 169, 82, 115, 26, 59, 179],\n          [63, 59, 90, 180, 59, 166, 93, 73, 154],\n          [40, 40, 21, 116, 143, 209, 34, 39, 175],\n          [47, 15, 16, 183, 34, 223, 49, 45, 183],\n          [46, 17, 33, 183, 6, 98, 15, 32, 183],\n          [57, 46, 22, 24, 128, 1, 54, 17, 37],\n          [65, 32, 73, 115, 28, 128, 23, 128, 205],\n          [40, 3, 9, 115, 51, 192, 18, 6, 223],\n          [87, 37, 9, 115, 59, 77, 64, 21, 47]\n        ],\n        [\n          [104, 55, 44, 218, 9, 54, 53, 130, 226],\n          [64, 90, 70, 205, 40, 41, 23, 26, 57],\n          [54, 57, 112, 184, 5, 41, 38, 166, 213],\n          [30, 34, 26, 133, 152, 116, 10, 32, 134],\n          [39, 19, 53, 221, 26, 114, 32, 73, 255],\n          [31, 9, 65, 234, 2, 15, 1, 118, 73],\n          [75, 32, 12, 51, 192, 255, 160, 43, 51],\n          [88, 31, 35, 67, 102, 85, 55, 186, 85],\n          [56, 21, 23, 111, 59, 205, 45, 37, 192],\n          [55, 38, 70, 124, 73, 102, 1, 34, 98]\n        ],\n        [\n          [125, 98, 42, 88, 104, 85, 117, 175, 82],\n          [95, 84, 53, 89, 128, 100, 113, 101, 45],\n          [75, 79, 123, 47, 51, 128, 81, 171, 1],\n          [57, 17, 5, 71, 102, 57, 53, 41, 49],\n          [38, 33, 13, 121, 57, 73, 26, 1, 85],\n          [41, 10, 67, 138, 77, 110, 90, 47, 114],\n          [115, 21, 2, 10, 102, 255, 166, 23, 6],\n          [101, 29, 16, 10, 85, 128, 101, 196, 26],\n          [57, 18, 10, 102, 102, 213, 34, 20, 43],\n          [117, 20, 15, 36, 163, 128, 68, 1, 26]\n        ],\n        [\n          [102, 61, 71, 37, 34, 53, 31, 243, 192],\n          [69, 60, 71, 38, 73, 119, 28, 222, 37],\n          [68, 45, 128, 34, 1, 47, 11, 245, 171],\n          [62, 17, 19, 70, 146, 85, 55, 62, 70],\n          [37, 43, 37, 154, 100, 163, 85, 160, 1],\n          [63, 9, 92, 136, 28, 64, 32, 201, 85],\n          [75, 15, 9, 9, 64, 255, 184, 119, 16],\n          [86, 6, 28, 5, 64, 255, 25, 248, 1],\n          [56, 8, 17, 132, 137, 255, 55, 116, 128],\n          [58, 15, 20, 82, 135, 57, 26, 121, 40]\n        ],\n        [\n          [164, 50, 31, 137, 154, 133, 25, 35, 218],\n          [51, 103, 44, 131, 131, 123, 31, 6, 158],\n          [86, 40, 64, 135, 148, 224, 45, 183, 128],\n          [22, 26, 17, 131, 240, 154, 14, 1, 209],\n          [45, 16, 21, 91, 64, 222, 7, 1, 197],\n          [56, 21, 39, 155, 60, 138, 23, 102, 213],\n          [83, 12, 13, 54, 192, 255, 68, 47, 28],\n          [85, 26, 85, 85, 128, 128, 32, 146, 171],\n          [18, 11, 7, 63, 144, 171, 4, 4, 246],\n          [35, 27, 10, 146, 174, 171, 12, 26, 128]\n        ],\n        [\n          [190, 80, 35, 99, 180, 80, 126, 54, 45],\n          [85, 126, 47, 87, 176, 51, 41, 20, 32],\n          [101, 75, 128, 139, 118, 146, 116, 128, 85],\n          [56, 41, 15, 176, 236, 85, 37, 9, 62],\n          [71, 30, 17, 119, 118, 255, 17, 18, 138],\n          [101, 38, 60, 138, 55, 70, 43, 26, 142],\n          [146, 36, 19, 30, 171, 255, 97, 27, 20],\n          [138, 45, 61, 62, 219, 1, 81, 188, 64],\n          [32, 41, 20, 117, 151, 142, 20, 21, 163],\n          [112, 19, 12, 61, 195, 128, 48, 4, 24]\n        ]\n      ],\n      Ee = [\n        [\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n            [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n            [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],\n            [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ],\n        [\n          [\n            [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],\n            [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]\n          ],\n          [\n            [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ],\n        [\n          [\n            [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],\n            [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],\n            [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ],\n        [\n          [\n            [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],\n            [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n            [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ]\n      ],\n      Ge = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],\n      Nc,\n      Y = [],\n      W = [],\n      ka = [],\n      Za,\n      fd,\n      Nb,\n      pa,\n      Ob,\n      Xc,\n      Tc,\n      Yc,\n      Uc,\n      Zc,\n      Vc,\n      $c,\n      Wc,\n      Rc,\n      Pc,\n      Sc,\n      Qc,\n      re = 1,\n      Cc = 2,\n      ia = [],\n      za,\n      vc,\n      fc,\n      Fc,\n      P = [];\n    va(\"UpsampleRgbLinePair\", Ga, 3);\n    va(\"UpsampleBgrLinePair\", Tb, 3);\n    va(\"UpsampleRgbaLinePair\", wd, 4);\n    va(\"UpsampleBgraLinePair\", vd, 4);\n    va(\"UpsampleArgbLinePair\", ud, 4);\n    va(\"UpsampleRgba4444LinePair\", td, 2);\n    va(\"UpsampleRgb565LinePair\", sd, 2);\n    var Mf = self.UpsampleRgbLinePair,\n      Nf = self.UpsampleBgrLinePair,\n      nd = self.UpsampleRgbaLinePair,\n      od = self.UpsampleBgraLinePair,\n      pd = self.UpsampleArgbLinePair,\n      qd = self.UpsampleRgba4444LinePair,\n      Of = self.UpsampleRgb565LinePair,\n      Wa = 16,\n      Ba = 1 << (Wa - 1),\n      ta = -227,\n      Eb = 482,\n      rd = 6,\n      Pf = (256 << rd) - 1,\n      jc = 0,\n      Yd = V(256),\n      ae = V(256),\n      $d = V(256),\n      Zd = V(256),\n      be = V(Eb - ta),\n      ce = V(Eb - ta);\n    la(\"YuvToRgbRow\", Ga, 3);\n    la(\"YuvToBgrRow\", Tb, 3);\n    la(\"YuvToRgbaRow\", wd, 4);\n    la(\"YuvToBgraRow\", vd, 4);\n    la(\"YuvToArgbRow\", ud, 4);\n    la(\"YuvToRgba4444Row\", td, 2);\n    la(\"YuvToRgb565Row\", sd, 2);\n    var zd = [\n        0,\n        4,\n        8,\n        12,\n        128,\n        132,\n        136,\n        140,\n        256,\n        260,\n        264,\n        268,\n        384,\n        388,\n        392,\n        396\n      ],\n      Ya = [0, 2, 8],\n      Qf = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],\n      Ne = 1;\n    this.WebPDecodeRGBA = function(a, b, c, d, e) {\n      var f = Ua;\n      var g = new Cf(),\n        h = new Cb();\n      g.ba = h;\n      h.S = f;\n      h.width = [h.width];\n      h.height = [h.height];\n      var k = h.width;\n      var l = h.height,\n        m = new Td();\n      if (null == m || null == a) var n = 2;\n      else\n        x(null != m),\n          (n = Ad(a, b, c, m.width, m.height, m.Pd, m.Qd, m.format, null));\n      0 != n\n        ? (k = 0)\n        : (null != k && (k[0] = m.width[0]),\n          null != l && (l[0] = m.height[0]),\n          (k = 1));\n      if (k) {\n        h.width = h.width[0];\n        h.height = h.height[0];\n        null != d && (d[0] = h.width);\n        null != e && (e[0] = h.height);\n        b: {\n          d = new Oa();\n          e = new md();\n          e.data = a;\n          e.w = b;\n          e.ha = c;\n          e.kd = 1;\n          b = [0];\n          x(null != e);\n          a = Ad(e.data, e.w, e.ha, null, null, null, b, null, e);\n          (0 == a || 7 == a) && b[0] && (a = 4);\n          b = a;\n          if (0 == b) {\n            x(null != g);\n            d.data = e.data;\n            d.w = e.w + e.offset;\n            d.ha = e.ha - e.offset;\n            d.put = kc;\n            d.ac = gc;\n            d.bc = lc;\n            d.ma = g;\n            if (e.xa) {\n              a = Bc();\n              if (null == a) {\n                g = 1;\n                break b;\n              }\n              if (te(a, d)) {\n                b = Cd(d.width, d.height, g.Oa, g.ba);\n                if ((d = 0 == b)) {\n                  c: {\n                    d = a;\n                    d: for (;;) {\n                      if (null == d) {\n                        d = 0;\n                        break c;\n                      }\n                      x(null != d.s.yc);\n                      x(null != d.s.Ya);\n                      x(0 < d.s.Wb);\n                      c = d.l;\n                      x(null != c);\n                      e = c.ma;\n                      x(null != e);\n                      if (0 != d.xb) {\n                        d.ca = e.ba;\n                        d.tb = e.tb;\n                        x(null != d.ca);\n                        if (!hc(e.Oa, c, Va)) {\n                          d.a = 2;\n                          break d;\n                        }\n                        if (!Ec(d, c.width)) break d;\n                        if (c.da) break d;\n                        (c.da || hb(d.ca.S)) && Aa();\n                        11 > d.ca.S ||\n                          (alert(\"todo:WebPInitConvertARGBToYUV\"),\n                          null != d.ca.f.kb.F && Aa());\n                        if (\n                          d.Pb &&\n                          0 < d.s.ua &&\n                          null == d.s.vb.X &&\n                          !Zb(d.s.vb, d.s.Wa.Xa)\n                        ) {\n                          d.a = 1;\n                          break d;\n                        }\n                        d.xb = 0;\n                      }\n                      if (!Jb(d, d.V, d.Ba, d.c, d.i, c.o, ge)) break d;\n                      e.Dc = d.Ma;\n                      d = 1;\n                      break c;\n                    }\n                    x(0 != d.a);\n                    d = 0;\n                  }\n                  d = !d;\n                }\n                d && (b = a.a);\n              } else b = a.a;\n            } else {\n              a = new Ce();\n              if (null == a) {\n                g = 1;\n                break b;\n              }\n              a.Fa = e.na;\n              a.P = e.P;\n              a.qc = e.Sa;\n              if (Kc(a, d)) {\n                if (((b = Cd(d.width, d.height, g.Oa, g.ba)), 0 == b)) {\n                  a.Aa = 0;\n                  c = g.Oa;\n                  e = a;\n                  x(null != e);\n                  if (null != c) {\n                    k = c.Md;\n                    k = 0 > k ? 0 : 100 < k ? 255 : (255 * k) / 100;\n                    if (0 < k) {\n                      for (l = m = 0; 4 > l; ++l)\n                        (n = e.pb[l]),\n                          12 > n.lc &&\n                            (n.ia = (k * Qf[0 > n.lc ? 0 : n.lc]) >> 3),\n                          (m |= n.ia);\n                      m && (alert(\"todo:VP8InitRandom\"), (e.ia = 1));\n                    }\n                    e.Ga = c.Id;\n                    100 < e.Ga ? (e.Ga = 100) : 0 > e.Ga && (e.Ga = 0);\n                  }\n                  Me(a, d) || (b = a.a);\n                }\n              } else b = a.a;\n            }\n            0 == b && null != g.Oa && g.Oa.fd && (b = Bd(g.ba));\n          }\n          g = b;\n        }\n        f = 0 != g ? null : 11 > f ? h.f.RGBA.eb : h.f.kb.y;\n      } else f = null;\n      return f;\n    };\n    var Dd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];\n  };\n  new _WebPDecoder();\n\n  /** @license\n   * Copyright (c) 2017 Dominik Homberger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nhttps://webpjs.appspot.com\nWebPRiffParser dominikhlbg@gmail.com\n*/\n\n  function memcmp(data, data_off, str, size) {\n    for (var i = 0; i < size; i++)\n      if (data[data_off + i] != str.charCodeAt(i)) return true;\n    return false;\n  }\n\n  function GetTag(data, data_off) {\n    var str = \"\";\n    for (var i = 0; i < 4; i++) str += String.fromCharCode(data[data_off++]);\n    return str;\n  }\n\n  function GetLE16(data, data_off) {\n    return (data[data_off + 0] << 0) | (data[data_off + 1] << 8);\n  }\n\n  function GetLE24(data, data_off) {\n    return (\n      ((data[data_off + 0] << 0) |\n        (data[data_off + 1] << 8) |\n        (data[data_off + 2] << 16)) >>>\n      0\n    );\n  }\n\n  function GetLE32(data, data_off) {\n    return (\n      ((data[data_off + 0] << 0) |\n        (data[data_off + 1] << 8) |\n        (data[data_off + 2] << 16) |\n        (data[data_off + 3] << 24)) >>>\n      0\n    );\n  }\n\n  function WebPRiffParser(src, src_off) {\n    var imagearray = {};\n    var i = 0;\n    var alpha_chunk = false;\n    var alpha_size = 0;\n    var alpha_offset = 0;\n    imagearray[\"frames\"] = [];\n    if (memcmp(src, src_off, \"RIFF\", 4)) return;\n    src_off += 4;\n    var riff_size = GetLE32(src, src_off) + 8;\n    src_off += 8;\n\n    while (src_off < src.length) {\n      var fourcc = GetTag(src, src_off);\n      src_off += 4;\n\n      var payload_size = GetLE32(src, src_off);\n      src_off += 4;\n      var payload_size_padded = payload_size + (payload_size & 1);\n\n      switch (fourcc) {\n        case \"VP8 \":\n        case \"VP8L\":\n          if (typeof imagearray[\"frames\"][i] === \"undefined\")\n            imagearray[\"frames\"][i] = {};\n          var obj = imagearray[\"frames\"][i];\n          var height = [0];\n          var width = [0];\n          obj[\"src_off\"] = alpha_chunk ? alpha_offset : src_off - 8;\n          obj[\"src_size\"] = alpha_size + payload_size + 8;\n          //var rgba = webpdecoder.WebPDecodeRGBA(src,(alpha_chunk?alpha_offset:src_off-8),alpha_size+payload_size+8,width,height);\n          //imagearray[i]={'rgba':rgba,'width':width[0],'height':height[0]};\n          i++;\n          if (alpha_chunk) {\n            alpha_chunk = false;\n            alpha_size = 0;\n            alpha_offset = 0;\n          }\n          break;\n        case \"VP8X\":\n          var obj = (imagearray[\"header\"] = {});\n          var feature_flags = (obj[\"feature_flags\"] = src[src_off]);\n          var src_off_ = src_off + 4;\n          var canvas_width = (obj[\"canvas_width\"] = 1 + GetLE24(src, src_off_));\n          src_off_ += 3;\n          var canvas_height = (obj[\"canvas_height\"] =\n            1 + GetLE24(src, src_off_));\n          src_off_ += 3;\n          break;\n        case \"ALPH\":\n          alpha_chunk = true;\n          alpha_size = payload_size_padded + 8;\n          alpha_offset = src_off - 8;\n          break;\n\n        case \"ANIM\":\n          var obj = imagearray[\"header\"];\n          var bgcolor = (obj[\"bgcolor\"] = GetLE32(src, src_off));\n          src_off_ = src_off + 4;\n\n          var loop_count = (obj[\"loop_count\"] = GetLE16(src, src_off_));\n          src_off_ += 2;\n          break;\n        case \"ANMF\":\n          var offset_x = 0,\n            offset_y = 0,\n            width = 0,\n            height = 0,\n            duration = 0,\n            blend = 0,\n            dispose = 0,\n            temp = 0;\n          var obj = (imagearray[\"frames\"][i] = {});\n          obj[\"offset_x\"] = offset_x = 2 * GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"offset_y\"] = offset_y = 2 * GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"width\"] = width = 1 + GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"height\"] = height = 1 + GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"duration\"] = duration = GetLE24(src, src_off);\n          src_off += 3;\n          temp = src[src_off++];\n          obj[\"dispose\"] = dispose = temp & 1;\n          obj[\"blend\"] = blend = (temp >> 1) & 1;\n          break;\n        default:\n      }\n      if (fourcc != \"ANMF\") src_off += payload_size_padded;\n    }\n    return imagearray;\n  }\n\n  var height = [0];\n  var width = [0];\n  var pixels = [];\n  var webpdecoder = new _WebPDecoder();\n\n  var response = imageData;\n  var imagearray = WebPRiffParser(response, 0);\n  imagearray[\"response\"] = response;\n  imagearray[\"rgbaoutput\"] = true;\n  imagearray[\"dataurl\"] = false;\n\n  var header = imagearray[\"header\"] ? imagearray[\"header\"] : null;\n  var frames = imagearray[\"frames\"] ? imagearray[\"frames\"] : null;\n\n  if (header) {\n    header[\"loop_counter\"] = header[\"loop_count\"];\n    height = [header[\"canvas_height\"]];\n    width = [header[\"canvas_width\"]];\n\n    var blend = false;\n    for (var f = 0; f < frames.length; f++)\n      if (frames[f][\"blend\"] == 0) {\n        blend = true;\n        break;\n      }\n  }\n\n  var frame = frames[0];\n  var rgba = webpdecoder.WebPDecodeRGBA(\n    response,\n    frame[\"src_off\"],\n    frame[\"src_size\"],\n    width,\n    height\n  );\n  frame[\"rgba\"] = rgba;\n  frame[\"imgwidth\"] = width[0];\n  frame[\"imgheight\"] = height[0];\n\n  for (var i = 0; i < width[0] * height[0] * 4; i++) {\n    pixels[i] = rgba[i];\n  }\n\n  this.width = width;\n  this.height = height;\n  this.data = pixels;\n  return this;\n}\n\nWebPDecoder.prototype.getData = function() {\n  return this.data;\n};\n\nexport { WebPDecoder };\n", "/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\nimport { PNG } from \"../libs/png.js\";\n\n/**\n * jsPDF PNG PlugIn\n * @name png_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /*\n   * @see http://www.w3.org/TR/PNG-Chunks.html\n   *\n   Color    Allowed      Interpretation\n   Type     Bit Depths\n\n     0       1,2,4,8,16  Each pixel is a grayscale sample.\n\n     2       8,16        Each pixel is an R,G,B triple.\n\n     3       1,2,4,8     Each pixel is a palette index;\n                         a PLTE chunk must appear.\n\n     4       8,16        Each pixel is a grayscale sample,\n                         followed by an alpha sample.\n\n     6       8,16        Each pixel is an R,G,B triple,\n                         followed by an alpha sample.\n  */\n\n  /*\n   * PNG filter method types\n   *\n   * @see http://www.w3.org/TR/PNG-Filters.html\n   * @see http://www.libpng.org/pub/png/book/chapter09.html\n   *\n   * This is what the value 'Predictor' in decode params relates to\n   *\n   * 15 is \"optimal prediction\", which means the prediction algorithm can change from line to line.\n   * In that case, you actually have to read the first byte off each line for the prediction algorthim (which should be 0-4, corresponding to PDF 10-14) and select the appropriate unprediction algorithm based on that byte.\n   *\n     0       None\n     1       Sub\n     2       Up\n     3       Average\n     4       Paeth\n   */\n\n  var canCompress = function(value) {\n    return value !== jsPDFAPI.image_compression.NONE && hasCompressionJS();\n  };\n\n  var hasCompressionJS = function() {\n    return typeof zlibSync === \"function\";\n  };\n  var compressBytes = function(bytes, lineLength, colorsPerPixel, compression) {\n    var level = 4;\n    var filter_method = filterUp;\n\n    switch (compression) {\n      case jsPDFAPI.image_compression.FAST:\n        level = 1;\n        filter_method = filterSub;\n        break;\n\n      case jsPDFAPI.image_compression.MEDIUM:\n        level = 6;\n        filter_method = filterAverage;\n        break;\n\n      case jsPDFAPI.image_compression.SLOW:\n        level = 9;\n        filter_method = filterPaeth;\n        break;\n    }\n\n    bytes = applyPngFilterMethod(\n      bytes,\n      lineLength,\n      colorsPerPixel,\n      filter_method\n    );\n    var dat = zlibSync(bytes, { level: level });\n    return jsPDFAPI.__addimage__.arrayBufferToBinaryString(dat);\n  };\n\n  var applyPngFilterMethod = function(\n    bytes,\n    lineLength,\n    colorsPerPixel,\n    filter_method\n  ) {\n    var lines = bytes.length / lineLength,\n      result = new Uint8Array(bytes.length + lines),\n      filter_methods = getFilterMethods(),\n      line,\n      prevLine,\n      offset;\n\n    for (var i = 0; i < lines; i += 1) {\n      offset = i * lineLength;\n      line = bytes.subarray(offset, offset + lineLength);\n\n      if (filter_method) {\n        result.set(filter_method(line, colorsPerPixel, prevLine), offset + i);\n      } else {\n        var len = filter_methods.length,\n          results = [];\n\n        for (var j; j < len; j += 1) {\n          results[j] = filter_methods[j](line, colorsPerPixel, prevLine);\n        }\n\n        var ind = getIndexOfSmallestSum(results.concat());\n\n        result.set(results[ind], offset + i);\n      }\n\n      prevLine = line;\n    }\n\n    return result;\n  };\n\n  var filterNone = function(line) {\n    /*var result = new Uint8Array(line.length + 1);\n    result[0] = 0;\n    result.set(line, 1);*/\n\n    var result = Array.apply([], line);\n    result.unshift(0);\n\n    return result;\n  };\n\n  var filterSub = function(line, colorsPerPixel) {\n    var result = [],\n      len = line.length,\n      left;\n\n    result[0] = 1;\n\n    for (var i = 0; i < len; i += 1) {\n      left = line[i - colorsPerPixel] || 0;\n      result[i + 1] = (line[i] - left + 0x0100) & 0xff;\n    }\n\n    return result;\n  };\n\n  var filterUp = function(line, colorsPerPixel, prevLine) {\n    var result = [],\n      len = line.length,\n      up;\n\n    result[0] = 2;\n\n    for (var i = 0; i < len; i += 1) {\n      up = (prevLine && prevLine[i]) || 0;\n      result[i + 1] = (line[i] - up + 0x0100) & 0xff;\n    }\n\n    return result;\n  };\n\n  var filterAverage = function(line, colorsPerPixel, prevLine) {\n    var result = [],\n      len = line.length,\n      left,\n      up;\n\n    result[0] = 3;\n\n    for (var i = 0; i < len; i += 1) {\n      left = line[i - colorsPerPixel] || 0;\n      up = (prevLine && prevLine[i]) || 0;\n      result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff;\n    }\n\n    return result;\n  };\n\n  var filterPaeth = function(line, colorsPerPixel, prevLine) {\n    var result = [],\n      len = line.length,\n      left,\n      up,\n      upLeft,\n      paeth;\n\n    result[0] = 4;\n\n    for (var i = 0; i < len; i += 1) {\n      left = line[i - colorsPerPixel] || 0;\n      up = (prevLine && prevLine[i]) || 0;\n      upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0;\n      paeth = paethPredictor(left, up, upLeft);\n      result[i + 1] = (line[i] - paeth + 0x0100) & 0xff;\n    }\n\n    return result;\n  };\n\n  var paethPredictor = function(left, up, upLeft) {\n    if (left === up && up === upLeft) {\n      return left;\n    }\n    var pLeft = Math.abs(up - upLeft),\n      pUp = Math.abs(left - upLeft),\n      pUpLeft = Math.abs(left + up - upLeft - upLeft);\n    return pLeft <= pUp && pLeft <= pUpLeft\n      ? left\n      : pUp <= pUpLeft\n      ? up\n      : upLeft;\n  };\n\n  var getFilterMethods = function() {\n    return [filterNone, filterSub, filterUp, filterAverage, filterPaeth];\n  };\n\n  var getIndexOfSmallestSum = function(arrays) {\n    var sum = arrays.map(function(value) {\n      return value.reduce(function(pv, cv) {\n        return pv + Math.abs(cv);\n      }, 0);\n    });\n    return sum.indexOf(Math.min.apply(null, sum));\n  };\n\n  var getPredictorFromCompression = function(compression) {\n    var predictor;\n    switch (compression) {\n      case jsPDFAPI.image_compression.FAST:\n        predictor = 11;\n        break;\n\n      case jsPDFAPI.image_compression.MEDIUM:\n        predictor = 13;\n        break;\n\n      case jsPDFAPI.image_compression.SLOW:\n        predictor = 14;\n        break;\n\n      default:\n        predictor = 12;\n        break;\n    }\n    return predictor;\n  };\n\n  /**\n   * @name processPNG\n   * @function\n   * @ignore\n   */\n  jsPDFAPI.processPNG = function(imageData, index, alias, compression) {\n    \"use strict\";\n\n    var colorSpace,\n      filter = this.decode.FLATE_DECODE,\n      bitsPerComponent,\n      image,\n      decodeParameters = \"\",\n      trns,\n      colors,\n      pal,\n      smask,\n      pixels,\n      len,\n      alphaData,\n      imgData,\n      hasColors,\n      pixel,\n      i,\n      n;\n\n    if (this.__addimage__.isArrayBuffer(imageData))\n      imageData = new Uint8Array(imageData);\n\n    if (this.__addimage__.isArrayBufferView(imageData)) {\n      image = new PNG(imageData);\n      imageData = image.imgData;\n      bitsPerComponent = image.bits;\n      colorSpace = image.colorSpace;\n      colors = image.colors;\n\n      /*\n       * colorType 6 - Each pixel is an R,G,B triple, followed by an alpha sample.\n       *\n       * colorType 4 - Each pixel is a grayscale sample, followed by an alpha sample.\n       *\n       * Extract alpha to create two separate images, using the alpha as a sMask\n       */\n      if ([4, 6].indexOf(image.colorType) !== -1) {\n        /*\n         * processes 8 bit RGBA and grayscale + alpha images\n         */\n        if (image.bits === 8) {\n          pixels =\n            image.pixelBitlength == 32\n              ? new Uint32Array(image.decodePixels().buffer)\n              : image.pixelBitlength == 16\n              ? new Uint16Array(image.decodePixels().buffer)\n              : new Uint8Array(image.decodePixels().buffer);\n          len = pixels.length;\n          imgData = new Uint8Array(len * image.colors);\n          alphaData = new Uint8Array(len);\n          var pDiff = image.pixelBitlength - image.bits;\n          i = 0;\n          n = 0;\n          var pbl;\n\n          for (; i < len; i++) {\n            pixel = pixels[i];\n            pbl = 0;\n\n            while (pbl < pDiff) {\n              imgData[n++] = (pixel >>> pbl) & 0xff;\n              pbl = pbl + image.bits;\n            }\n\n            alphaData[i] = (pixel >>> pbl) & 0xff;\n          }\n        }\n\n        /*\n         * processes 16 bit RGBA and grayscale + alpha images\n         */\n        if (image.bits === 16) {\n          pixels = new Uint32Array(image.decodePixels().buffer);\n          len = pixels.length;\n          imgData = new Uint8Array(\n            len * (32 / image.pixelBitlength) * image.colors\n          );\n          alphaData = new Uint8Array(len * (32 / image.pixelBitlength));\n          hasColors = image.colors > 1;\n          i = 0;\n          n = 0;\n          var a = 0;\n\n          while (i < len) {\n            pixel = pixels[i++];\n\n            imgData[n++] = (pixel >>> 0) & 0xff;\n\n            if (hasColors) {\n              imgData[n++] = (pixel >>> 16) & 0xff;\n\n              pixel = pixels[i++];\n              imgData[n++] = (pixel >>> 0) & 0xff;\n            }\n\n            alphaData[a++] = (pixel >>> 16) & 0xff;\n          }\n          bitsPerComponent = 8;\n        }\n\n        if (canCompress(compression)) {\n          imageData = compressBytes(\n            imgData,\n            image.width * image.colors,\n            image.colors,\n            compression\n          );\n          smask = compressBytes(alphaData, image.width, 1, compression);\n        } else {\n          imageData = imgData;\n          smask = alphaData;\n          filter = undefined;\n        }\n      }\n\n      /*\n       * Indexed png. Each pixel is a palette index.\n       */\n      if (image.colorType === 3) {\n        colorSpace = this.color_spaces.INDEXED;\n        pal = image.palette;\n\n        if (image.transparency.indexed) {\n          var trans = image.transparency.indexed;\n          var total = 0;\n          i = 0;\n          len = trans.length;\n\n          for (; i < len; ++i) {\n            total += trans[i];\n          }\n\n          total = total / 255;\n\n          /*\n           * a single color is specified as 100% transparent (0),\n           * so we set trns to use a /Mask with that index\n           */\n          if (total === len - 1 && trans.indexOf(0) !== -1) {\n            trns = [trans.indexOf(0)];\n\n            /*\n             * there's more than one colour within the palette that specifies\n             * a transparency value less than 255, so we unroll the pixels to create an image sMask\n             */\n          } else if (total !== len) {\n            pixels = image.decodePixels();\n            alphaData = new Uint8Array(pixels.length);\n            i = 0;\n            len = pixels.length;\n\n            for (; i < len; i++) {\n              alphaData[i] = trans[pixels[i]];\n            }\n\n            smask = compressBytes(alphaData, image.width, 1);\n          }\n        }\n      }\n\n      var predictor = getPredictorFromCompression(compression);\n\n      if (filter === this.decode.FLATE_DECODE) {\n        decodeParameters = \"/Predictor \" + predictor + \" \";\n      }\n      decodeParameters +=\n        \"/Colors \" +\n        colors +\n        \" /BitsPerComponent \" +\n        bitsPerComponent +\n        \" /Columns \" +\n        image.width;\n\n      if (\n        this.__addimage__.isArrayBuffer(imageData) ||\n        this.__addimage__.isArrayBufferView(imageData)\n      ) {\n        imageData = this.__addimage__.arrayBufferToBinaryString(imageData);\n      }\n\n      if (\n        (smask && this.__addimage__.isArrayBuffer(smask)) ||\n        this.__addimage__.isArrayBufferView(smask)\n      ) {\n        smask = this.__addimage__.arrayBufferToBinaryString(smask);\n      }\n\n      return {\n        alias: alias,\n        data: imageData,\n        index: index,\n        filter: filter,\n        decodeParameters: decodeParameters,\n        transparency: trns,\n        palette: pal,\n        sMask: smask,\n        predictor: predictor,\n        width: image.width,\n        height: image.height,\n        bitsPerComponent: bitsPerComponent,\n        colorSpace: colorSpace\n      };\n    }\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { GifReader } from \"../libs/omggif.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\n\n/**\n * jsPDF Gif Support PlugIn\n *\n * @name gif_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  jsPDFAPI.processGIF89A = function(imageData, index, alias, compression) {\n    var reader = new GifReader(imageData);\n    var width = reader.width,\n      height = reader.height;\n    var qu = 100;\n    var pixels = [];\n\n    reader.decodeAndBlitFrameRGBA(0, pixels);\n    var rawImageData = {\n      data: pixels,\n      width: width,\n      height: height\n    };\n\n    var encoder = new JPEGEncoder(qu);\n    var data = encoder.encode(rawImageData, qu);\n    return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n  };\n\n  jsPDFAPI.processGIF87A = jsPDFAPI.processGIF89A;\n})(jsPDF.API);\n", "import { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { BmpDecoder } from \"../libs/BMPDecoder.js\";\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF bmp Support PlugIn\n * @name bmp_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  jsPDFAPI.processBMP = function(imageData, index, alias, compression) {\n    var reader = new BmpDecoder(imageData, false);\n    var width = reader.width,\n      height = reader.height;\n    var qu = 100;\n    var pixels = reader.getData();\n\n    var rawImageData = {\n      data: pixels,\n      width: width,\n      height: height\n    };\n\n    var encoder = new JPEGEncoder(qu);\n    var data = encoder.encode(rawImageData, qu);\n    return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { WebPDecoder } from \"../libs/WebPDecoder.js\";\n\n/**\n * jsPDF webp Support PlugIn\n *\n * @name webp_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  jsPDFAPI.processWEBP = function(imageData, index, alias, compression) {\n    var reader = new WebPDecoder(imageData, false);\n    var width = reader.width,\n      height = reader.height;\n    var qu = 100;\n    var pixels = reader.getData();\n\n    var rawImageData = {\n      data: pixels,\n      width: width,\n      height: height\n    };\n\n    var encoder = new JPEGEncoder(qu);\n    var data = encoder.encode(rawImageData, qu);\n    return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n  };\n})(jsPDF.API);\n", "/**\n * @license\n *\n * Copyright (c) 2021 Antti Palola, https://github.com/Pantura\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF RGBA array PlugIn\n * @name rgba_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * @name processRGBA\n   * @function\n   *\n   * Process RGBA Array. This is a one-dimension array with pixel data [red, green, blue, alpha, red, green, ...].\n   * RGBA array data can be obtained from DOM canvas getImageData.\n   * @ignore\n   */\n  jsPDFAPI.processRGBA = function(imageData, index, alias) {\n    \"use strict\";\n\n    var imagePixels = imageData.data;\n    var length = imagePixels.length;\n    // jsPDF takes alpha data separately so extract that.\n    var rgbOut = new Uint8Array((length / 4) * 3);\n    var alphaOut = new Uint8Array(length / 4);\n    var outIndex = 0;\n    var alphaIndex = 0;\n\n    for (var i = 0; i < length; i += 4) {\n      var r = imagePixels[i];\n      var g = imagePixels[i + 1];\n      var b = imagePixels[i + 2];\n      var alpha = imagePixels[i + 3];\n      rgbOut[outIndex++] = r;\n      rgbOut[outIndex++] = g;\n      rgbOut[outIndex++] = b;\n      alphaOut[alphaIndex++] = alpha;\n    }\n\n    var rgbData = this.__addimage__.arrayBufferToBinaryString(rgbOut);\n    var alphaData = this.__addimage__.arrayBufferToBinaryString(alphaOut);\n\n    return {\n      alpha: alphaData,\n      data: rgbData,\n      index: index,\n      alias: alias,\n      colorSpace: \"DeviceRGB\",\n      bitsPerComponent: 8,\n      width: imageData.width,\n      height: imageData.height\n    };\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF setLanguage Plugin\n *\n * @name setLanguage\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * Add Language Tag to the generated PDF\n   *\n   * @name setLanguage\n   * @function\n   * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').\n   * @returns {jsPDF}\n   * @example\n   * var doc = new jsPDF()\n   * doc.text(10, 10, 'This is a test')\n   * doc.setLanguage(\"en-US\")\n   * doc.save('english.pdf')\n   */\n  jsPDFAPI.setLanguage = function(langCode) {\n    \"use strict\";\n\n    var langCodes = {\n      af: \"Afrikaans\",\n      sq: \"Albanian\",\n      ar: \"Arabic (Standard)\",\n      \"ar-DZ\": \"Arabic (Algeria)\",\n      \"ar-BH\": \"Arabic (Bahrain)\",\n      \"ar-EG\": \"Arabic (Egypt)\",\n      \"ar-IQ\": \"Arabic (Iraq)\",\n      \"ar-JO\": \"Arabic (Jordan)\",\n      \"ar-KW\": \"Arabic (Kuwait)\",\n      \"ar-LB\": \"Arabic (Lebanon)\",\n      \"ar-LY\": \"Arabic (Libya)\",\n      \"ar-MA\": \"Arabic (Morocco)\",\n      \"ar-OM\": \"Arabic (Oman)\",\n      \"ar-QA\": \"Arabic (Qatar)\",\n      \"ar-SA\": \"Arabic (Saudi Arabia)\",\n      \"ar-SY\": \"Arabic (Syria)\",\n      \"ar-TN\": \"Arabic (Tunisia)\",\n      \"ar-AE\": \"Arabic (U.A.E.)\",\n      \"ar-YE\": \"Arabic (Yemen)\",\n      an: \"Aragonese\",\n      hy: \"Armenian\",\n      as: \"Assamese\",\n      ast: \"Asturian\",\n      az: \"Azerbaijani\",\n      eu: \"Basque\",\n      be: \"Belarusian\",\n      bn: \"Bengali\",\n      bs: \"Bosnian\",\n      br: \"Breton\",\n      bg: \"Bulgarian\",\n      my: \"Burmese\",\n      ca: \"Catalan\",\n      ch: \"Chamorro\",\n      ce: \"Chechen\",\n      zh: \"Chinese\",\n      \"zh-HK\": \"Chinese (Hong Kong)\",\n      \"zh-CN\": \"Chinese (PRC)\",\n      \"zh-SG\": \"Chinese (Singapore)\",\n      \"zh-TW\": \"Chinese (Taiwan)\",\n      cv: \"Chuvash\",\n      co: \"Corsican\",\n      cr: \"Cree\",\n      hr: \"Croatian\",\n      cs: \"Czech\",\n      da: \"Danish\",\n      nl: \"Dutch (Standard)\",\n      \"nl-BE\": \"Dutch (Belgian)\",\n      en: \"English\",\n      \"en-AU\": \"English (Australia)\",\n      \"en-BZ\": \"English (Belize)\",\n      \"en-CA\": \"English (Canada)\",\n      \"en-IE\": \"English (Ireland)\",\n      \"en-JM\": \"English (Jamaica)\",\n      \"en-NZ\": \"English (New Zealand)\",\n      \"en-PH\": \"English (Philippines)\",\n      \"en-ZA\": \"English (South Africa)\",\n      \"en-TT\": \"English (Trinidad & Tobago)\",\n      \"en-GB\": \"English (United Kingdom)\",\n      \"en-US\": \"English (United States)\",\n      \"en-ZW\": \"English (Zimbabwe)\",\n      eo: \"Esperanto\",\n      et: \"Estonian\",\n      fo: \"Faeroese\",\n      fj: \"Fijian\",\n      fi: \"Finnish\",\n      fr: \"French (Standard)\",\n      \"fr-BE\": \"French (Belgium)\",\n      \"fr-CA\": \"French (Canada)\",\n      \"fr-FR\": \"French (France)\",\n      \"fr-LU\": \"French (Luxembourg)\",\n      \"fr-MC\": \"French (Monaco)\",\n      \"fr-CH\": \"French (Switzerland)\",\n      fy: \"Frisian\",\n      fur: \"Friulian\",\n      gd: \"Gaelic (Scots)\",\n      \"gd-IE\": \"Gaelic (Irish)\",\n      gl: \"Galacian\",\n      ka: \"Georgian\",\n      de: \"German (Standard)\",\n      \"de-AT\": \"German (Austria)\",\n      \"de-DE\": \"German (Germany)\",\n      \"de-LI\": \"German (Liechtenstein)\",\n      \"de-LU\": \"German (Luxembourg)\",\n      \"de-CH\": \"German (Switzerland)\",\n      el: \"Greek\",\n      gu: \"Gujurati\",\n      ht: \"Haitian\",\n      he: \"Hebrew\",\n      hi: \"Hindi\",\n      hu: \"Hungarian\",\n      is: \"Icelandic\",\n      id: \"Indonesian\",\n      iu: \"Inuktitut\",\n      ga: \"Irish\",\n      it: \"Italian (Standard)\",\n      \"it-CH\": \"Italian (Switzerland)\",\n      ja: \"Japanese\",\n      kn: \"Kannada\",\n      ks: \"Kashmiri\",\n      kk: \"Kazakh\",\n      km: \"Khmer\",\n      ky: \"Kirghiz\",\n      tlh: \"Klingon\",\n      ko: \"Korean\",\n      \"ko-KP\": \"Korean (North Korea)\",\n      \"ko-KR\": \"Korean (South Korea)\",\n      la: \"Latin\",\n      lv: \"Latvian\",\n      lt: \"Lithuanian\",\n      lb: \"Luxembourgish\",\n      mk: \"North Macedonia\",\n      ms: \"Malay\",\n      ml: \"Malayalam\",\n      mt: \"Maltese\",\n      mi: \"Maori\",\n      mr: \"Marathi\",\n      mo: \"Moldavian\",\n      nv: \"Navajo\",\n      ng: \"Ndonga\",\n      ne: \"Nepali\",\n      no: \"Norwegian\",\n      nb: \"Norwegian (Bokmal)\",\n      nn: \"Norwegian (Nynorsk)\",\n      oc: \"Occitan\",\n      or: \"Oriya\",\n      om: \"Oromo\",\n      fa: \"Persian\",\n      \"fa-IR\": \"Persian/Iran\",\n      pl: \"Polish\",\n      pt: \"Portuguese\",\n      \"pt-BR\": \"Portuguese (Brazil)\",\n      pa: \"Punjabi\",\n      \"pa-IN\": \"Punjabi (India)\",\n      \"pa-PK\": \"Punjabi (Pakistan)\",\n      qu: \"Quechua\",\n      rm: \"Rhaeto-Romanic\",\n      ro: \"Romanian\",\n      \"ro-MO\": \"Romanian (Moldavia)\",\n      ru: \"Russian\",\n      \"ru-MO\": \"Russian (Moldavia)\",\n      sz: \"Sami (Lappish)\",\n      sg: \"Sango\",\n      sa: \"Sanskrit\",\n      sc: \"Sardinian\",\n      sd: \"Sindhi\",\n      si: \"Singhalese\",\n      sr: \"Serbian\",\n      sk: \"Slovak\",\n      sl: \"Slovenian\",\n      so: \"Somani\",\n      sb: \"Sorbian\",\n      es: \"Spanish\",\n      \"es-AR\": \"Spanish (Argentina)\",\n      \"es-BO\": \"Spanish (Bolivia)\",\n      \"es-CL\": \"Spanish (Chile)\",\n      \"es-CO\": \"Spanish (Colombia)\",\n      \"es-CR\": \"Spanish (Costa Rica)\",\n      \"es-DO\": \"Spanish (Dominican Republic)\",\n      \"es-EC\": \"Spanish (Ecuador)\",\n      \"es-SV\": \"Spanish (El Salvador)\",\n      \"es-GT\": \"Spanish (Guatemala)\",\n      \"es-HN\": \"Spanish (Honduras)\",\n      \"es-MX\": \"Spanish (Mexico)\",\n      \"es-NI\": \"Spanish (Nicaragua)\",\n      \"es-PA\": \"Spanish (Panama)\",\n      \"es-PY\": \"Spanish (Paraguay)\",\n      \"es-PE\": \"Spanish (Peru)\",\n      \"es-PR\": \"Spanish (Puerto Rico)\",\n      \"es-ES\": \"Spanish (Spain)\",\n      \"es-UY\": \"Spanish (Uruguay)\",\n      \"es-VE\": \"Spanish (Venezuela)\",\n      sx: \"Sutu\",\n      sw: \"Swahili\",\n      sv: \"Swedish\",\n      \"sv-FI\": \"Swedish (Finland)\",\n      \"sv-SV\": \"Swedish (Sweden)\",\n      ta: \"Tamil\",\n      tt: \"Tatar\",\n      te: \"Teluga\",\n      th: \"Thai\",\n      tig: \"Tigre\",\n      ts: \"Tsonga\",\n      tn: \"Tswana\",\n      tr: \"Turkish\",\n      tk: \"Turkmen\",\n      uk: \"Ukrainian\",\n      hsb: \"Upper Sorbian\",\n      ur: \"Urdu\",\n      ve: \"Venda\",\n      vi: \"Vietnamese\",\n      vo: \"Volapuk\",\n      wa: \"Walloon\",\n      cy: \"Welsh\",\n      xh: \"Xhosa\",\n      ji: \"Yiddish\",\n      zu: \"Zulu\"\n    };\n\n    if (this.internal.languageSettings === undefined) {\n      this.internal.languageSettings = {};\n      this.internal.languageSettings.isSubscribed = false;\n    }\n\n    if (langCodes[langCode] !== undefined) {\n      this.internal.languageSettings.languageCode = langCode;\n      if (this.internal.languageSettings.isSubscribed === false) {\n        this.internal.events.subscribe(\"putCatalog\", function() {\n          this.internal.write(\n            \"/Lang (\" + this.internal.languageSettings.languageCode + \")\"\n          );\n        });\n        this.internal.languageSettings.isSubscribed = true;\n      }\n    }\n    return this;\n  };\n})(jsPDF.API);\n", "/** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * MIT license.\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * This file adds the standard font metrics to jsPDF.\n *\n * Font metrics data is reprocessed derivative of contents of\n * \"Font Metrics for PDF Core 14 Fonts\" package, which exhibits the following copyright and license:\n *\n * Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\n *\n * This file and the 14 PostScript(R) AFM files it accompanies may be used,\n * copied, and distributed for any purpose and without charge, with or without\n * modification, provided that all copyright notices are retained; that the AFM\n * files are not distributed without this file; that all modifications to this\n * file or any of the AFM files are prominently noted in the modified file(s);\n * and that this paragraph is not modified. Adobe Systems has no responsibility\n * or obligation to support the use of the AFM files.\n *\n * @name standard_fonts_metrics\n * @module\n */\n\n(function(API) {\n  \"use strict\";\n  API.__fontmetrics__ = API.__fontmetrics__ || {};\n\n  var decoded = \"0123456789abcdef\",\n    encoded = \"klmnopqrstuvwxyz\",\n    mappingUncompress = {},\n    mappingCompress = {};\n\n  for (var i = 0; i < encoded.length; i++) {\n    mappingUncompress[encoded[i]] = decoded[i];\n    mappingCompress[decoded[i]] = encoded[i];\n  }\n\n  var hex = function(value) {\n    return \"0x\" + parseInt(value, 10).toString(16);\n  };\n\n  var compress = (API.__fontmetrics__.compress = function(data) {\n    var vals = [\"{\"];\n    var value, keystring, valuestring, numberprefix;\n\n    for (var key in data) {\n      value = data[key];\n\n      if (!isNaN(parseInt(key, 10))) {\n        key = parseInt(key, 10);\n        keystring = hex(key).slice(2);\n        keystring =\n          keystring.slice(0, -1) + mappingCompress[keystring.slice(-1)];\n      } else {\n        keystring = \"'\" + key + \"'\";\n      }\n\n      if (typeof value == \"number\") {\n        if (value < 0) {\n          valuestring = hex(value).slice(3);\n          numberprefix = \"-\";\n        } else {\n          valuestring = hex(value).slice(2);\n          numberprefix = \"\";\n        }\n        valuestring =\n          numberprefix +\n          valuestring.slice(0, -1) +\n          mappingCompress[valuestring.slice(-1)];\n      } else {\n        if (typeof value === \"object\") {\n          valuestring = compress(value);\n        } else {\n          throw new Error(\n            \"Don't know what to do with value type \" + typeof value + \".\"\n          );\n        }\n      }\n      vals.push(keystring + valuestring);\n    }\n    vals.push(\"}\");\n    return vals.join(\"\");\n  });\n\n  /**\n   * Uncompresses data compressed into custom, base16-like format.\n   *\n   * @public\n   * @function\n   * @param\n   * @returns {Type}\n   */\n  var uncompress = (API.__fontmetrics__.uncompress = function(data) {\n    if (typeof data !== \"string\") {\n      throw new Error(\"Invalid argument passed to uncompress.\");\n    }\n\n    var output = {},\n      sign = 1,\n      stringparts, // undef. will be [] in string mode\n      activeobject = output,\n      parentchain = [],\n      parent_key_pair,\n      keyparts = \"\",\n      valueparts = \"\",\n      key, // undef. will be Truthy when Key is resolved.\n      datalen = data.length - 1, // stripping ending }\n      ch;\n\n    for (var i = 1; i < datalen; i += 1) {\n      // - { } ' are special.\n\n      ch = data[i];\n\n      if (ch == \"'\") {\n        if (stringparts) {\n          // end of string mode\n          key = stringparts.join(\"\");\n          stringparts = undefined;\n        } else {\n          // start of string mode\n          stringparts = [];\n        }\n      } else if (stringparts) {\n        stringparts.push(ch);\n      } else if (ch == \"{\") {\n        // start of object\n        parentchain.push([activeobject, key]);\n        activeobject = {};\n        key = undefined;\n      } else if (ch == \"}\") {\n        // end of object\n        parent_key_pair = parentchain.pop();\n        parent_key_pair[0][parent_key_pair[1]] = activeobject;\n        key = undefined;\n        activeobject = parent_key_pair[0];\n      } else if (ch == \"-\") {\n        sign = -1;\n      } else {\n        // must be number\n        if (key === undefined) {\n          if (mappingUncompress.hasOwnProperty(ch)) {\n            keyparts += mappingUncompress[ch];\n            key = parseInt(keyparts, 16) * sign;\n            sign = +1;\n            keyparts = \"\";\n          } else {\n            keyparts += ch;\n          }\n        } else {\n          if (mappingUncompress.hasOwnProperty(ch)) {\n            valueparts += mappingUncompress[ch];\n            activeobject[key] = parseInt(valueparts, 16) * sign;\n            sign = +1;\n            key = undefined;\n            valueparts = \"\";\n          } else {\n            valueparts += ch;\n          }\n        }\n      }\n    }\n    return output;\n  });\n\n  // encoding = 'Unicode'\n  // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE. NO clever BOM behavior\n  // Actual 16bit char codes used.\n  // no multi-byte logic here\n\n  // Unicode characters to WinAnsiEncoding:\n  // {402: 131, 8211: 150, 8212: 151, 8216: 145, 8217: 146, 8218: 130, 8220: 147, 8221: 148, 8222: 132, 8224: 134, 8225: 135, 8226: 149, 8230: 133, 8364: 128, 8240:137, 8249: 139, 8250: 155, 710: 136, 8482: 153, 338: 140, 339: 156, 732: 152, 352: 138, 353: 154, 376: 159, 381: 142, 382: 158}\n  // as you can see, all Unicode chars are outside of 0-255 range. No char code conflicts.\n  // this means that you can give Win cp1252 encoded strings to jsPDF for rendering directly\n  // as well as give strings with some (supported by these fonts) Unicode characters and\n  // these will be mapped to win cp1252\n  // for example, you can send char code (cp1252) 0x80 or (unicode) 0x20AC, getting \"Euro\" glyph displayed in both cases.\n\n  var encodingBlock = {\n    codePages: [\"WinAnsiEncoding\"],\n    WinAnsiEncoding: uncompress(\n      \"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\"\n    )\n  };\n  var encodings = {\n    Unicode: {\n      Courier: encodingBlock,\n      \"Courier-Bold\": encodingBlock,\n      \"Courier-BoldOblique\": encodingBlock,\n      \"Courier-Oblique\": encodingBlock,\n      Helvetica: encodingBlock,\n      \"Helvetica-Bold\": encodingBlock,\n      \"Helvetica-BoldOblique\": encodingBlock,\n      \"Helvetica-Oblique\": encodingBlock,\n      \"Times-Roman\": encodingBlock,\n      \"Times-Bold\": encodingBlock,\n      \"Times-BoldItalic\": encodingBlock,\n      \"Times-Italic\": encodingBlock\n      //\t, 'Symbol'\n      //\t, 'ZapfDingbats'\n    }\n  };\n\n  var fontMetrics = {\n    Unicode: {\n      // all sizing numbers are n/fontMetricsFractionOf = one font size unit\n      // this means that if fontMetricsFractionOf = 1000, and letter A's width is 476, it's\n      // width is 476/1000 or 47.6% of its height (regardless of font size)\n      // At this time this value applies to \"widths\" and \"kerning\" numbers.\n\n      // char code 0 represents \"default\" (average) width - use it for chars missing in this table.\n      // key 'fof' represents the \"fontMetricsFractionOf\" value\n\n      \"Courier-Oblique\": uncompress(\n        \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n      ),\n      \"Times-BoldItalic\": uncompress(\n        \"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"\n      ),\n      \"Helvetica-Bold\": uncompress(\n        \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n      ),\n      Courier: uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n      \"Courier-BoldOblique\": uncompress(\n        \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n      ),\n      \"Times-Bold\": uncompress(\n        \"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"\n      ),\n      Symbol: uncompress(\n        \"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"\n      ),\n      Helvetica: uncompress(\n        \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n      ),\n      \"Helvetica-BoldOblique\": uncompress(\n        \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n      ),\n      ZapfDingbats: uncompress(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n      \"Courier-Bold\": uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n      \"Times-Italic\": uncompress(\n        \"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"\n      ),\n      \"Times-Roman\": uncompress(\n        \"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"\n      ),\n      \"Helvetica-Oblique\": uncompress(\n        \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n      )\n    }\n  };\n\n  /*\n\tThis event handler is fired when a new jsPDF object is initialized\n\tThis event handler appends metrics data to standard fonts within\n\tthat jsPDF instance. The metrics are mapped over Unicode character\n\tcodes, NOT CIDs or other codes matching the StandardEncoding table of the\n\tstandard PDF fonts.\n\tFuture:\n\tAlso included is the encoding maping table, converting Unicode (UCS-2, UTF-16)\n\tchar codes to StandardEncoding character codes. The encoding table is to be used\n\tsomewhere around \"pdfEscape\" call.\n\t*/\n  API.events.push([\n    \"addFont\",\n    function(data) {\n      var font = data.font;\n\n      var metrics = fontMetrics[\"Unicode\"][font.postScriptName];\n      if (metrics) {\n        font.metadata[\"Unicode\"] = {};\n        font.metadata[\"Unicode\"].widths = metrics.widths;\n        font.metadata[\"Unicode\"].kerning = metrics.kerning;\n      }\n\n      var encodingBlock = encodings[\"Unicode\"][font.postScriptName];\n      if (encodingBlock) {\n        font.metadata[\"Unicode\"].encoding = encodingBlock;\n        font.encoding = encodingBlock.codePages[0];\n      }\n    }\n  ]); // end of adding event handler\n})(jsPDF.API);\n", "/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n/**\n * @name ttfsupport\n * @module\n */\n(function(jsPDF) {\n  \"use strict\";\n\n  var binaryStringToUint8Array = function(binary_string) {\n    var len = binary_string.length;\n    var bytes = new Uint8Array(len);\n    for (var i = 0; i < len; i++) {\n      bytes[i] = binary_string.charCodeAt(i);\n    }\n    return bytes;\n  };\n\n  var addFont = function(font, file) {\n    // eslint-disable-next-line no-control-regex\n    if (/^\\x00\\x01\\x00\\x00/.test(file)) {\n      file = binaryStringToUint8Array(file);\n    } else {\n      file = binaryStringToUint8Array(atob(file));\n    }\n    font.metadata = jsPDF.API.TTFFont.open(file);\n    font.metadata.Unicode = font.metadata.Unicode || {\n      encoding: {},\n      kerning: {},\n      widths: []\n    };\n    font.metadata.glyIdsUsed = [0];\n  };\n\n  jsPDF.API.events.push([\n    \"addFont\",\n    function(data) {\n      var file = undefined;\n      var font = data.font;\n      var instance = data.instance;\n      if (font.isStandardFont) {\n        return;\n      }\n      if (typeof instance !== \"undefined\") {\n        if (instance.existsFileInVFS(font.postScriptName) === false) {\n          file = instance.loadFile(font.postScriptName);\n        } else {\n          file = instance.getFileFromVFS(font.postScriptName);\n        }\n        if (typeof file !== \"string\") {\n          throw new Error(\n            \"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" +\n              font.postScriptName +\n              \"').\"\n          );\n        }\n        addFont(font, file);\n      } else {\n        throw new Error(\n          \"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" +\n            font.postScriptName +\n            \"').\"\n        );\n      }\n    }\n  ]); // end of adding event handler\n})(jsPDF);\n", "/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { console } from \"../libs/console.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF SVG plugin\n *\n * @name svg\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  function loadCanvg() {\n    return (function() {\n      if (globalObject[\"canvg\"]) {\n        return Promise.resolve(globalObject[\"canvg\"]);\n      }\n\n      return import(\"canvg\");\n\n    })()\n      .catch(function(e) {\n        return Promise.reject(new Error(\"Could not load canvg: \" + e));\n      })\n      .then(function(canvg) {\n        return canvg.default ? canvg.default : canvg;\n      });\n  }\n\n  /**\n   * Parses SVG XML and saves it as image into the PDF.\n   *\n   * Depends on canvas-element and canvg\n   *\n   * @name addSvgAsImage\n   * @public\n   * @function\n   * @param {string} SVG-Data as Text\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} width of SVG-Image (in units declared at inception of PDF document)\n   * @param {number} height of SVG-Image (in units declared at inception of PDF document)\n   * @param {string} alias of SVG-Image (if used multiple times)\n   * @param {string} compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n   * @param {number} rotation of the image in degrees (0-359)\n   *\n   * @returns jsPDF jsPDF-instance\n   */\n  jsPDFAPI.addSvgAsImage = function(\n    svg,\n    x,\n    y,\n    w,\n    h,\n    alias,\n    compression,\n    rotation\n  ) {\n    if (isNaN(x) || isNaN(y)) {\n      console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments);\n      throw new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n    }\n\n    if (isNaN(w) || isNaN(h)) {\n      console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments);\n      throw new Error(\n        \"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\"\n      );\n    }\n\n    var canvas = document.createElement(\"canvas\");\n    canvas.width = w;\n    canvas.height = h;\n    var ctx = canvas.getContext(\"2d\");\n    ctx.fillStyle = \"#fff\"; /// set white fill style\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n    var options = {\n      ignoreMouse: true,\n      ignoreAnimation: true,\n      ignoreDimensions: true\n    };\n    var doc = this;\n    return loadCanvg()\n      .then(\n        function(canvg) {\n          return canvg.fromString(ctx, svg, options);\n        },\n        function() {\n          return Promise.reject(new Error(\"Could not load canvg.\"));\n        }\n      )\n      .then(function(instance) {\n        return instance.render(options);\n      })\n      .then(function() {\n        doc.addImage(\n          canvas.toDataURL(\"image/jpeg\", 1.0),\n          x,\n          y,\n          w,\n          h,\n          compression,\n          rotation\n        );\n      });\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF total_pages plugin\n * @name total_pages\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n  /**\n   * @name putTotalPages\n   * @function\n   * @param {string} pageExpression Regular Expression\n   * @returns {jsPDF} jsPDF-instance\n   */\n\n  jsPDFAPI.putTotalPages = function(pageExpression) {\n    \"use strict\";\n\n    var replaceExpression;\n    var totalNumberOfPages = 0;\n    if (parseInt(this.internal.getFont().id.substr(1), 10) < 15) {\n      replaceExpression = new RegExp(pageExpression, \"g\");\n      totalNumberOfPages = this.internal.getNumberOfPages();\n    } else {\n      replaceExpression = new RegExp(\n        this.pdfEscape16(pageExpression, this.internal.getFont()),\n        \"g\"\n      );\n      totalNumberOfPages = this.pdfEscape16(\n        this.internal.getNumberOfPages() + \"\",\n        this.internal.getFont()\n      );\n    }\n\n    for (var n = 1; n <= this.internal.getNumberOfPages(); n++) {\n      for (var i = 0; i < this.internal.pages[n].length; i++) {\n        this.internal.pages[n][i] = this.internal.pages[n][i].replace(\n          replaceExpression,\n          totalNumberOfPages\n        );\n      }\n    }\n\n    return this;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * jsPDF viewerPreferences Plugin\n * @author Aras Abbasi (github.com/arasabbasi)\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Adds the ability to set ViewerPreferences and by thus\n * controlling the way the document is to be presented on the\n * screen or in print.\n * @name viewerpreferences\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n  /**\n   * Set the ViewerPreferences of the generated PDF\n   *\n   * @name viewerPreferences\n   * @function\n   * @public\n   * @param {Object} options Array with the ViewerPreferences<br />\n   * Example: doc.viewerPreferences({\"FitWindow\":true});<br />\n   * <br />\n   * You can set following preferences:<br />\n   * <br/>\n   * <b>HideToolbar</b> <i>(boolean)</i><br />\n   * Default value: false<br />\n   * <br />\n   * <b>HideMenubar</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>HideWindowUI</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>FitWindow</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>CenterWindow</b> <i>(boolean)</i><br />\n   * Default value: false<br />\n   * <br />\n   * <b>DisplayDocTitle</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>NonFullScreenPageMode</b> <i>(string)</i><br />\n   * Possible values: UseNone, UseOutlines, UseThumbs, UseOC<br />\n   * Default value: UseNone<br/>\n   * <br />\n   * <b>Direction</b> <i>(string)</i><br />\n   * Possible values: L2R, R2L<br />\n   * Default value: L2R.<br />\n   * <br />\n   * <b>ViewArea</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox.<br />\n   * <br />\n   * <b>ViewClip</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox<br />\n   * <br />\n   * <b>PrintArea</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox<br />\n   * <br />\n   * <b>PrintClip</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox.<br />\n   * <br />\n   * <b>PrintScaling</b> <i>(string)</i><br />\n   * Possible values: AppDefault, None<br />\n   * Default value: AppDefault.<br />\n   * <br />\n   * <b>Duplex</b> <i>(string)</i><br />\n   * Possible values: Simplex, DuplexFlipLongEdge, DuplexFlipShortEdge\n   * Default value: none<br />\n   * <br />\n   * <b>PickTrayByPDFSize</b> <i>(boolean)</i><br />\n   * Default value: false<br />\n   * <br />\n   * <b>PrintPageRange</b> <i>(Array)</i><br />\n   * Example: [[1,5], [7,9]]<br />\n   * Default value: as defined by PDF viewer application<br />\n   * <br />\n   * <b>NumCopies</b> <i>(Number)</i><br />\n   * Possible values: 1, 2, 3, 4, 5<br />\n   * Default value: 1<br />\n   * <br />\n   * For more information see the PDF Reference, sixth edition on Page 577\n   * @param {boolean} doReset True to reset the settings\n   * @function\n   * @returns jsPDF jsPDF-instance\n   * @example\n   * var doc = new jsPDF()\n   * doc.text('This is a test', 10, 10)\n   * doc.viewerPreferences({'FitWindow': true}, true)\n   * doc.save(\"viewerPreferences.pdf\")\n   *\n   * // Example printing 10 copies, using cropbox, and hiding UI.\n   * doc.viewerPreferences({\n   *   'HideWindowUI': true,\n   *   'PrintArea': 'CropBox',\n   *   'NumCopies': 10\n   * })\n   */\n  jsPDFAPI.viewerPreferences = function(options, doReset) {\n    options = options || {};\n    doReset = doReset || false;\n\n    var configuration;\n    var configurationTemplate = {\n      HideToolbar: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      HideMenubar: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      HideWindowUI: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      FitWindow: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      CenterWindow: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      DisplayDocTitle: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.4\n      },\n      NonFullScreenPageMode: {\n        defaultValue: \"UseNone\",\n        value: \"UseNone\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n        pdfVersion: 1.3\n      },\n      Direction: {\n        defaultValue: \"L2R\",\n        value: \"L2R\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"L2R\", \"R2L\"],\n        pdfVersion: 1.3\n      },\n      ViewArea: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      ViewClip: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      PrintArea: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      PrintClip: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      PrintScaling: {\n        defaultValue: \"AppDefault\",\n        value: \"AppDefault\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"AppDefault\", \"None\"],\n        pdfVersion: 1.6\n      },\n      Duplex: {\n        defaultValue: \"\",\n        value: \"none\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\n          \"Simplex\",\n          \"DuplexFlipShortEdge\",\n          \"DuplexFlipLongEdge\",\n          \"none\"\n        ],\n        pdfVersion: 1.7\n      },\n      PickTrayByPDFSize: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.7\n      },\n      PrintPageRange: {\n        defaultValue: \"\",\n        value: \"\",\n        type: \"array\",\n        explicitSet: false,\n        valueSet: null,\n        pdfVersion: 1.7\n      },\n      NumCopies: {\n        defaultValue: 1,\n        value: 1,\n        type: \"integer\",\n        explicitSet: false,\n        valueSet: null,\n        pdfVersion: 1.7\n      }\n    };\n\n    var configurationKeys = Object.keys(configurationTemplate);\n\n    var rangeArray = [];\n    var i = 0;\n    var j = 0;\n    var k = 0;\n    var isValid;\n\n    var method;\n    var value;\n\n    function arrayContainsElement(array, element) {\n      var iterator;\n      var result = false;\n\n      for (iterator = 0; iterator < array.length; iterator += 1) {\n        if (array[iterator] === element) {\n          result = true;\n        }\n      }\n      return result;\n    }\n\n    if (this.internal.viewerpreferences === undefined) {\n      this.internal.viewerpreferences = {};\n      this.internal.viewerpreferences.configuration = JSON.parse(\n        JSON.stringify(configurationTemplate)\n      );\n      this.internal.viewerpreferences.isSubscribed = false;\n    }\n    configuration = this.internal.viewerpreferences.configuration;\n\n    if (options === \"reset\" || doReset === true) {\n      var len = configurationKeys.length;\n\n      for (k = 0; k < len; k += 1) {\n        configuration[configurationKeys[k]].value =\n          configuration[configurationKeys[k]].defaultValue;\n        configuration[configurationKeys[k]].explicitSet = false;\n      }\n    }\n\n    if (typeof options === \"object\") {\n      for (method in options) {\n        value = options[method];\n        if (\n          arrayContainsElement(configurationKeys, method) &&\n          value !== undefined\n        ) {\n          if (\n            configuration[method].type === \"boolean\" &&\n            typeof value === \"boolean\"\n          ) {\n            configuration[method].value = value;\n          } else if (\n            configuration[method].type === \"name\" &&\n            arrayContainsElement(configuration[method].valueSet, value)\n          ) {\n            configuration[method].value = value;\n          } else if (\n            configuration[method].type === \"integer\" &&\n            Number.isInteger(value)\n          ) {\n            configuration[method].value = value;\n          } else if (configuration[method].type === \"array\") {\n            for (i = 0; i < value.length; i += 1) {\n              isValid = true;\n              if (value[i].length === 1 && typeof value[i][0] === \"number\") {\n                rangeArray.push(String(value[i] - 1));\n              } else if (value[i].length > 1) {\n                for (j = 0; j < value[i].length; j += 1) {\n                  if (typeof value[i][j] !== \"number\") {\n                    isValid = false;\n                  }\n                }\n                if (isValid === true) {\n                  rangeArray.push([value[i][0] - 1, value[i][1] - 1].join(\" \"));\n                }\n              }\n            }\n            configuration[method].value = \"[\" + rangeArray.join(\" \") + \"]\";\n          } else {\n            configuration[method].value = configuration[method].defaultValue;\n          }\n\n          configuration[method].explicitSet = true;\n        }\n      }\n    }\n\n    if (this.internal.viewerpreferences.isSubscribed === false) {\n      this.internal.events.subscribe(\"putCatalog\", function() {\n        var pdfDict = [];\n        var vPref;\n        for (vPref in configuration) {\n          if (configuration[vPref].explicitSet === true) {\n            if (configuration[vPref].type === \"name\") {\n              pdfDict.push(\"/\" + vPref + \" /\" + configuration[vPref].value);\n            } else {\n              pdfDict.push(\"/\" + vPref + \" \" + configuration[vPref].value);\n            }\n          }\n        }\n        if (pdfDict.length !== 0) {\n          this.internal.write(\n            \"/ViewerPreferences\\n<<\\n\" + pdfDict.join(\"\\n\") + \"\\n>>\"\n          );\n        }\n      });\n      this.internal.viewerpreferences.isSubscribed = true;\n    }\n\n    this.internal.viewerpreferences.configuration = configuration;\n    return this;\n  };\n})(jsPDF.API);\n", "/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name xmp_metadata\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var postPutResources = function() {\n    var xmpmeta_beginning = '<x:xmpmeta xmlns:x=\"adobe:ns:meta/\">';\n    var rdf_beginning =\n      '<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"><rdf:Description rdf:about=\"\" xmlns:jspdf=\"' +\n      this.internal.__metadata__.namespaceuri +\n      '\"><jspdf:metadata>';\n    var rdf_ending = \"</jspdf:metadata></rdf:Description></rdf:RDF>\";\n    var xmpmeta_ending = \"</x:xmpmeta>\";\n    var utf8_xmpmeta_beginning = unescape(\n      encodeURIComponent(xmpmeta_beginning)\n    );\n    var utf8_rdf_beginning = unescape(encodeURIComponent(rdf_beginning));\n    var utf8_metadata = unescape(\n      encodeURIComponent(this.internal.__metadata__.metadata)\n    );\n    var utf8_rdf_ending = unescape(encodeURIComponent(rdf_ending));\n    var utf8_xmpmeta_ending = unescape(encodeURIComponent(xmpmeta_ending));\n\n    var total_len =\n      utf8_rdf_beginning.length +\n      utf8_metadata.length +\n      utf8_rdf_ending.length +\n      utf8_xmpmeta_beginning.length +\n      utf8_xmpmeta_ending.length;\n\n    this.internal.__metadata__.metadata_object_number = this.internal.newObject();\n    this.internal.write(\n      \"<< /Type /Metadata /Subtype /XML /Length \" + total_len + \" >>\"\n    );\n    this.internal.write(\"stream\");\n    this.internal.write(\n      utf8_xmpmeta_beginning +\n        utf8_rdf_beginning +\n        utf8_metadata +\n        utf8_rdf_ending +\n        utf8_xmpmeta_ending\n    );\n    this.internal.write(\"endstream\");\n    this.internal.write(\"endobj\");\n  };\n\n  var putCatalog = function() {\n    if (this.internal.__metadata__.metadata_object_number) {\n      this.internal.write(\n        \"/Metadata \" +\n          this.internal.__metadata__.metadata_object_number +\n          \" 0 R\"\n      );\n    }\n  };\n\n  /**\n   * Adds XMP formatted metadata to PDF\n   *\n   * @name addMetadata\n   * @function\n   * @param {String} metadata The actual metadata to be added. The metadata shall be stored as XMP simple value. Note that if the metadata string contains XML markup characters \"<\", \">\" or \"&\", those characters should be written using XML entities.\n   * @param {String} namespaceuri Sets the namespace URI for the metadata. Last character should be slash or hash.\n   * @returns {jsPDF} jsPDF-instance\n   */\n  jsPDFAPI.addMetadata = function(metadata, namespaceuri) {\n    if (typeof this.internal.__metadata__ === \"undefined\") {\n      this.internal.__metadata__ = {\n        metadata: metadata,\n        namespaceuri: namespaceuri || \"http://jspdf.default.namespaceuri/\"\n      };\n      this.internal.events.subscribe(\"putCatalog\", putCatalog);\n\n      this.internal.events.subscribe(\"postPutResources\", postPutResources);\n    }\n    return this;\n  };\n})(jsPDF.API);\n", "import { jsPDF } from \"../jspdf.js\";\nimport { toPDFName } from \"../libs/pdfname.js\";\n\n/**\n * @name utf8\n * @module\n */\n(function(jsPDF) {\n  \"use strict\";\n  var jsPDFAPI = jsPDF.API;\n\n  /***************************************************************************************************/\n  /* function : pdfEscape16                                                                          */\n  /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */\n  /*   the corresponding glyph id and width, and then adding padding to the string.                  */\n  /***************************************************************************************************/\n  var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) {\n    var widths = font.metadata.Unicode.widths;\n    var padz = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n    var ar = [\"\"];\n    for (var i = 0, l = text.length, t; i < l; ++i) {\n      t = font.metadata.characterToGlyph(text.charCodeAt(i));\n      font.metadata.glyIdsUsed.push(t);\n      font.metadata.toUnicode[t] = text.charCodeAt(i);\n      if (widths.indexOf(t) == -1) {\n        widths.push(t);\n        widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]);\n      }\n      if (t == \"0\") {\n        //Spaces are not allowed in cmap.\n        return ar.join(\"\");\n      } else {\n        t = t.toString(16);\n        ar.push(padz[4 - t.length], t);\n      }\n    }\n    return ar.join(\"\");\n  });\n\n  var toUnicodeCmap = function(map) {\n    var code, codes, range, unicode, unicodeMap, _i, _len;\n    unicodeMap =\n      \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n  /Registry (Adobe)\\n  /Ordering (UCS)\\n  /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000><ffff>\\nendcodespacerange\";\n    codes = Object.keys(map).sort(function(a, b) {\n      return a - b;\n    });\n\n    range = [];\n    for (_i = 0, _len = codes.length; _i < _len; _i++) {\n      code = codes[_i];\n      if (range.length >= 100) {\n        unicodeMap +=\n          \"\\n\" +\n          range.length +\n          \" beginbfchar\\n\" +\n          range.join(\"\\n\") +\n          \"\\nendbfchar\";\n        range = [];\n      }\n\n      if (\n        map[code] !== undefined &&\n        map[code] !== null &&\n        typeof map[code].toString === \"function\"\n      ) {\n        unicode = (\"0000\" + map[code].toString(16)).slice(-4);\n        code = (\"0000\" + (+code).toString(16)).slice(-4);\n        range.push(\"<\" + code + \"><\" + unicode + \">\");\n      }\n    }\n\n    if (range.length) {\n      unicodeMap +=\n        \"\\n\" +\n        range.length +\n        \" beginbfchar\\n\" +\n        range.join(\"\\n\") +\n        \"\\nendbfchar\\n\";\n    }\n    unicodeMap +=\n      \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n    return unicodeMap;\n  };\n\n  var identityHFunction = function(options) {\n    var font = options.font;\n    var out = options.out;\n    var newObject = options.newObject;\n    var putStream = options.putStream;\n\n    if (\n      font.metadata instanceof jsPDF.API.TTFFont &&\n      font.encoding === \"Identity-H\"\n    ) {\n      //Tag with Identity-H\n      var widths = font.metadata.Unicode.widths;\n      var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1);\n      var pdfOutput = data;\n      var pdfOutput2 = \"\";\n      for (var i = 0; i < pdfOutput.length; i++) {\n        pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n      }\n      var fontTable = newObject();\n      putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n      out(\"endobj\");\n\n      var cmap = newObject();\n      var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n      putStream({ data: cmapData, addLength1: true, objectId: cmap });\n      out(\"endobj\");\n\n      var fontDescriptor = newObject();\n      out(\"<<\");\n      out(\"/Type /FontDescriptor\");\n      out(\"/FontName /\" + toPDFName(font.fontName));\n      out(\"/FontFile2 \" + fontTable + \" 0 R\");\n      out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n      out(\"/Flags \" + font.metadata.flags);\n      out(\"/StemV \" + font.metadata.stemV);\n      out(\"/ItalicAngle \" + font.metadata.italicAngle);\n      out(\"/Ascent \" + font.metadata.ascender);\n      out(\"/Descent \" + font.metadata.decender);\n      out(\"/CapHeight \" + font.metadata.capHeight);\n      out(\">>\");\n      out(\"endobj\");\n\n      var DescendantFont = newObject();\n      out(\"<<\");\n      out(\"/Type /Font\");\n      out(\"/BaseFont /\" + toPDFName(font.fontName));\n      out(\"/FontDescriptor \" + fontDescriptor + \" 0 R\");\n      out(\"/W \" + jsPDF.API.PDFObject.convert(widths));\n      out(\"/CIDToGIDMap /Identity\");\n      out(\"/DW 1000\");\n      out(\"/Subtype /CIDFontType2\");\n      out(\"/CIDSystemInfo\");\n      out(\"<<\");\n      out(\"/Supplement 0\");\n      out(\"/Registry (Adobe)\");\n      out(\"/Ordering (\" + font.encoding + \")\");\n      out(\">>\");\n      out(\">>\");\n      out(\"endobj\");\n\n      font.objectNumber = newObject();\n      out(\"<<\");\n      out(\"/Type /Font\");\n      out(\"/Subtype /Type0\");\n      out(\"/ToUnicode \" + cmap + \" 0 R\");\n      out(\"/BaseFont /\" + toPDFName(font.fontName));\n      out(\"/Encoding /\" + font.encoding);\n      out(\"/DescendantFonts [\" + DescendantFont + \" 0 R]\");\n      out(\">>\");\n      out(\"endobj\");\n\n      font.isAlreadyPutted = true;\n    }\n  };\n\n  jsPDFAPI.events.push([\n    \"putFont\",\n    function(args) {\n      identityHFunction(args);\n    }\n  ]);\n\n  var winAnsiEncodingFunction = function(options) {\n    var font = options.font;\n    var out = options.out;\n    var newObject = options.newObject;\n    var putStream = options.putStream;\n\n    if (\n      font.metadata instanceof jsPDF.API.TTFFont &&\n      font.encoding === \"WinAnsiEncoding\"\n    ) {\n      //Tag with WinAnsi encoding\n      var data = font.metadata.rawData;\n      var pdfOutput = data;\n      var pdfOutput2 = \"\";\n      for (var i = 0; i < pdfOutput.length; i++) {\n        pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n      }\n      var fontTable = newObject();\n      putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n      out(\"endobj\");\n\n      var cmap = newObject();\n      var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n      putStream({ data: cmapData, addLength1: true, objectId: cmap });\n      out(\"endobj\");\n\n      var fontDescriptor = newObject();\n      out(\"<<\");\n      out(\"/Descent \" + font.metadata.decender);\n      out(\"/CapHeight \" + font.metadata.capHeight);\n      out(\"/StemV \" + font.metadata.stemV);\n      out(\"/Type /FontDescriptor\");\n      out(\"/FontFile2 \" + fontTable + \" 0 R\");\n      out(\"/Flags 96\");\n      out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n      out(\"/FontName /\" + toPDFName(font.fontName));\n      out(\"/ItalicAngle \" + font.metadata.italicAngle);\n      out(\"/Ascent \" + font.metadata.ascender);\n      out(\">>\");\n      out(\"endobj\");\n      font.objectNumber = newObject();\n      for (var j = 0; j < font.metadata.hmtx.widths.length; j++) {\n        font.metadata.hmtx.widths[j] = parseInt(\n          font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm)\n        ); //Change the width of Em units to Point units.\n      }\n      out(\n        \"<</Subtype/TrueType/Type/Font/ToUnicode \" +\n          cmap +\n          \" 0 R/BaseFont/\" +\n          toPDFName(font.fontName) +\n          \"/FontDescriptor \" +\n          fontDescriptor +\n          \" 0 R\" +\n          \"/Encoding/\" +\n          font.encoding +\n          \" /FirstChar 29 /LastChar 255 /Widths \" +\n          jsPDF.API.PDFObject.convert(font.metadata.hmtx.widths) +\n          \">>\"\n      );\n      out(\"endobj\");\n      font.isAlreadyPutted = true;\n    }\n  };\n\n  jsPDFAPI.events.push([\n    \"putFont\",\n    function(args) {\n      winAnsiEncodingFunction(args);\n    }\n  ]);\n\n  var utf8TextFunction = function(args) {\n    var text = args.text || \"\";\n    var x = args.x;\n    var y = args.y;\n    var options = args.options || {};\n    var mutex = args.mutex || {};\n\n    var pdfEscape = mutex.pdfEscape;\n    var activeFontKey = mutex.activeFontKey;\n    var fonts = mutex.fonts;\n    var key = activeFontKey;\n\n    var str = \"\",\n      s = 0,\n      cmapConfirm;\n    var strText = \"\";\n    var encoding = fonts[key].encoding;\n\n    if (fonts[key].encoding !== \"Identity-H\") {\n      return {\n        text: text,\n        x: x,\n        y: y,\n        options: options,\n        mutex: mutex\n      };\n    }\n    strText = text;\n\n    key = activeFontKey;\n    if (Array.isArray(text)) {\n      strText = text[0];\n    }\n    for (s = 0; s < strText.length; s += 1) {\n      if (fonts[key].metadata.hasOwnProperty(\"cmap\")) {\n        cmapConfirm =\n          fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)];\n        /*\n             if (Object.prototype.toString.call(text) === '[object Array]') {\n                var i = 0;\n               // for (i = 0; i < text.length; i += 1) {\n                    if (Object.prototype.toString.call(text[s]) === '[object Array]') {\n                        cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n                    } else {\n\n                    }\n                //}\n\n            } else {\n                cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n            }*/\n      }\n      if (!cmapConfirm) {\n        if (\n          strText[s].charCodeAt(0) < 256 &&\n          fonts[key].metadata.hasOwnProperty(\"Unicode\")\n        ) {\n          str += strText[s];\n        } else {\n          str += \"\";\n        }\n      } else {\n        str += strText[s];\n      }\n    }\n    var result = \"\";\n    if (parseInt(key.slice(1)) < 14 || encoding === \"WinAnsiEncoding\") {\n      //For the default 13 font\n      result = pdfEscape(str, key)\n        .split(\"\")\n        .map(function(cv) {\n          return cv.charCodeAt(0).toString(16);\n        })\n        .join(\"\");\n    } else if (encoding === \"Identity-H\") {\n      result = pdfEscape16(str, fonts[key]);\n    }\n    mutex.isHex = true;\n\n    return {\n      text: result,\n      x: x,\n      y: y,\n      options: options,\n      mutex: mutex\n    };\n  };\n\n  var utf8EscapeFunction = function(parms) {\n    var text = parms.text || \"\",\n      x = parms.x,\n      y = parms.y,\n      options = parms.options,\n      mutex = parms.mutex;\n    var tmpText = [];\n    var args = {\n      text: text,\n      x: x,\n      y: y,\n      options: options,\n      mutex: mutex\n    };\n\n    if (Array.isArray(text)) {\n      var i = 0;\n      for (i = 0; i < text.length; i += 1) {\n        if (Array.isArray(text[i])) {\n          if (text[i].length === 3) {\n            tmpText.push([\n              utf8TextFunction(Object.assign({}, args, { text: text[i][0] }))\n                .text,\n              text[i][1],\n              text[i][2]\n            ]);\n          } else {\n            tmpText.push(\n              utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n            );\n          }\n        } else {\n          tmpText.push(\n            utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n          );\n        }\n      }\n      parms.text = tmpText;\n    } else {\n      parms.text = utf8TextFunction(\n        Object.assign({}, args, { text: text })\n      ).text;\n    }\n  };\n\n  jsPDFAPI.events.push([\"postProcessText\", utf8EscapeFunction]);\n})(jsPDF);\n", "/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Use the vFS to handle files\n *\n * @name vFS\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var _initializeVFS = function() {\n    if (typeof this.internal.vFS === \"undefined\") {\n      this.internal.vFS = {};\n    }\n    return true;\n  };\n\n  /**\n   * Check if the file exists in the vFS\n   *\n   * @name existsFileInVFS\n   * @function\n   * @param {string} Possible filename in the vFS.\n   * @returns {boolean}\n   * @example\n   * doc.existsFileInVFS(\"someFile.txt\");\n   */\n  jsPDFAPI.existsFileInVFS = function(filename) {\n    _initializeVFS.call(this);\n    return typeof this.internal.vFS[filename] !== \"undefined\";\n  };\n\n  /**\n   * Add a file to the vFS\n   *\n   * @name addFileToVFS\n   * @function\n   * @param {string} filename The name of the file which should be added.\n   * @param {string} filecontent The content of the file.\n   * @returns {jsPDF}\n   * @example\n   * doc.addFileToVFS(\"someFile.txt\", \"BADFACE1\");\n   */\n  jsPDFAPI.addFileToVFS = function(filename, filecontent) {\n    _initializeVFS.call(this);\n    this.internal.vFS[filename] = filecontent;\n    return this;\n  };\n\n  /**\n   * Get the file from the vFS\n   *\n   * @name getFileFromVFS\n   * @function\n   * @param {string} The name of the file which gets requested.\n   * @returns {string}\n   * @example\n   * doc.getFileFromVFS(\"someFile.txt\");\n   */\n  jsPDFAPI.getFileFromVFS = function(filename) {\n    _initializeVFS.call(this);\n\n    if (typeof this.internal.vFS[filename] !== \"undefined\") {\n      return this.internal.vFS[filename];\n    }\n    return null;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDF) {\n  \"use strict\";\n  /**\n   * Table of Unicode types.\n   *\n   * Generated by:\n   *\n   * var bidi = require(\"./bidi/index\");\n   * var bidi_accumulate = bidi.slice(0, 256).concat(bidi.slice(0x0500, 0x0500 + 256 * 3)).\n   * concat(bidi.slice(0x2000, 0x2000 + 256)).concat(bidi.slice(0xFB00, 0xFB00 + 256)).\n   * concat(bidi.slice(0xFE00, 0xFE00 + 2 * 256));\n   *\n   * for( var i = 0; i < bidi_accumulate.length; i++) {\n   * \tif(bidi_accumulate[i] === undefined || bidi_accumulate[i] === 'ON')\n   * \t\tbidi_accumulate[i] = 'N'; //mark as neutral to conserve space and substitute undefined\n   * }\n   * var bidiAccumulateStr = 'return [ \"' + bidi_accumulate.toString().replace(/,/g, '\", \"') + '\" ];';\n   * require(\"fs\").writeFile('unicode-types.js', bidiAccumulateStr);\n   *\n   * Based on:\n   * https://github.com/mathiasbynens/unicode-8.0.0\n   */\n  var bidiUnicodeTypes = [\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"S\",\n    \"B\",\n    \"S\",\n    \"WS\",\n    \"B\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"B\",\n    \"B\",\n    \"B\",\n    \"S\",\n    \"WS\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ES\",\n    \"CS\",\n    \"ES\",\n    \"CS\",\n    \"CS\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"B\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"CS\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"BN\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"EN\",\n    \"EN\",\n    \"N\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"EN\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"ET\",\n    \"ET\",\n    \"AL\",\n    \"CS\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"ET\",\n    \"AN\",\n    \"AN\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AN\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"L\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"WS\",\n    \"B\",\n    \"LRE\",\n    \"RLE\",\n    \"PDF\",\n    \"LRO\",\n    \"RLO\",\n    \"CS\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"WS\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"N\",\n    \"LRI\",\n    \"RLI\",\n    \"FSI\",\n    \"PDI\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"EN\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"ES\",\n    \"ES\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"ES\",\n    \"ES\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"NSM\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"ES\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"ES\",\n    \"ES\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"BN\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ES\",\n    \"CS\",\n    \"ES\",\n    \"CS\",\n    \"CS\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\"\n  ];\n\n  /**\n   * Unicode Bidi algorithm compliant Bidi engine.\n   * For reference see http://unicode.org/reports/tr9/\n   */\n\n  /**\n   * constructor ( options )\n   *\n   * Initializes Bidi engine\n   *\n   * @param {Object} See 'setOptions' below for detailed description.\n   * options are cashed between invocation of 'doBidiReorder' method\n   *\n   * sample usage pattern of BidiEngine:\n   * var opt = {\n   * \tisInputVisual: true,\n   * \tisInputRtl: false,\n   * \tisOutputVisual: false,\n   * \tisOutputRtl: false,\n   * \tisSymmetricSwapping: true\n   * }\n   * var sourceToTarget = [], levels = [];\n   * var bidiEng = Globalize.bidiEngine(opt);\n   * var src = \"text string to be reordered\";\n   * var ret = bidiEng.doBidiReorder(src, sourceToTarget, levels);\n   */\n\n  jsPDF.__bidiEngine__ = jsPDF.prototype.__bidiEngine__ = function(options) {\n    var _UNICODE_TYPES = _bidiUnicodeTypes;\n\n    var _STATE_TABLE_LTR = [\n      [0, 3, 0, 1, 0, 0, 0],\n      [0, 3, 0, 1, 2, 2, 0],\n      [0, 3, 0, 0x11, 2, 0, 1],\n      [0, 3, 5, 5, 4, 1, 0],\n      [0, 3, 0x15, 0x15, 4, 0, 1],\n      [0, 3, 5, 5, 4, 2, 0]\n    ];\n\n    var _STATE_TABLE_RTL = [\n      [2, 0, 1, 1, 0, 1, 0],\n      [2, 0, 1, 1, 0, 2, 0],\n      [2, 0, 2, 1, 3, 2, 0],\n      [2, 0, 2, 0x21, 3, 1, 1]\n    ];\n\n    var _TYPE_NAMES_MAP = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 };\n\n    var _UNICODE_RANGES_MAP = {\n      0: 0,\n      5: 1,\n      6: 2,\n      7: 3,\n      0x20: 4,\n      0xfb: 5,\n      0xfe: 6,\n      0xff: 7\n    };\n\n    var _SWAP_TABLE = [\n      \"\\u0028\",\n      \"\\u0029\",\n      \"\\u0028\",\n      \"\\u003C\",\n      \"\\u003E\",\n      \"\\u003C\",\n      \"\\u005B\",\n      \"\\u005D\",\n      \"\\u005B\",\n      \"\\u007B\",\n      \"\\u007D\",\n      \"\\u007B\",\n      \"\\u00AB\",\n      \"\\u00BB\",\n      \"\\u00AB\",\n      \"\\u2039\",\n      \"\\u203A\",\n      \"\\u2039\",\n      \"\\u2045\",\n      \"\\u2046\",\n      \"\\u2045\",\n      \"\\u207D\",\n      \"\\u207E\",\n      \"\\u207D\",\n      \"\\u208D\",\n      \"\\u208E\",\n      \"\\u208D\",\n      \"\\u2264\",\n      \"\\u2265\",\n      \"\\u2264\",\n      \"\\u2329\",\n      \"\\u232A\",\n      \"\\u2329\",\n      \"\\uFE59\",\n      \"\\uFE5A\",\n      \"\\uFE59\",\n      \"\\uFE5B\",\n      \"\\uFE5C\",\n      \"\\uFE5B\",\n      \"\\uFE5D\",\n      \"\\uFE5E\",\n      \"\\uFE5D\",\n      \"\\uFE64\",\n      \"\\uFE65\",\n      \"\\uFE64\"\n    ];\n\n    var _LTR_RANGES_REG_EXPR = new RegExp(\n      /^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/\n    );\n\n    var _lastArabic = false,\n      _hasUbatAl,\n      _hasUbatB,\n      _hasUbatS,\n      DIR_LTR = 0,\n      DIR_RTL = 1,\n      _isInVisual,\n      _isInRtl,\n      _isOutVisual,\n      _isOutRtl,\n      _isSymmetricSwapping,\n      _dir = DIR_LTR;\n\n    this.__bidiEngine__ = {};\n\n    var _init = function(text, sourceToTargetMap) {\n      if (sourceToTargetMap) {\n        for (var i = 0; i < text.length; i++) {\n          sourceToTargetMap[i] = i;\n        }\n      }\n      if (_isInRtl === undefined) {\n        _isInRtl = _isContextualDirRtl(text);\n      }\n      if (_isOutRtl === undefined) {\n        _isOutRtl = _isContextualDirRtl(text);\n      }\n    };\n\n    // for reference see 3.2 in http://unicode.org/reports/tr9/\n    //\n    var _getCharType = function(ch) {\n      var charCode = ch.charCodeAt(),\n        range = charCode >> 8,\n        rangeIdx = _UNICODE_RANGES_MAP[range];\n\n      if (rangeIdx !== undefined) {\n        return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xff)];\n      } else if (range === 0xfc || range === 0xfd) {\n        return \"AL\";\n      } else if (_LTR_RANGES_REG_EXPR.test(range)) {\n        //unlikely case\n        return \"L\";\n      } else if (range === 8) {\n        // even less likely\n        return \"R\";\n      }\n      return \"N\"; //undefined type, mark as neutral\n    };\n\n    var _isContextualDirRtl = function(text) {\n      for (var i = 0, charType; i < text.length; i++) {\n        charType = _getCharType(text.charAt(i));\n        if (charType === \"L\") {\n          return false;\n        } else if (charType === \"R\") {\n          return true;\n        }\n      }\n      return false;\n    };\n\n    // for reference see 3.3.4 & 3.3.5 in http://unicode.org/reports/tr9/\n    //\n    var _resolveCharType = function(chars, types, resolvedTypes, index) {\n      var cType = types[index],\n        wType,\n        nType,\n        i,\n        len;\n      switch (cType) {\n        case \"L\":\n        case \"R\":\n          _lastArabic = false;\n          break;\n        case \"N\":\n        case \"AN\":\n          break;\n\n        case \"EN\":\n          if (_lastArabic) {\n            cType = \"AN\";\n          }\n          break;\n\n        case \"AL\":\n          _lastArabic = true;\n          _hasUbatAl = true;\n          cType = \"R\";\n          break;\n\n        case \"WS\":\n          cType = \"N\";\n          break;\n\n        case \"CS\":\n          if (\n            index < 1 ||\n            index + 1 >= types.length ||\n            ((wType = resolvedTypes[index - 1]) !== \"EN\" && wType !== \"AN\") ||\n            ((nType = types[index + 1]) !== \"EN\" && nType !== \"AN\")\n          ) {\n            cType = \"N\";\n          } else if (_lastArabic) {\n            nType = \"AN\";\n          }\n          cType = nType === wType ? nType : \"N\";\n          break;\n\n        case \"ES\":\n          wType = index > 0 ? resolvedTypes[index - 1] : \"B\";\n          cType =\n            wType === \"EN\" &&\n            index + 1 < types.length &&\n            types[index + 1] === \"EN\"\n              ? \"EN\"\n              : \"N\";\n          break;\n\n        case \"ET\":\n          if (index > 0 && resolvedTypes[index - 1] === \"EN\") {\n            cType = \"EN\";\n            break;\n          } else if (_lastArabic) {\n            cType = \"N\";\n            break;\n          }\n          i = index + 1;\n          len = types.length;\n          while (i < len && types[i] === \"ET\") {\n            i++;\n          }\n          if (i < len && types[i] === \"EN\") {\n            cType = \"EN\";\n          } else {\n            cType = \"N\";\n          }\n          break;\n\n        case \"NSM\":\n          if (_isInVisual && !_isInRtl) {\n            //V->L\n            len = types.length;\n            i = index + 1;\n            while (i < len && types[i] === \"NSM\") {\n              i++;\n            }\n            if (i < len) {\n              var c = chars[index];\n              var rtlCandidate = (c >= 0x0591 && c <= 0x08ff) || c === 0xfb1e;\n              wType = types[i];\n              if (rtlCandidate && (wType === \"R\" || wType === \"AL\")) {\n                cType = \"R\";\n                break;\n              }\n            }\n          }\n          if (index < 1 || (wType = types[index - 1]) === \"B\") {\n            cType = \"N\";\n          } else {\n            cType = resolvedTypes[index - 1];\n          }\n          break;\n\n        case \"B\":\n          _lastArabic = false;\n          _hasUbatB = true;\n          cType = _dir;\n          break;\n\n        case \"S\":\n          _hasUbatS = true;\n          cType = \"N\";\n          break;\n\n        case \"LRE\":\n        case \"RLE\":\n        case \"LRO\":\n        case \"RLO\":\n        case \"PDF\":\n          _lastArabic = false;\n          break;\n        case \"BN\":\n          cType = \"N\";\n          break;\n      }\n      return cType;\n    };\n\n    var _handleUbatS = function(types, levels, length) {\n      for (var i = 0; i < length; i++) {\n        if (types[i] === \"S\") {\n          levels[i] = _dir;\n          for (var j = i - 1; j >= 0; j--) {\n            if (types[j] === \"WS\") {\n              levels[j] = _dir;\n            } else {\n              break;\n            }\n          }\n        }\n      }\n    };\n\n    var _invertString = function(text, sourceToTargetMap, levels) {\n      var charArray = text.split(\"\");\n      if (levels) {\n        _computeLevels(charArray, levels, { hiLevel: _dir });\n      }\n      charArray.reverse();\n      sourceToTargetMap && sourceToTargetMap.reverse();\n      return charArray.join(\"\");\n    };\n\n    // For reference see 3.3 in http://unicode.org/reports/tr9/\n    //\n    var _computeLevels = function(chars, levels, params) {\n      var action,\n        condition,\n        i,\n        index,\n        newLevel,\n        prevState,\n        condPos = -1,\n        len = chars.length,\n        newState = 0,\n        resolvedTypes = [],\n        stateTable = _dir ? _STATE_TABLE_RTL : _STATE_TABLE_LTR,\n        types = [];\n\n      _lastArabic = false;\n      _hasUbatAl = false;\n      _hasUbatB = false;\n      _hasUbatS = false;\n      for (i = 0; i < len; i++) {\n        types[i] = _getCharType(chars[i]);\n      }\n      for (index = 0; index < len; index++) {\n        prevState = newState;\n        resolvedTypes[index] = _resolveCharType(\n          chars,\n          types,\n          resolvedTypes,\n          index\n        );\n        newState = stateTable[prevState][_TYPE_NAMES_MAP[resolvedTypes[index]]];\n        action = newState & 0xf0;\n        newState &= 0x0f;\n        levels[index] = newLevel = stateTable[newState][5];\n        if (action > 0) {\n          if (action === 0x10) {\n            for (i = condPos; i < index; i++) {\n              levels[i] = 1;\n            }\n            condPos = -1;\n          } else {\n            condPos = -1;\n          }\n        }\n        condition = stateTable[newState][6];\n        if (condition) {\n          if (condPos === -1) {\n            condPos = index;\n          }\n        } else {\n          if (condPos > -1) {\n            for (i = condPos; i < index; i++) {\n              levels[i] = newLevel;\n            }\n            condPos = -1;\n          }\n        }\n        if (types[index] === \"B\") {\n          levels[index] = 0;\n        }\n        params.hiLevel |= newLevel;\n      }\n      if (_hasUbatS) {\n        _handleUbatS(types, levels, len);\n      }\n    };\n\n    // for reference see 3.4 in http://unicode.org/reports/tr9/\n    //\n    var _invertByLevel = function(\n      level,\n      charArray,\n      sourceToTargetMap,\n      levels,\n      params\n    ) {\n      if (params.hiLevel < level) {\n        return;\n      }\n      if (level === 1 && _dir === DIR_RTL && !_hasUbatB) {\n        charArray.reverse();\n        sourceToTargetMap && sourceToTargetMap.reverse();\n        return;\n      }\n      var ch,\n        high,\n        end,\n        low,\n        len = charArray.length,\n        start = 0;\n\n      while (start < len) {\n        if (levels[start] >= level) {\n          end = start + 1;\n          while (end < len && levels[end] >= level) {\n            end++;\n          }\n          for (low = start, high = end - 1; low < high; low++, high--) {\n            ch = charArray[low];\n            charArray[low] = charArray[high];\n            charArray[high] = ch;\n            if (sourceToTargetMap) {\n              ch = sourceToTargetMap[low];\n              sourceToTargetMap[low] = sourceToTargetMap[high];\n              sourceToTargetMap[high] = ch;\n            }\n          }\n          start = end;\n        }\n        start++;\n      }\n    };\n\n    // for reference see 7 & BD16 in http://unicode.org/reports/tr9/\n    //\n    var _symmetricSwap = function(charArray, levels, params) {\n      if (params.hiLevel !== 0 && _isSymmetricSwapping) {\n        for (var i = 0, index; i < charArray.length; i++) {\n          if (levels[i] === 1) {\n            index = _SWAP_TABLE.indexOf(charArray[i]);\n            if (index >= 0) {\n              charArray[i] = _SWAP_TABLE[index + 1];\n            }\n          }\n        }\n      }\n    };\n\n    var _reorder = function(text, sourceToTargetMap, levels) {\n      var charArray = text.split(\"\"),\n        params = { hiLevel: _dir };\n\n      if (!levels) {\n        levels = [];\n      }\n      _computeLevels(charArray, levels, params);\n      _symmetricSwap(charArray, levels, params);\n      _invertByLevel(DIR_RTL + 1, charArray, sourceToTargetMap, levels, params);\n      _invertByLevel(DIR_RTL, charArray, sourceToTargetMap, levels, params);\n      return charArray.join(\"\");\n    };\n\n    // doBidiReorder( text, sourceToTargetMap, levels )\n    // Performs Bidi reordering by implementing Unicode Bidi algorithm.\n    // Returns reordered string\n    // @text [String]:\n    // - input string to be reordered, this is input parameter\n    // $sourceToTargetMap [Array] (optional)\n    // - resultant mapping between input and output strings, this is output parameter\n    // $levels [Array] (optional)\n    // - array of calculated Bidi levels, , this is output parameter\n    this.__bidiEngine__.doBidiReorder = function(\n      text,\n      sourceToTargetMap,\n      levels\n    ) {\n      _init(text, sourceToTargetMap);\n      if (!_isInVisual && _isOutVisual && !_isOutRtl) {\n        // LLTR->VLTR, LRTL->VLTR\n        _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n        text = _reorder(text, sourceToTargetMap, levels);\n      } else if (_isInVisual && _isOutVisual && _isInRtl ^ _isOutRtl) {\n        // VRTL->VLTR, VLTR->VRTL\n        _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n        text = _invertString(text, sourceToTargetMap, levels);\n      } else if (!_isInVisual && _isOutVisual && _isOutRtl) {\n        // LLTR->VRTL, LRTL->VRTL\n        _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n        text = _reorder(text, sourceToTargetMap, levels);\n        text = _invertString(text, sourceToTargetMap);\n      } else if (_isInVisual && !_isInRtl && !_isOutVisual && !_isOutRtl) {\n        // VLTR->LLTR\n        _dir = DIR_LTR;\n        text = _reorder(text, sourceToTargetMap, levels);\n      } else if (_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n        // VLTR->LRTL, VRTL->LLTR\n        text = _invertString(text, sourceToTargetMap);\n        if (_isInRtl) {\n          //LLTR -> VLTR\n          _dir = DIR_LTR;\n          text = _reorder(text, sourceToTargetMap, levels);\n        } else {\n          //LRTL -> VRTL\n          _dir = DIR_RTL;\n          text = _reorder(text, sourceToTargetMap, levels);\n          text = _invertString(text, sourceToTargetMap);\n        }\n      } else if (_isInVisual && _isInRtl && !_isOutVisual && _isOutRtl) {\n        //  VRTL->LRTL\n        _dir = DIR_RTL;\n        text = _reorder(text, sourceToTargetMap, levels);\n        text = _invertString(text, sourceToTargetMap);\n      } else if (!_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n        // LRTL->LLTR, LLTR->LRTL\n        var isSymmetricSwappingOrig = _isSymmetricSwapping;\n        if (_isInRtl) {\n          //LRTL->LLTR\n          _dir = DIR_RTL;\n          text = _reorder(text, sourceToTargetMap, levels);\n          _dir = DIR_LTR;\n          _isSymmetricSwapping = false;\n          text = _reorder(text, sourceToTargetMap, levels);\n          _isSymmetricSwapping = isSymmetricSwappingOrig;\n        } else {\n          //LLTR->LRTL\n          _dir = DIR_LTR;\n          text = _reorder(text, sourceToTargetMap, levels);\n          text = _invertString(text, sourceToTargetMap);\n          _dir = DIR_RTL;\n          _isSymmetricSwapping = false;\n          text = _reorder(text, sourceToTargetMap, levels);\n          _isSymmetricSwapping = isSymmetricSwappingOrig;\n          text = _invertString(text, sourceToTargetMap);\n        }\n      }\n      return text;\n    };\n\n    /**\n     * @name setOptions( options )\n     * @function\n     * Sets options for Bidi conversion\n     * @param {Object}:\n     * - isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n     * - isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)\n     * - isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n     * - isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)\n     * - isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),\n     */\n    this.__bidiEngine__.setOptions = function(options) {\n      if (options) {\n        _isInVisual = options.isInputVisual;\n        _isOutVisual = options.isOutputVisual;\n        _isInRtl = options.isInputRtl;\n        _isOutRtl = options.isOutputRtl;\n        _isSymmetricSwapping = options.isSymmetricSwapping;\n      }\n    };\n\n    this.__bidiEngine__.setOptions(options);\n    return this.__bidiEngine__;\n  };\n\n  var _bidiUnicodeTypes = bidiUnicodeTypes;\n\n  var bidiEngine = new jsPDF.__bidiEngine__({ isInputVisual: true });\n\n  var bidiEngineFunction = function(args) {\n    var text = args.text;\n    var x = args.x;\n    var y = args.y;\n    var options = args.options || {};\n    var mutex = args.mutex || {};\n    var lang = options.lang;\n    var tmpText = [];\n\n    options.isInputVisual =\n      typeof options.isInputVisual === \"boolean\" ? options.isInputVisual : true;\n    bidiEngine.setOptions(options);\n\n    if (Object.prototype.toString.call(text) === \"[object Array]\") {\n      var i = 0;\n      tmpText = [];\n      for (i = 0; i < text.length; i += 1) {\n        if (Object.prototype.toString.call(text[i]) === \"[object Array]\") {\n          tmpText.push([\n            bidiEngine.doBidiReorder(text[i][0]),\n            text[i][1],\n            text[i][2]\n          ]);\n        } else {\n          tmpText.push([bidiEngine.doBidiReorder(text[i])]);\n        }\n      }\n      args.text = tmpText;\n    } else {\n      args.text = bidiEngine.doBidiReorder(text);\n    }\n    bidiEngine.setOptions({ isInputVisual: true });\n  };\n\n  jsPDF.API.events.push([\"postProcessText\", bidiEngineFunction]);\n})(jsPDF);\n", "/* eslint-disable no-control-regex */\n/************************************************\n * Title : custom font                          *\n * Start Data : 2017. 01. 22.                   *\n * Comment : TEXT API                           *\n ************************************************/\n\n/******************************\n * jsPDF extension API Design *\n * ****************************/\n\nimport { jsPDF } from \"../jspdf.js\";\n\njsPDF.API.TTFFont = (function() {\n  /************************************************************************/\n  /* function : open                                                       */\n  /* comment : Decode the encoded ttf content and create a TTFFont object. */\n  /************************************************************************/\n  TTFFont.open = function(file) {\n    return new TTFFont(file);\n  };\n  /***************************************************************/\n  /* function : TTFFont gernerator                               */\n  /* comment : Decode TTF contents are parsed, Data,             */\n  /* Subset object is created, and registerTTF function is called.*/\n  /***************************************************************/\n  function TTFFont(rawData) {\n    var data;\n    this.rawData = rawData;\n    data = this.contents = new Data(rawData);\n    this.contents.pos = 4;\n    if (data.readString(4) === \"ttcf\") {\n      throw new Error(\"TTCF not supported.\");\n    } else {\n      data.pos = 0;\n      this.parse();\n      this.subset = new Subset(this);\n      this.registerTTF();\n    }\n  }\n  /********************************************************/\n  /* function : parse                                     */\n  /* comment : TTF Parses the file contents by each table.*/\n  /********************************************************/\n  TTFFont.prototype.parse = function() {\n    this.directory = new Directory(this.contents);\n    this.head = new HeadTable(this);\n    this.name = new NameTable(this);\n    this.cmap = new CmapTable(this);\n    this.toUnicode = {};\n    this.hhea = new HheaTable(this);\n    this.maxp = new MaxpTable(this);\n    this.hmtx = new HmtxTable(this);\n    this.post = new PostTable(this);\n    this.os2 = new OS2Table(this);\n    this.loca = new LocaTable(this);\n    this.glyf = new GlyfTable(this);\n    this.ascender =\n      (this.os2.exists && this.os2.ascender) || this.hhea.ascender;\n    this.decender =\n      (this.os2.exists && this.os2.decender) || this.hhea.decender;\n    this.lineGap = (this.os2.exists && this.os2.lineGap) || this.hhea.lineGap;\n    return (this.bbox = [\n      this.head.xMin,\n      this.head.yMin,\n      this.head.xMax,\n      this.head.yMax\n    ]);\n  };\n  /***************************************************************/\n  /* function : registerTTF                                      */\n  /* comment : Get the value to assign pdf font descriptors.     */\n  /***************************************************************/\n  TTFFont.prototype.registerTTF = function() {\n    var e, hi, low, raw, _ref;\n    this.scaleFactor = 1000.0 / this.head.unitsPerEm;\n    this.bbox = function() {\n      var _i, _len, _ref, _results;\n      _ref = this.bbox;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        e = _ref[_i];\n        _results.push(Math.round(e * this.scaleFactor));\n      }\n      return _results;\n    }.call(this);\n    this.stemV = 0;\n    if (this.post.exists) {\n      raw = this.post.italic_angle;\n      hi = raw >> 16;\n      low = raw & 0xff;\n      if ((hi & 0x8000) !== 0) {\n        hi = -((hi ^ 0xffff) + 1);\n      }\n      this.italicAngle = +(\"\" + hi + \".\" + low);\n    } else {\n      this.italicAngle = 0;\n    }\n    this.ascender = Math.round(this.ascender * this.scaleFactor);\n    this.decender = Math.round(this.decender * this.scaleFactor);\n    this.lineGap = Math.round(this.lineGap * this.scaleFactor);\n    this.capHeight = (this.os2.exists && this.os2.capHeight) || this.ascender;\n    this.xHeight = (this.os2.exists && this.os2.xHeight) || 0;\n    this.familyClass = ((this.os2.exists && this.os2.familyClass) || 0) >> 8;\n    this.isSerif =\n      (_ref = this.familyClass) === 1 ||\n      _ref === 2 ||\n      _ref === 3 ||\n      _ref === 4 ||\n      _ref === 5 ||\n      _ref === 7;\n    this.isScript = this.familyClass === 10;\n    this.flags = 0;\n    if (this.post.isFixedPitch) {\n      this.flags |= 1 << 0;\n    }\n    if (this.isSerif) {\n      this.flags |= 1 << 1;\n    }\n    if (this.isScript) {\n      this.flags |= 1 << 3;\n    }\n    if (this.italicAngle !== 0) {\n      this.flags |= 1 << 6;\n    }\n    this.flags |= 1 << 5;\n    if (!this.cmap.unicode) {\n      throw new Error(\"No unicode cmap for font\");\n    }\n  };\n  TTFFont.prototype.characterToGlyph = function(character) {\n    var _ref;\n    return (\n      ((_ref = this.cmap.unicode) != null ? _ref.codeMap[character] : void 0) ||\n      0\n    );\n  };\n  TTFFont.prototype.widthOfGlyph = function(glyph) {\n    var scale;\n    scale = 1000.0 / this.head.unitsPerEm;\n    return this.hmtx.forGlyph(glyph).advance * scale;\n  };\n  TTFFont.prototype.widthOfString = function(string, size, charSpace) {\n    var charCode, i, scale, width, _ref;\n    string = \"\" + string;\n    width = 0;\n    for (\n      i = 0, _ref = string.length;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      charCode = string.charCodeAt(i);\n      width +=\n        this.widthOfGlyph(this.characterToGlyph(charCode)) +\n          charSpace * (1000 / size) || 0;\n    }\n    scale = size / 1000;\n    return width * scale;\n  };\n  TTFFont.prototype.lineHeight = function(size, includeGap) {\n    var gap;\n    if (includeGap == null) {\n      includeGap = false;\n    }\n    gap = includeGap ? this.lineGap : 0;\n    return ((this.ascender + gap - this.decender) / 1000) * size;\n  };\n  return TTFFont;\n})();\n\n/************************************************************************************************/\n/* function : Data                                                                              */\n/* comment : The ttf data decoded and stored in an array is read and written to the Data object.*/\n/************************************************************************************************/\nvar Data = (function() {\n  function Data(data) {\n    this.data = data != null ? data : [];\n    this.pos = 0;\n    this.length = this.data.length;\n  }\n  Data.prototype.readByte = function() {\n    return this.data[this.pos++];\n  };\n  Data.prototype.writeByte = function(byte) {\n    return (this.data[this.pos++] = byte);\n  };\n  Data.prototype.readUInt32 = function() {\n    var b1, b2, b3, b4;\n    b1 = this.readByte() * 0x1000000;\n    b2 = this.readByte() << 16;\n    b3 = this.readByte() << 8;\n    b4 = this.readByte();\n    return b1 + b2 + b3 + b4;\n  };\n  Data.prototype.writeUInt32 = function(val) {\n    this.writeByte((val >>> 24) & 0xff);\n    this.writeByte((val >> 16) & 0xff);\n    this.writeByte((val >> 8) & 0xff);\n    return this.writeByte(val & 0xff);\n  };\n  Data.prototype.readInt32 = function() {\n    var int;\n    int = this.readUInt32();\n    if (int >= 0x80000000) {\n      return int - 0x100000000;\n    } else {\n      return int;\n    }\n  };\n  Data.prototype.writeInt32 = function(val) {\n    if (val < 0) {\n      val += 0x100000000;\n    }\n    return this.writeUInt32(val);\n  };\n  Data.prototype.readUInt16 = function() {\n    var b1, b2;\n    b1 = this.readByte() << 8;\n    b2 = this.readByte();\n    return b1 | b2;\n  };\n  Data.prototype.writeUInt16 = function(val) {\n    this.writeByte((val >> 8) & 0xff);\n    return this.writeByte(val & 0xff);\n  };\n  Data.prototype.readInt16 = function() {\n    var int;\n    int = this.readUInt16();\n    if (int >= 0x8000) {\n      return int - 0x10000;\n    } else {\n      return int;\n    }\n  };\n  Data.prototype.writeInt16 = function(val) {\n    if (val < 0) {\n      val += 0x10000;\n    }\n    return this.writeUInt16(val);\n  };\n  Data.prototype.readString = function(length) {\n    var i, ret;\n    ret = [];\n    for (\n      i = 0;\n      0 <= length ? i < length : i > length;\n      i = 0 <= length ? ++i : --i\n    ) {\n      ret[i] = String.fromCharCode(this.readByte());\n    }\n    return ret.join(\"\");\n  };\n  Data.prototype.writeString = function(val) {\n    var i, _ref, _results;\n    _results = [];\n    for (\n      i = 0, _ref = val.length;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      _results.push(this.writeByte(val.charCodeAt(i)));\n    }\n    return _results;\n  };\n  /*Data.prototype.stringAt = function (pos, length) {\n            this.pos = pos;\n            return this.readString(length);\n        };*/\n  Data.prototype.readShort = function() {\n    return this.readInt16();\n  };\n  Data.prototype.writeShort = function(val) {\n    return this.writeInt16(val);\n  };\n  Data.prototype.readLongLong = function() {\n    var b1, b2, b3, b4, b5, b6, b7, b8;\n    b1 = this.readByte();\n    b2 = this.readByte();\n    b3 = this.readByte();\n    b4 = this.readByte();\n    b5 = this.readByte();\n    b6 = this.readByte();\n    b7 = this.readByte();\n    b8 = this.readByte();\n    if (b1 & 0x80) {\n      return (\n        ((b1 ^ 0xff) * 0x100000000000000 +\n          (b2 ^ 0xff) * 0x1000000000000 +\n          (b3 ^ 0xff) * 0x10000000000 +\n          (b4 ^ 0xff) * 0x100000000 +\n          (b5 ^ 0xff) * 0x1000000 +\n          (b6 ^ 0xff) * 0x10000 +\n          (b7 ^ 0xff) * 0x100 +\n          (b8 ^ 0xff) +\n          1) *\n        -1\n      );\n    }\n    return (\n      b1 * 0x100000000000000 +\n      b2 * 0x1000000000000 +\n      b3 * 0x10000000000 +\n      b4 * 0x100000000 +\n      b5 * 0x1000000 +\n      b6 * 0x10000 +\n      b7 * 0x100 +\n      b8\n    );\n  };\n  Data.prototype.writeLongLong = function(val) {\n    var high, low;\n    high = Math.floor(val / 0x100000000);\n    low = val & 0xffffffff;\n    this.writeByte((high >> 24) & 0xff);\n    this.writeByte((high >> 16) & 0xff);\n    this.writeByte((high >> 8) & 0xff);\n    this.writeByte(high & 0xff);\n    this.writeByte((low >> 24) & 0xff);\n    this.writeByte((low >> 16) & 0xff);\n    this.writeByte((low >> 8) & 0xff);\n    return this.writeByte(low & 0xff);\n  };\n  Data.prototype.readInt = function() {\n    return this.readInt32();\n  };\n  Data.prototype.writeInt = function(val) {\n    return this.writeInt32(val);\n  };\n  /*Data.prototype.slice = function (start, end) {\n            return this.data.slice(start, end);\n        };*/\n  Data.prototype.read = function(bytes) {\n    var buf, i;\n    buf = [];\n    for (\n      i = 0;\n      0 <= bytes ? i < bytes : i > bytes;\n      i = 0 <= bytes ? ++i : --i\n    ) {\n      buf.push(this.readByte());\n    }\n    return buf;\n  };\n  Data.prototype.write = function(bytes) {\n    var byte, i, _len, _results;\n    _results = [];\n    for (i = 0, _len = bytes.length; i < _len; i++) {\n      byte = bytes[i];\n      _results.push(this.writeByte(byte));\n    }\n    return _results;\n  };\n  return Data;\n})();\n\nvar Directory = (function() {\n  var checksum;\n\n  /*****************************************************************************************************/\n  /* function : Directory generator                                                                    */\n  /* comment : Initialize the offset, tag, length, and checksum for each table for the font to be used.*/\n  /*****************************************************************************************************/\n  function Directory(data) {\n    var entry, i, _ref;\n    this.scalarType = data.readInt();\n    this.tableCount = data.readShort();\n    this.searchRange = data.readShort();\n    this.entrySelector = data.readShort();\n    this.rangeShift = data.readShort();\n    this.tables = {};\n    for (\n      i = 0, _ref = this.tableCount;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      entry = {\n        tag: data.readString(4),\n        checksum: data.readInt(),\n        offset: data.readInt(),\n        length: data.readInt()\n      };\n      this.tables[entry.tag] = entry;\n    }\n  }\n  /********************************************************************************************************/\n  /* function : encode                                                                                    */\n  /* comment : It encodes and stores the font table object and information used for the directory object. */\n  /********************************************************************************************************/\n  Directory.prototype.encode = function(tables) {\n    var adjustment,\n      directory,\n      directoryLength,\n      entrySelector,\n      headOffset,\n      log2,\n      offset,\n      rangeShift,\n      searchRange,\n      sum,\n      table,\n      tableCount,\n      tableData,\n      tag;\n    tableCount = Object.keys(tables).length;\n    log2 = Math.log(2);\n    searchRange = Math.floor(Math.log(tableCount) / log2) * 16;\n    entrySelector = Math.floor(searchRange / log2);\n    rangeShift = tableCount * 16 - searchRange;\n    directory = new Data();\n    directory.writeInt(this.scalarType);\n    directory.writeShort(tableCount);\n    directory.writeShort(searchRange);\n    directory.writeShort(entrySelector);\n    directory.writeShort(rangeShift);\n    directoryLength = tableCount * 16;\n    offset = directory.pos + directoryLength;\n    headOffset = null;\n    tableData = [];\n    for (tag in tables) {\n      table = tables[tag];\n      directory.writeString(tag);\n      directory.writeInt(checksum(table));\n      directory.writeInt(offset);\n      directory.writeInt(table.length);\n      tableData = tableData.concat(table);\n      if (tag === \"head\") {\n        headOffset = offset;\n      }\n      offset += table.length;\n      while (offset % 4) {\n        tableData.push(0);\n        offset++;\n      }\n    }\n    directory.write(tableData);\n    sum = checksum(directory.data);\n    adjustment = 0xb1b0afba - sum;\n    directory.pos = headOffset + 8;\n    directory.writeUInt32(adjustment);\n    return directory.data;\n  };\n  /***************************************************************/\n  /* function : checksum                                         */\n  /* comment : Duplicate the table for the tag.                  */\n  /***************************************************************/\n  checksum = function(data) {\n    var i, sum, tmp, _ref;\n    data = __slice.call(data);\n    while (data.length % 4) {\n      data.push(0);\n    }\n    tmp = new Data(data);\n    sum = 0;\n    for (i = 0, _ref = data.length; i < _ref; i = i += 4) {\n      sum += tmp.readUInt32();\n    }\n    return sum & 0xffffffff;\n  };\n  return Directory;\n})();\n\nvar Table,\n  __hasProp = {}.hasOwnProperty,\n  __extends = function(child, parent) {\n    for (var key in parent) {\n      if (__hasProp.call(parent, key)) child[key] = parent[key];\n    }\n\n    function ctor() {\n      this.constructor = child;\n    }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n    child.__super__ = parent.prototype;\n    return child;\n  };\n\n/***************************************************************/\n/* function : Table                                            */\n/* comment : Save info for each table, and parse the table.    */\n/***************************************************************/\nTable = (function() {\n  function Table(file) {\n    var info;\n    this.file = file;\n    info = this.file.directory.tables[this.tag];\n    this.exists = !!info;\n    if (info) {\n      (this.offset = info.offset), (this.length = info.length);\n      this.parse(this.file.contents);\n    }\n  }\n  Table.prototype.parse = function() {};\n  Table.prototype.encode = function() {};\n  Table.prototype.raw = function() {\n    if (!this.exists) {\n      return null;\n    }\n    this.file.contents.pos = this.offset;\n    return this.file.contents.read(this.length);\n  };\n  return Table;\n})();\n\nvar HeadTable = (function(_super) {\n  __extends(HeadTable, _super);\n\n  function HeadTable() {\n    return HeadTable.__super__.constructor.apply(this, arguments);\n  }\n  HeadTable.prototype.tag = \"head\";\n  HeadTable.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readInt();\n    this.revision = data.readInt();\n    this.checkSumAdjustment = data.readInt();\n    this.magicNumber = data.readInt();\n    this.flags = data.readShort();\n    this.unitsPerEm = data.readShort();\n    this.created = data.readLongLong();\n    this.modified = data.readLongLong();\n    this.xMin = data.readShort();\n    this.yMin = data.readShort();\n    this.xMax = data.readShort();\n    this.yMax = data.readShort();\n    this.macStyle = data.readShort();\n    this.lowestRecPPEM = data.readShort();\n    this.fontDirectionHint = data.readShort();\n    this.indexToLocFormat = data.readShort();\n    return (this.glyphDataFormat = data.readShort());\n  };\n  HeadTable.prototype.encode = function(indexToLocFormat) {\n    var table;\n    table = new Data();\n    table.writeInt(this.version);\n    table.writeInt(this.revision);\n    table.writeInt(this.checkSumAdjustment);\n    table.writeInt(this.magicNumber);\n    table.writeShort(this.flags);\n    table.writeShort(this.unitsPerEm);\n    table.writeLongLong(this.created);\n    table.writeLongLong(this.modified);\n    table.writeShort(this.xMin);\n    table.writeShort(this.yMin);\n    table.writeShort(this.xMax);\n    table.writeShort(this.yMax);\n    table.writeShort(this.macStyle);\n    table.writeShort(this.lowestRecPPEM);\n    table.writeShort(this.fontDirectionHint);\n    table.writeShort(indexToLocFormat);\n    table.writeShort(this.glyphDataFormat);\n    return table.data;\n  };\n  return HeadTable;\n})(Table);\n\n/************************************************************************************/\n/* function : CmapEntry                                                             */\n/* comment : Cmap Initializes and encodes object information (required by pdf spec).*/\n/************************************************************************************/\nvar CmapEntry = (function() {\n  function CmapEntry(data, offset) {\n    var code,\n      count,\n      endCode,\n      glyphId,\n      glyphIds,\n      i,\n      idDelta,\n      idRangeOffset,\n      index,\n      saveOffset,\n      segCount,\n      segCountX2,\n      start,\n      startCode,\n      tail,\n      _j,\n      _k,\n      _len;\n    this.platformID = data.readUInt16();\n    this.encodingID = data.readShort();\n    this.offset = offset + data.readInt();\n    saveOffset = data.pos;\n    data.pos = this.offset;\n    this.format = data.readUInt16();\n    this.length = data.readUInt16();\n    this.language = data.readUInt16();\n    this.isUnicode =\n      (this.platformID === 3 && this.encodingID === 1 && this.format === 4) ||\n      (this.platformID === 0 && this.format === 4);\n    this.codeMap = {};\n    switch (this.format) {\n      case 0:\n        for (i = 0; i < 256; ++i) {\n          this.codeMap[i] = data.readByte();\n        }\n        break;\n      case 4:\n        segCountX2 = data.readUInt16();\n        segCount = segCountX2 / 2;\n        data.pos += 6;\n        endCode = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        data.pos += 2;\n        startCode = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        idDelta = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        idRangeOffset = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        count = (this.length - data.pos + this.offset) / 2;\n        glyphIds = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= count ? _j < count : _j > count;\n            i = 0 <= count ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        for (i = _j = 0, _len = endCode.length; _j < _len; i = ++_j) {\n          tail = endCode[i];\n          start = startCode[i];\n          for (\n            code = _k = start;\n            start <= tail ? _k <= tail : _k >= tail;\n            code = start <= tail ? ++_k : --_k\n          ) {\n            if (idRangeOffset[i] === 0) {\n              glyphId = code + idDelta[i];\n            } else {\n              index = idRangeOffset[i] / 2 + (code - start) - (segCount - i);\n              glyphId = glyphIds[index] || 0;\n              if (glyphId !== 0) {\n                glyphId += idDelta[i];\n              }\n            }\n            this.codeMap[code] = glyphId & 0xffff;\n          }\n        }\n    }\n    data.pos = saveOffset;\n  }\n  CmapEntry.encode = function(charmap, encoding) {\n    var charMap,\n      code,\n      codeMap,\n      codes,\n      delta,\n      deltas,\n      diff,\n      endCode,\n      endCodes,\n      entrySelector,\n      glyphIDs,\n      i,\n      id,\n      indexes,\n      last,\n      map,\n      nextID,\n      offset,\n      old,\n      rangeOffsets,\n      rangeShift,\n      searchRange,\n      segCount,\n      segCountX2,\n      startCode,\n      startCodes,\n      startGlyph,\n      subtable,\n      _i,\n      _j,\n      _k,\n      _l,\n      _len,\n      _len1,\n      _len2,\n      _len3,\n      _len4,\n      _len5,\n      _len6,\n      _len7,\n      _m,\n      _n,\n      _name,\n      _o,\n      _p,\n      _q;\n    subtable = new Data();\n    codes = Object.keys(charmap).sort(function(a, b) {\n      return a - b;\n    });\n    switch (encoding) {\n      case \"macroman\":\n        id = 0;\n        indexes = (function() {\n          var _results = [];\n          for (i = 0; i < 256; ++i) {\n            _results.push(0);\n          }\n          return _results;\n        })();\n        map = {\n          0: 0\n        };\n        codeMap = {};\n        for (_i = 0, _len = codes.length; _i < _len; _i++) {\n          code = codes[_i];\n          if (map[(_name = charmap[code])] == null) {\n            map[_name] = ++id;\n          }\n          codeMap[code] = {\n            old: charmap[code],\n            new: map[charmap[code]]\n          };\n          indexes[code] = map[charmap[code]];\n        }\n        subtable.writeUInt16(1);\n        subtable.writeUInt16(0);\n        subtable.writeUInt32(12);\n        subtable.writeUInt16(0);\n        subtable.writeUInt16(262);\n        subtable.writeUInt16(0);\n        subtable.write(indexes);\n        return {\n          charMap: codeMap,\n          subtable: subtable.data,\n          maxGlyphID: id + 1\n        };\n      case \"unicode\":\n        startCodes = [];\n        endCodes = [];\n        nextID = 0;\n        map = {};\n        charMap = {};\n        last = diff = null;\n        for (_j = 0, _len1 = codes.length; _j < _len1; _j++) {\n          code = codes[_j];\n          old = charmap[code];\n          if (map[old] == null) {\n            map[old] = ++nextID;\n          }\n          charMap[code] = {\n            old: old,\n            new: map[old]\n          };\n          delta = map[old] - code;\n          if (last == null || delta !== diff) {\n            if (last) {\n              endCodes.push(last);\n            }\n            startCodes.push(code);\n            diff = delta;\n          }\n          last = code;\n        }\n        if (last) {\n          endCodes.push(last);\n        }\n        endCodes.push(0xffff);\n        startCodes.push(0xffff);\n        segCount = startCodes.length;\n        segCountX2 = segCount * 2;\n        searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2);\n        entrySelector = Math.log(searchRange / 2) / Math.LN2;\n        rangeShift = 2 * segCount - searchRange;\n        deltas = [];\n        rangeOffsets = [];\n        glyphIDs = [];\n        for (i = _k = 0, _len2 = startCodes.length; _k < _len2; i = ++_k) {\n          startCode = startCodes[i];\n          endCode = endCodes[i];\n          if (startCode === 0xffff) {\n            deltas.push(0);\n            rangeOffsets.push(0);\n            break;\n          }\n          startGlyph = charMap[startCode][\"new\"];\n          if (startCode - startGlyph >= 0x8000) {\n            deltas.push(0);\n            rangeOffsets.push(2 * (glyphIDs.length + segCount - i));\n            for (\n              code = _l = startCode;\n              startCode <= endCode ? _l <= endCode : _l >= endCode;\n              code = startCode <= endCode ? ++_l : --_l\n            ) {\n              glyphIDs.push(charMap[code][\"new\"]);\n            }\n          } else {\n            deltas.push(startGlyph - startCode);\n            rangeOffsets.push(0);\n          }\n        }\n        subtable.writeUInt16(3);\n        subtable.writeUInt16(1);\n        subtable.writeUInt32(12);\n        subtable.writeUInt16(4);\n        subtable.writeUInt16(16 + segCount * 8 + glyphIDs.length * 2);\n        subtable.writeUInt16(0);\n        subtable.writeUInt16(segCountX2);\n        subtable.writeUInt16(searchRange);\n        subtable.writeUInt16(entrySelector);\n        subtable.writeUInt16(rangeShift);\n        for (_m = 0, _len3 = endCodes.length; _m < _len3; _m++) {\n          code = endCodes[_m];\n          subtable.writeUInt16(code);\n        }\n        subtable.writeUInt16(0);\n        for (_n = 0, _len4 = startCodes.length; _n < _len4; _n++) {\n          code = startCodes[_n];\n          subtable.writeUInt16(code);\n        }\n        for (_o = 0, _len5 = deltas.length; _o < _len5; _o++) {\n          delta = deltas[_o];\n          subtable.writeUInt16(delta);\n        }\n        for (_p = 0, _len6 = rangeOffsets.length; _p < _len6; _p++) {\n          offset = rangeOffsets[_p];\n          subtable.writeUInt16(offset);\n        }\n        for (_q = 0, _len7 = glyphIDs.length; _q < _len7; _q++) {\n          id = glyphIDs[_q];\n          subtable.writeUInt16(id);\n        }\n        return {\n          charMap: charMap,\n          subtable: subtable.data,\n          maxGlyphID: nextID + 1\n        };\n    }\n  };\n  return CmapEntry;\n})();\n\nvar CmapTable = (function(_super) {\n  __extends(CmapTable, _super);\n\n  function CmapTable() {\n    return CmapTable.__super__.constructor.apply(this, arguments);\n  }\n  CmapTable.prototype.tag = \"cmap\";\n  CmapTable.prototype.parse = function(data) {\n    var entry, i, tableCount;\n    data.pos = this.offset;\n    this.version = data.readUInt16();\n    tableCount = data.readUInt16();\n    this.tables = [];\n    this.unicode = null;\n    for (\n      i = 0;\n      0 <= tableCount ? i < tableCount : i > tableCount;\n      i = 0 <= tableCount ? ++i : --i\n    ) {\n      entry = new CmapEntry(data, this.offset);\n      this.tables.push(entry);\n      if (entry.isUnicode) {\n        if (this.unicode == null) {\n          this.unicode = entry;\n        }\n      }\n    }\n    return true;\n  };\n  /*************************************************************************/\n  /* function : encode                                                     */\n  /* comment : Encode the cmap table corresponding to the input character. */\n  /*************************************************************************/\n  CmapTable.encode = function(charmap, encoding) {\n    var result, table;\n    if (encoding == null) {\n      encoding = \"macroman\";\n    }\n    result = CmapEntry.encode(charmap, encoding);\n    table = new Data();\n    table.writeUInt16(0);\n    table.writeUInt16(1);\n    result.table = table.data.concat(result.subtable);\n    return result;\n  };\n  return CmapTable;\n})(Table);\n\nvar HheaTable = (function(_super) {\n  __extends(HheaTable, _super);\n\n  function HheaTable() {\n    return HheaTable.__super__.constructor.apply(this, arguments);\n  }\n  HheaTable.prototype.tag = \"hhea\";\n  HheaTable.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readInt();\n    this.ascender = data.readShort();\n    this.decender = data.readShort();\n    this.lineGap = data.readShort();\n    this.advanceWidthMax = data.readShort();\n    this.minLeftSideBearing = data.readShort();\n    this.minRightSideBearing = data.readShort();\n    this.xMaxExtent = data.readShort();\n    this.caretSlopeRise = data.readShort();\n    this.caretSlopeRun = data.readShort();\n    this.caretOffset = data.readShort();\n    data.pos += 4 * 2;\n    this.metricDataFormat = data.readShort();\n    return (this.numberOfMetrics = data.readUInt16());\n  };\n  /*HheaTable.prototype.encode = function (ids) {\n            var i, table, _i, _ref;\n            table = new Data;\n            table.writeInt(this.version);\n            table.writeShort(this.ascender);\n            table.writeShort(this.decender);\n            table.writeShort(this.lineGap);\n            table.writeShort(this.advanceWidthMax);\n            table.writeShort(this.minLeftSideBearing);\n            table.writeShort(this.minRightSideBearing);\n            table.writeShort(this.xMaxExtent);\n            table.writeShort(this.caretSlopeRise);\n            table.writeShort(this.caretSlopeRun);\n            table.writeShort(this.caretOffset);\n            for (i = _i = 0, _ref = 4 * 2; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n                table.writeByte(0);\n            }\n            table.writeShort(this.metricDataFormat);\n            table.writeUInt16(ids.length);\n            return table.data;\n        };*/\n  return HheaTable;\n})(Table);\n\nvar OS2Table = (function(_super) {\n  __extends(OS2Table, _super);\n\n  function OS2Table() {\n    return OS2Table.__super__.constructor.apply(this, arguments);\n  }\n  OS2Table.prototype.tag = \"OS/2\";\n  OS2Table.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readUInt16();\n    this.averageCharWidth = data.readShort();\n    this.weightClass = data.readUInt16();\n    this.widthClass = data.readUInt16();\n    this.type = data.readShort();\n    this.ySubscriptXSize = data.readShort();\n    this.ySubscriptYSize = data.readShort();\n    this.ySubscriptXOffset = data.readShort();\n    this.ySubscriptYOffset = data.readShort();\n    this.ySuperscriptXSize = data.readShort();\n    this.ySuperscriptYSize = data.readShort();\n    this.ySuperscriptXOffset = data.readShort();\n    this.ySuperscriptYOffset = data.readShort();\n    this.yStrikeoutSize = data.readShort();\n    this.yStrikeoutPosition = data.readShort();\n    this.familyClass = data.readShort();\n    this.panose = (function() {\n      var i, _results;\n      _results = [];\n      for (i = 0; i < 10; ++i) {\n        _results.push(data.readByte());\n      }\n      return _results;\n    })();\n    this.charRange = (function() {\n      var i, _results;\n      _results = [];\n      for (i = 0; i < 4; ++i) {\n        _results.push(data.readInt());\n      }\n      return _results;\n    })();\n    this.vendorID = data.readString(4);\n    this.selection = data.readShort();\n    this.firstCharIndex = data.readShort();\n    this.lastCharIndex = data.readShort();\n    if (this.version > 0) {\n      this.ascent = data.readShort();\n      this.descent = data.readShort();\n      this.lineGap = data.readShort();\n      this.winAscent = data.readShort();\n      this.winDescent = data.readShort();\n      this.codePageRange = (function() {\n        var i, _results;\n        _results = [];\n        for (i = 0; i < 2; i = ++i) {\n          _results.push(data.readInt());\n        }\n        return _results;\n      })();\n      if (this.version > 1) {\n        this.xHeight = data.readShort();\n        this.capHeight = data.readShort();\n        this.defaultChar = data.readShort();\n        this.breakChar = data.readShort();\n        return (this.maxContext = data.readShort());\n      }\n    }\n  };\n  /*OS2Table.prototype.encode = function () {\n            return this.raw();\n        };*/\n  return OS2Table;\n})(Table);\n\nvar PostTable = (function(_super) {\n  var POSTSCRIPT_GLYPHS;\n  __extends(PostTable, _super);\n\n  function PostTable() {\n    return PostTable.__super__.constructor.apply(this, arguments);\n  }\n  PostTable.prototype.tag = \"post\";\n  PostTable.prototype.parse = function(data) {\n    var length, numberOfGlyphs, _results;\n    data.pos = this.offset;\n    this.format = data.readInt();\n    this.italicAngle = data.readInt();\n    this.underlinePosition = data.readShort();\n    this.underlineThickness = data.readShort();\n    this.isFixedPitch = data.readInt();\n    this.minMemType42 = data.readInt();\n    this.maxMemType42 = data.readInt();\n    this.minMemType1 = data.readInt();\n    this.maxMemType1 = data.readInt();\n    switch (this.format) {\n      case 0x00010000:\n        break;\n      case 0x00020000:\n        numberOfGlyphs = data.readUInt16();\n        this.glyphNameIndex = [];\n        var i;\n        for (\n          i = 0;\n          0 <= numberOfGlyphs ? i < numberOfGlyphs : i > numberOfGlyphs;\n          i = 0 <= numberOfGlyphs ? ++i : --i\n        ) {\n          this.glyphNameIndex.push(data.readUInt16());\n        }\n        this.names = [];\n        _results = [];\n        while (data.pos < this.offset + this.length) {\n          length = data.readByte();\n          _results.push(this.names.push(data.readString(length)));\n        }\n        return _results;\n      case 0x00025000:\n        numberOfGlyphs = data.readUInt16();\n        return (this.offsets = data.read(numberOfGlyphs));\n      case 0x00030000:\n        break;\n      case 0x00040000:\n        return (this.map = function() {\n          var _j, _ref, _results1;\n          _results1 = [];\n          for (\n            i = _j = 0, _ref = this.file.maxp.numGlyphs;\n            0 <= _ref ? _j < _ref : _j > _ref;\n            i = 0 <= _ref ? ++_j : --_j\n          ) {\n            _results1.push(data.readUInt32());\n          }\n          return _results1;\n        }.call(this));\n    }\n  };\n  /*PostTable.prototype.glyphFor = function (code) {\n            var index;\n            switch (this.format) {\n            case 0x00010000:\n                return POSTSCRIPT_GLYPHS[code] || '.notdef';\n            case 0x00020000:\n                index = this.glyphNameIndex[code];\n                if (index <= 257) {\n                    return POSTSCRIPT_GLYPHS[index];\n                }\n                else {\n                    return this.names[index - 258] || '.notdef';\n                }\n                break;\n            case 0x00025000:\n                return POSTSCRIPT_GLYPHS[code + this.offsets[code]] || '.notdef';\n            case 0x00030000:\n                return '.notdef';\n            case 0x00040000:\n                return this.map[code] || 0xFFFF;\n            }\n        };*/\n  /*PostTable.prototype.encode = function (mapping) {\n            var id, index, indexes, position, post, raw, string, strings, table, _i, _j, _k, _len, _len1, _len2;\n            if (!this.exists) {\n                return null;\n            }\n            raw = this.raw();\n            if (this.format === 0x00030000) {\n                return raw;\n            }\n            table = new Data(raw.slice(0, 32));\n            table.writeUInt32(0x00020000);\n            table.pos = 32;\n            indexes = [];\n            strings = [];\n            for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n                id = mapping[_i];\n                post = this.glyphFor(id);\n                position = POSTSCRIPT_GLYPHS.indexOf(post);\n                if (position !== -1) {\n                    indexes.push(position);\n                }\n                else {\n                    indexes.push(257 + strings.length);\n                    strings.push(post);\n                }\n            }\n            table.writeUInt16(Object.keys(mapping).length);\n            for (_j = 0, _len1 = indexes.length; _j < _len1; _j++) {\n                index = indexes[_j];\n                table.writeUInt16(index);\n            }\n            for (_k = 0, _len2 = strings.length; _k < _len2; _k++) {\n                string = strings[_k];\n                table.writeByte(string.length);\n                table.writeString(string);\n            }\n            return table.data;\n        };*/\n  POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\\nzero one two three four five six seven eight nine colon semicolon less equal greater\\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\\nbracketleft backslash bracketright asciicircum underscore grave\\na b c d e f g h i j k l m n o p q r s t u v w x y z\\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\\nsterling section bullet paragraph germandbls registered copyright trademark acute\\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\\nCacute cacute Ccaron ccaron dcroat\".split(\n    /\\s+/g\n  );\n  return PostTable;\n})(Table);\n\n/*********************************************************************************************************/\n/* function : NameEntry                                                                                  */\n/* comment : Store copyright information, platformID, encodingID, and languageID in the NameEntry object.*/\n/*********************************************************************************************************/\nvar NameEntry = (function() {\n  function NameEntry(raw, entry) {\n    this.raw = raw;\n    this.length = raw.length;\n    this.platformID = entry.platformID;\n    this.encodingID = entry.encodingID;\n    this.languageID = entry.languageID;\n  }\n  return NameEntry;\n})();\n\nvar NameTable = (function(_super) {\n  var subsetTag;\n  __extends(NameTable, _super);\n\n  function NameTable() {\n    return NameTable.__super__.constructor.apply(this, arguments);\n  }\n  NameTable.prototype.tag = \"name\";\n  NameTable.prototype.parse = function(data) {\n    var count,\n      entries,\n      entry,\n      i,\n      name,\n      stringOffset,\n      strings,\n      text,\n      _j,\n      _len,\n      _name;\n    data.pos = this.offset;\n    data.readShort(); //format\n    count = data.readShort();\n    stringOffset = data.readShort();\n    entries = [];\n    for (\n      i = 0;\n      0 <= count ? i < count : i > count;\n      i = 0 <= count ? ++i : --i\n    ) {\n      entries.push({\n        platformID: data.readShort(),\n        encodingID: data.readShort(),\n        languageID: data.readShort(),\n        nameID: data.readShort(),\n        length: data.readShort(),\n        offset: this.offset + stringOffset + data.readShort()\n      });\n    }\n    strings = {};\n    for (i = _j = 0, _len = entries.length; _j < _len; i = ++_j) {\n      entry = entries[i];\n      data.pos = entry.offset;\n      text = data.readString(entry.length);\n      name = new NameEntry(text, entry);\n      if (strings[(_name = entry.nameID)] == null) {\n        strings[_name] = [];\n      }\n      strings[entry.nameID].push(name);\n    }\n    this.strings = strings;\n    this.copyright = strings[0];\n    this.fontFamily = strings[1];\n    this.fontSubfamily = strings[2];\n    this.uniqueSubfamily = strings[3];\n    this.fontName = strings[4];\n    this.version = strings[5];\n    try {\n      this.postscriptName = strings[6][0].raw.replace(\n        /[\\x00-\\x19\\x80-\\xff]/g,\n        \"\"\n      );\n    } catch (e) {\n      this.postscriptName = strings[4][0].raw.replace(\n        /[\\x00-\\x19\\x80-\\xff]/g,\n        \"\"\n      );\n    }\n    this.trademark = strings[7];\n    this.manufacturer = strings[8];\n    this.designer = strings[9];\n    this.description = strings[10];\n    this.vendorUrl = strings[11];\n    this.designerUrl = strings[12];\n    this.license = strings[13];\n    this.licenseUrl = strings[14];\n    this.preferredFamily = strings[15];\n    this.preferredSubfamily = strings[17];\n    this.compatibleFull = strings[18];\n    return (this.sampleText = strings[19]);\n  };\n  subsetTag = \"AAAAAA\";\n  /*NameTable.prototype.encode = function () {\n            var id, list, nameID, nameTable, postscriptName, strCount, strTable, string, strings, table, val, _i, _len, _ref;\n            strings = {};\n            _ref = this.strings;\n            for (id in _ref) {\n                val = _ref[id];\n                strings[id] = val;\n            }\n            postscriptName = new NameEntry(\"\" + subsetTag + \"+\" + this.postscriptName, {\n                platformID: 1\n                , encodingID: 0\n                , languageID: 0\n            });\n            strings[6] = [postscriptName];\n            subsetTag = successorOf(subsetTag);\n            strCount = 0;\n            for (id in strings) {\n                list = strings[id];\n                if (list != null) {\n                    strCount += list.length;\n                }\n            }\n            table = new Data;\n            strTable = new Data;\n            table.writeShort(0);\n            table.writeShort(strCount);\n            table.writeShort(6 + 12 * strCount);\n            for (nameID in strings) {\n                list = strings[nameID];\n                if (list != null) {\n                    for (_i = 0, _len = list.length; _i < _len; _i++) {\n                        string = list[_i];\n                        table.writeShort(string.platformID);\n                        table.writeShort(string.encodingID);\n                        table.writeShort(string.languageID);\n                        table.writeShort(nameID);\n                        table.writeShort(string.length);\n                        table.writeShort(strTable.pos);\n                        strTable.writeString(string.raw);\n                    }\n                }\n            }\n            return nameTable = {\n                postscriptName: postscriptName.raw\n                , table: table.data.concat(strTable.data)\n            };\n        };*/\n  return NameTable;\n})(Table);\n\nvar MaxpTable = (function(_super) {\n  __extends(MaxpTable, _super);\n\n  function MaxpTable() {\n    return MaxpTable.__super__.constructor.apply(this, arguments);\n  }\n  MaxpTable.prototype.tag = \"maxp\";\n  MaxpTable.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readInt();\n    this.numGlyphs = data.readUInt16();\n    this.maxPoints = data.readUInt16();\n    this.maxContours = data.readUInt16();\n    this.maxCompositePoints = data.readUInt16();\n    this.maxComponentContours = data.readUInt16();\n    this.maxZones = data.readUInt16();\n    this.maxTwilightPoints = data.readUInt16();\n    this.maxStorage = data.readUInt16();\n    this.maxFunctionDefs = data.readUInt16();\n    this.maxInstructionDefs = data.readUInt16();\n    this.maxStackElements = data.readUInt16();\n    this.maxSizeOfInstructions = data.readUInt16();\n    this.maxComponentElements = data.readUInt16();\n    return (this.maxComponentDepth = data.readUInt16());\n  };\n  /*MaxpTable.prototype.encode = function (ids) {\n            var table;\n            table = new Data;\n            table.writeInt(this.version);\n            table.writeUInt16(ids.length);\n            table.writeUInt16(this.maxPoints);\n            table.writeUInt16(this.maxContours);\n            table.writeUInt16(this.maxCompositePoints);\n            table.writeUInt16(this.maxComponentContours);\n            table.writeUInt16(this.maxZones);\n            table.writeUInt16(this.maxTwilightPoints);\n            table.writeUInt16(this.maxStorage);\n            table.writeUInt16(this.maxFunctionDefs);\n            table.writeUInt16(this.maxInstructionDefs);\n            table.writeUInt16(this.maxStackElements);\n            table.writeUInt16(this.maxSizeOfInstructions);\n            table.writeUInt16(this.maxComponentElements);\n            table.writeUInt16(this.maxComponentDepth);\n            return table.data;\n        };*/\n  return MaxpTable;\n})(Table);\n\nvar HmtxTable = (function(_super) {\n  __extends(HmtxTable, _super);\n\n  function HmtxTable() {\n    return HmtxTable.__super__.constructor.apply(this, arguments);\n  }\n  HmtxTable.prototype.tag = \"hmtx\";\n  HmtxTable.prototype.parse = function(data) {\n    var i, last, lsbCount, m, _j, _ref, _results;\n    data.pos = this.offset;\n    this.metrics = [];\n    for (\n      i = 0, _ref = this.file.hhea.numberOfMetrics;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      this.metrics.push({\n        advance: data.readUInt16(),\n        lsb: data.readInt16()\n      });\n    }\n    lsbCount = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics;\n    this.leftSideBearings = (function() {\n      var _j, _results;\n      _results = [];\n      for (\n        i = _j = 0;\n        0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n        i = 0 <= lsbCount ? ++_j : --_j\n      ) {\n        _results.push(data.readInt16());\n      }\n      return _results;\n    })();\n    this.widths = function() {\n      var _j, _len, _ref1, _results;\n      _ref1 = this.metrics;\n      _results = [];\n      for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n        m = _ref1[_j];\n        _results.push(m.advance);\n      }\n      return _results;\n    }.call(this);\n    last = this.widths[this.widths.length - 1];\n    _results = [];\n    for (\n      i = _j = 0;\n      0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n      i = 0 <= lsbCount ? ++_j : --_j\n    ) {\n      _results.push(this.widths.push(last));\n    }\n    return _results;\n  };\n  /***************************************************************/\n  /* function : forGlyph                                         */\n  /* comment : Returns the advance width and lsb for this glyph. */\n  /***************************************************************/\n  HmtxTable.prototype.forGlyph = function(id) {\n    if (id in this.metrics) {\n      return this.metrics[id];\n    }\n    return {\n      advance: this.metrics[this.metrics.length - 1].advance,\n      lsb: this.leftSideBearings[id - this.metrics.length]\n    };\n  };\n  /*HmtxTable.prototype.encode = function (mapping) {\n            var id, metric, table, _i, _len;\n            table = new Data;\n            for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n                id = mapping[_i];\n                metric = this.forGlyph(id);\n                table.writeUInt16(metric.advance);\n                table.writeUInt16(metric.lsb);\n            }\n            return table.data;\n        };*/\n  return HmtxTable;\n})(Table);\n\nvar __slice = [].slice;\n\nvar GlyfTable = (function(_super) {\n  __extends(GlyfTable, _super);\n\n  function GlyfTable() {\n    return GlyfTable.__super__.constructor.apply(this, arguments);\n  }\n  GlyfTable.prototype.tag = \"glyf\";\n  GlyfTable.prototype.parse = function() {\n    return (this.cache = {});\n  };\n  GlyfTable.prototype.glyphFor = function(id) {\n    var data,\n      index,\n      length,\n      loca,\n      numberOfContours,\n      raw,\n      xMax,\n      xMin,\n      yMax,\n      yMin;\n    if (id in this.cache) {\n      return this.cache[id];\n    }\n    loca = this.file.loca;\n    data = this.file.contents;\n    index = loca.indexOf(id);\n    length = loca.lengthOf(id);\n    if (length === 0) {\n      return (this.cache[id] = null);\n    }\n    data.pos = this.offset + index;\n    raw = new Data(data.read(length));\n    numberOfContours = raw.readShort();\n    xMin = raw.readShort();\n    yMin = raw.readShort();\n    xMax = raw.readShort();\n    yMax = raw.readShort();\n    if (numberOfContours === -1) {\n      this.cache[id] = new CompoundGlyph(raw, xMin, yMin, xMax, yMax);\n    } else {\n      this.cache[id] = new SimpleGlyph(\n        raw,\n        numberOfContours,\n        xMin,\n        yMin,\n        xMax,\n        yMax\n      );\n    }\n    return this.cache[id];\n  };\n  GlyfTable.prototype.encode = function(glyphs, mapping, old2new) {\n    var glyph, id, offsets, table, _i, _len;\n    table = [];\n    offsets = [];\n    for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n      id = mapping[_i];\n      glyph = glyphs[id];\n      offsets.push(table.length);\n      if (glyph) {\n        table = table.concat(glyph.encode(old2new));\n      }\n    }\n    offsets.push(table.length);\n    return {\n      table: table,\n      offsets: offsets\n    };\n  };\n  return GlyfTable;\n})(Table);\n\nvar SimpleGlyph = (function() {\n  /**************************************************************************/\n  /* function : SimpleGlyph                                                 */\n  /* comment : Stores raw, xMin, yMin, xMax, and yMax values for this glyph.*/\n  /**************************************************************************/\n  function SimpleGlyph(raw, numberOfContours, xMin, yMin, xMax, yMax) {\n    this.raw = raw;\n    this.numberOfContours = numberOfContours;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n    this.compound = false;\n  }\n  SimpleGlyph.prototype.encode = function() {\n    return this.raw.data;\n  };\n  return SimpleGlyph;\n})();\n\nvar CompoundGlyph = (function() {\n  var ARG_1_AND_2_ARE_WORDS,\n    MORE_COMPONENTS,\n    WE_HAVE_AN_X_AND_Y_SCALE,\n    WE_HAVE_A_SCALE,\n    WE_HAVE_A_TWO_BY_TWO,\n    WE_HAVE_INSTRUCTIONS;\n  ARG_1_AND_2_ARE_WORDS = 0x0001;\n  WE_HAVE_A_SCALE = 0x0008;\n  MORE_COMPONENTS = 0x0020;\n  WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n  WE_HAVE_A_TWO_BY_TWO = 0x0080;\n  WE_HAVE_INSTRUCTIONS = 0x0100;\n\n  /********************************************************************************************************************/\n  /* function : CompoundGlypg generator                                                                               */\n  /* comment : It stores raw, xMin, yMin, xMax, yMax, glyph id, and glyph offset for the corresponding compound glyph.*/\n  /********************************************************************************************************************/\n  function CompoundGlyph(raw, xMin, yMin, xMax, yMax) {\n    var data, flags;\n    this.raw = raw;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n    this.compound = true;\n    this.glyphIDs = [];\n    this.glyphOffsets = [];\n    data = this.raw;\n    while (true) {\n      flags = data.readShort();\n      this.glyphOffsets.push(data.pos);\n      this.glyphIDs.push(data.readUInt16());\n      if (!(flags & MORE_COMPONENTS)) {\n        break;\n      }\n      if (flags & ARG_1_AND_2_ARE_WORDS) {\n        data.pos += 4;\n      } else {\n        data.pos += 2;\n      }\n      if (flags & WE_HAVE_A_TWO_BY_TWO) {\n        data.pos += 8;\n      } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n        data.pos += 4;\n      } else if (flags & WE_HAVE_A_SCALE) {\n        data.pos += 2;\n      }\n    }\n  }\n  /****************************************************************************************************************/\n  /* function : CompoundGlypg encode                                                                              */\n  /* comment : After creating a table for the characters you typed, you call directory.encode to encode the table.*/\n  /****************************************************************************************************************/\n  CompoundGlyph.prototype.encode = function() {\n    var i, result, _len, _ref;\n    result = new Data(__slice.call(this.raw.data));\n    _ref = this.glyphIDs;\n    for (i = 0, _len = _ref.length; i < _len; ++i) {\n      result.pos = this.glyphOffsets[i];\n    }\n    return result.data;\n  };\n  return CompoundGlyph;\n})();\n\nvar LocaTable = (function(_super) {\n  __extends(LocaTable, _super);\n\n  function LocaTable() {\n    return LocaTable.__super__.constructor.apply(this, arguments);\n  }\n  LocaTable.prototype.tag = \"loca\";\n  LocaTable.prototype.parse = function(data) {\n    var format, i;\n    data.pos = this.offset;\n    format = this.file.head.indexToLocFormat;\n    if (format === 0) {\n      return (this.offsets = function() {\n        var _ref, _results;\n        _results = [];\n        for (i = 0, _ref = this.length; i < _ref; i += 2) {\n          _results.push(data.readUInt16() * 2);\n        }\n        return _results;\n      }.call(this));\n    } else {\n      return (this.offsets = function() {\n        var _ref, _results;\n        _results = [];\n        for (i = 0, _ref = this.length; i < _ref; i += 4) {\n          _results.push(data.readUInt32());\n        }\n        return _results;\n      }.call(this));\n    }\n  };\n  LocaTable.prototype.indexOf = function(id) {\n    return this.offsets[id];\n  };\n  LocaTable.prototype.lengthOf = function(id) {\n    return this.offsets[id + 1] - this.offsets[id];\n  };\n  LocaTable.prototype.encode = function(offsets, activeGlyphs) {\n    var LocaTable = new Uint32Array(this.offsets.length);\n    var glyfPtr = 0;\n    var listGlyf = 0;\n    for (var k = 0; k < LocaTable.length; ++k) {\n      LocaTable[k] = glyfPtr;\n      if (listGlyf < activeGlyphs.length && activeGlyphs[listGlyf] == k) {\n        ++listGlyf;\n        LocaTable[k] = glyfPtr;\n        var start = this.offsets[k];\n        var len = this.offsets[k + 1] - start;\n        if (len > 0) {\n          glyfPtr += len;\n        }\n      }\n    }\n    var newLocaTable = new Array(LocaTable.length * 4);\n    for (var j = 0; j < LocaTable.length; ++j) {\n      newLocaTable[4 * j + 3] = LocaTable[j] & 0x000000ff;\n      newLocaTable[4 * j + 2] = (LocaTable[j] & 0x0000ff00) >> 8;\n      newLocaTable[4 * j + 1] = (LocaTable[j] & 0x00ff0000) >> 16;\n      newLocaTable[4 * j] = (LocaTable[j] & 0xff000000) >> 24;\n    }\n    return newLocaTable;\n  };\n  return LocaTable;\n})(Table);\n\n/************************************************************************************/\n/* function : invert                                                                */\n/* comment : Change the object's (key: value) to create an object with (value: key).*/\n/************************************************************************************/\nvar invert = function(object) {\n  var key, ret, val;\n  ret = {};\n  for (key in object) {\n    val = object[key];\n    ret[val] = key;\n  }\n  return ret;\n};\n\n/*var successorOf = function (input) {\n        var added, alphabet, carry, i, index, isUpperCase, last, length, next, result;\n        alphabet = 'abcdefghijklmnopqrstuvwxyz';\n        length = alphabet.length;\n        result = input;\n        i = input.length;\n        while (i >= 0) {\n            last = input.charAt(--i);\n            if (isNaN(last)) {\n                index = alphabet.indexOf(last.toLowerCase());\n                if (index === -1) {\n                    next = last;\n                    carry = true;\n                }\n                else {\n                    next = alphabet.charAt((index + 1) % length);\n                    isUpperCase = last === last.toUpperCase();\n                    if (isUpperCase) {\n                        next = next.toUpperCase();\n                    }\n                    carry = index + 1 >= length;\n                    if (carry && i === 0) {\n                        added = isUpperCase ? 'A' : 'a';\n                        result = added + next + result.slice(1);\n                        break;\n                    }\n                }\n            }\n            else {\n                next = +last + 1;\n                carry = next > 9;\n                if (carry) {\n                    next = 0;\n                }\n                if (carry && i === 0) {\n                    result = '1' + next + result.slice(1);\n                    break;\n                }\n            }\n            result = result.slice(0, i) + next + result.slice(i + 1);\n            if (!carry) {\n                break;\n            }\n        }\n        return result;\n    };*/\n\nvar Subset = (function() {\n  function Subset(font) {\n    this.font = font;\n    this.subset = {};\n    this.unicodes = {};\n    this.next = 33;\n  }\n  /*Subset.prototype.use = function (character) {\n            var i, _i, _ref;\n            if (typeof character === 'string') {\n                for (i = _i = 0, _ref = character.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n                    this.use(character.charCodeAt(i));\n                }\n                return;\n            }\n            if (!this.unicodes[character]) {\n                this.subset[this.next] = character;\n                return this.unicodes[character] = this.next++;\n            }\n        };*/\n  /*Subset.prototype.encodeText = function (text) {\n            var char, i, string, _i, _ref;\n            string = '';\n            for (i = _i = 0, _ref = text.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n                char = this.unicodes[text.charCodeAt(i)];\n                string += String.fromCharCode(char);\n            }\n            return string;\n        };*/\n  /***************************************************************/\n  /* function : generateCmap                                     */\n  /* comment : Returns the unicode cmap for this font.         */\n  /***************************************************************/\n  Subset.prototype.generateCmap = function() {\n    var mapping, roman, unicode, unicodeCmap, _ref;\n    unicodeCmap = this.font.cmap.tables[0].codeMap;\n    mapping = {};\n    _ref = this.subset;\n    for (roman in _ref) {\n      unicode = _ref[roman];\n      mapping[roman] = unicodeCmap[unicode];\n    }\n    return mapping;\n  };\n  /*Subset.prototype.glyphIDs = function () {\n            var ret, roman, unicode, unicodeCmap, val, _ref;\n            unicodeCmap = this.font.cmap.tables[0].codeMap;\n            ret = [0];\n            _ref = this.subset;\n            for (roman in _ref) {\n                unicode = _ref[roman];\n                val = unicodeCmap[unicode];\n                if ((val != null) && __indexOf.call(ret, val) < 0) {\n                    ret.push(val);\n                }\n            }\n            return ret.sort();\n        };*/\n  /******************************************************************/\n  /* function : glyphsFor                                           */\n  /* comment : Returns simple glyph objects for the input character.*/\n  /******************************************************************/\n  Subset.prototype.glyphsFor = function(glyphIDs) {\n    var additionalIDs, glyph, glyphs, id, _i, _len, _ref;\n    glyphs = {};\n    for (_i = 0, _len = glyphIDs.length; _i < _len; _i++) {\n      id = glyphIDs[_i];\n      glyphs[id] = this.font.glyf.glyphFor(id);\n    }\n    additionalIDs = [];\n    for (id in glyphs) {\n      glyph = glyphs[id];\n      if (glyph != null ? glyph.compound : void 0) {\n        additionalIDs.push.apply(additionalIDs, glyph.glyphIDs);\n      }\n    }\n    if (additionalIDs.length > 0) {\n      _ref = this.glyphsFor(additionalIDs);\n      for (id in _ref) {\n        glyph = _ref[id];\n        glyphs[id] = glyph;\n      }\n    }\n    return glyphs;\n  };\n  /***************************************************************/\n  /* function : encode                                           */\n  /* comment : Encode various tables for the characters you use. */\n  /***************************************************************/\n  Subset.prototype.encode = function(glyID, indexToLocFormat) {\n    var cmap,\n      code,\n      glyf,\n      glyphs,\n      id,\n      ids,\n      loca,\n      new2old,\n      newIDs,\n      nextGlyphID,\n      old2new,\n      oldID,\n      oldIDs,\n      tables,\n      _ref;\n    cmap = CmapTable.encode(this.generateCmap(), \"unicode\");\n    glyphs = this.glyphsFor(glyID);\n    old2new = {\n      0: 0\n    };\n    _ref = cmap.charMap;\n    for (code in _ref) {\n      ids = _ref[code];\n      old2new[ids.old] = ids[\"new\"];\n    }\n    nextGlyphID = cmap.maxGlyphID;\n    for (oldID in glyphs) {\n      if (!(oldID in old2new)) {\n        old2new[oldID] = nextGlyphID++;\n      }\n    }\n    new2old = invert(old2new);\n    newIDs = Object.keys(new2old).sort(function(a, b) {\n      return a - b;\n    });\n    oldIDs = (function() {\n      var _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = newIDs.length; _i < _len; _i++) {\n        id = newIDs[_i];\n        _results.push(new2old[id]);\n      }\n      return _results;\n    })();\n    glyf = this.font.glyf.encode(glyphs, oldIDs, old2new);\n    loca = this.font.loca.encode(glyf.offsets, oldIDs);\n    tables = {\n      cmap: this.font.cmap.raw(),\n      glyf: glyf.table,\n      loca: loca,\n      hmtx: this.font.hmtx.raw(),\n      hhea: this.font.hhea.raw(),\n      maxp: this.font.maxp.raw(),\n      post: this.font.post.raw(),\n      name: this.font.name.raw(),\n      head: this.font.head.encode(indexToLocFormat)\n    };\n    if (this.font.os2.exists) {\n      tables[\"OS/2\"] = this.font.os2.raw();\n    }\n    return this.font.directory.encode(tables);\n  };\n  return Subset;\n})();\n\njsPDF.API.PDFObject = (function() {\n  var pad;\n\n  function PDFObject() {}\n  pad = function(str, length) {\n    return (Array(length + 1).join(\"0\") + str).slice(-length);\n  };\n  /*****************************************************************************/\n  /* function : convert                                                        */\n  /* comment :Converts pdf tag's / FontBBox and array values in / W to strings */\n  /*****************************************************************************/\n  PDFObject.convert = function(object) {\n    var e, items, key, out, val;\n    if (Array.isArray(object)) {\n      items = (function() {\n        var _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = object.length; _i < _len; _i++) {\n          e = object[_i];\n          _results.push(PDFObject.convert(e));\n        }\n        return _results;\n      })().join(\" \");\n      return \"[\" + items + \"]\";\n    } else if (typeof object === \"string\") {\n      return \"/\" + object;\n    } else if (object != null ? object.isString : void 0) {\n      return \"(\" + object + \")\";\n    } else if (object instanceof Date) {\n      return (\n        \"(D:\" +\n        pad(object.getUTCFullYear(), 4) +\n        pad(object.getUTCMonth(), 2) +\n        pad(object.getUTCDate(), 2) +\n        pad(object.getUTCHours(), 2) +\n        pad(object.getUTCMinutes(), 2) +\n        pad(object.getUTCSeconds(), 2) +\n        \"Z)\"\n      );\n    } else if ({}.toString.call(object) === \"[object Object]\") {\n      out = [\"<<\"];\n      for (key in object) {\n        val = object[key];\n        out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n      }\n      out.push(\">>\");\n      return out.join(\"\\n\");\n    } else {\n      return \"\" + object;\n    }\n  };\n  return PDFObject;\n})();\n"],
+  "mappings": "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,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,KAAA,GAAA,MACT,CAAC,OAAQ,KAAA,GAAA,MACT,CAAC,OAAQ,KAAA,GAAA,MACT,CAAC,OAAQ,KAAA,GAAA,MACT,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,KAAA,GAAA,MACT,CAAC,OAAQ,OAAQ,OAAO,KAAA,GAAA,MACxB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,KAAA,GAAA,MACT,CAAC,KAAA,GAAA,MACD,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,KAAA,GAAA,MACzB,CAAC,OAAQ,OAAQ,OAAQ,K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,GACAC,IACAC,IAeAC,IAvBAC,KAAS7sD,KAAKuI,OACdukD,KAAS,IAAIrvD,MAAM,EAAA,GACnBsvD,KAAU,IAAItvD,MAAM,EAAA,GACpBuvD,KAAU,IAAIvvD,MAAM,EAAA,GACpBwvD,KAAW,IAAIxvD,MAAM,EAAA,GAMrByvD,KAAU,IAAIzvD,MAAM,KAAA,GACpB0vD,KAAW,IAAI1vD,MAAM,KAAA,GACrB2vD,KAAkB,IAAI3vD,MAAM,EAAA,GAC5B4vD,KAAK,IAAI5vD,MAAM,EAAA,GACf6vD,KAAU,CAAA,GACVC,KAAU,GACVC,KAAU,GAEVC,KAAM,IAAIhwD,MAAM,EAAA,GAChBiwD,KAAM,IAAIjwD,MAAM,EAAA,GAChBkwD,KAAM,IAAIlwD,MAAM,EAAA,GAChBmwD,KAAM,IAAInwD,MAAM,GAAA,GAChBowD,KAAgB,IAAIpwD,MAAM,IAAA,GAG1BqwD,KAAS,CACX,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EAAA,GAGEC,KAA2B,CAC7B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,CAAA,GAEEC,KAA0B,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAA,GAC7DC,KAA2B,CAC7B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAAA,GAEEC,KAA0B,CAC5B,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,GACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA,GAGEC,KAA6B,CAC/B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,CAAA,GAEEC,KAA4B,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAA,GAC/DC,KAA6B,CAC/B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAAA,GAEEC,KAA4B,CAC9B,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,KACA,IACA,IACA,IACA,KACA,GACA,IACA,IACA,KACA,KACA,KACA,KACA,GACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA;AAAA,WAuKOC,GAAkBC,IAASC,IAAAA;AAAAA,aAC9BC,KAAY,GACZC,KAAe,GACfC,KAAK,IAAInxD,SACJrC,KAAI,GAAGA,MAAK,IAAIA,MAAK;AAAA,eACnBwB,KAAI,GAAGA,MAAK4xD,GAAQpzD,EAAAA,GAAIwB,KAC/BgyD,CAAAA,GAAGH,GAAUE,EAAAA,CAAAA,IAAiB,CAAA,GAC9BC,GAAGH,GAAUE,EAAAA,CAAAA,EAAe,CAAA,IAAKD,IACjCE,GAAGH,GAAUE,EAAAA,CAAAA,EAAe,CAAA,IAAKvzD,IACjCuzD,MACAD;AAEFA,MAAAA,MAAa;IAAA;AAAA,WAERE;EAAAA;AAAAA,WA2DAC,GAAUC,IAAAA;AAAAA,aACbtrD,KAAQsrD,GAAG,CAAA,GACXC,KAASD,GAAG,CAAA,IAAK,GACdC,MAAU,IACXvrD,CAAAA,KAAS,KAAKurD,OAChBxB,MAAW,KAAKC,KAElBuB,MAAAA,EACAvB,KACc,MACG,OAAXD,MACFyB,GAAU,GAAA,GACVA,GAAU,CAAA,KAEVA,GAAUzB,EAAAA,GAEZC,KAAU,GACVD,KAAU;EAAA;AAAA,WAKPyB,GAAUxrD,IAAAA;AAEjB8pD,IAAAA,GAAQ3sD,KAAK6C,EAAAA;EAAAA;AAAAA,WAGNyrD,GAAUzrD,IAAAA;AACjBwrD,IAAAA,GAAWxrD,MAAS,IAAK,GAAA,GACzBwrD,GAAkB,MAARxrD,EAAAA;EAAAA;AAAAA,WAyOH0rD,GAAUC,IAAKC,IAAOC,IAAIC,IAAMC,IAAAA;AAAAA,aAGnC1K,IAFA2K,KAAMD,GAAK,CAAA,GACXE,KAAYF,GAAK,GAAA,GAKjBG,KAAAA,SA5OaryD,IAAM+xD,IAAAA;AAAAA,UACnBO,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAG5B31D,IAkHA41D,IAnHAC,KAAU;AAAA,WAIT71D,KAAI,GAAGA,KAFH,GAAA,EAEaA,IAAG;AACvBo1D,QAAAA,KAAKtyD,GAAK+yD,EAAAA,GACVR,KAAKvyD,GAAK+yD,KAAU,CAAA,GACpBP,KAAKxyD,GAAK+yD,KAAU,CAAA,GACpBN,KAAKzyD,GAAK+yD,KAAU,CAAA,GACpBL,KAAK1yD,GAAK+yD,KAAU,CAAA,GACpBJ,KAAK3yD,GAAK+yD,KAAU,CAAA,GACpBH,KAAK5yD,GAAK+yD,KAAU,CAAA;AAAA,YAGhBC,KAAOV,MAFXO,KAAK7yD,GAAK+yD,KAAU,CAAA,IAGhBE,KAAOX,KAAKO,IACZK,KAAOX,KAAKK,IACZO,KAAOZ,KAAKK,IACZQ,KAAOZ,KAAKG,IACZU,KAAOb,KAAKG,IACZW,KAAOb,KAAKC,IACZa,KAAOd,KAAKC,IAGZc,KAAQR,KAAOM,IACfG,KAAQT,KAAOM,IACfI,KAAQR,KAAOE,IACfO,KAAQT,KAAOE;AAEnBpzD,QAAAA,GAAK+yD,EAAAA,IAAWS,KAAQE,IACxB1zD,GAAK+yD,KAAU,CAAA,IAAKS,KAAQE;AAAAA,YAExBE,KAAuB,eAAjBD,KAAQF;AAClBzzD,QAAAA,GAAK+yD,KAAU,CAAA,IAAKU,KAAQG,IAC5B5zD,GAAK+yD,KAAU,CAAA,IAAKU,KAAQG;AAAAA,YAQxBC,KAAuB,gBAL3BL,KAAQD,KAAOF,OAEfM,KAAQR,KAAOF,MAIXa,KAAK,YAAYN,KAAQK,IACzBE,KAAK,cAAcJ,KAAQE,IAC3BG,KAAa,eAPjBN,KAAQL,KAAOF,KASXc,KAAMhB,KAAOe,IACbE,KAAMjB,KAAOe;AAEjBh0D,QAAAA,GAAK+yD,KAAU,CAAA,IAAKmB,KAAMJ,IAC1B9zD,GAAK+yD,KAAU,CAAA,IAAKmB,KAAMJ,IAC1B9zD,GAAK+yD,KAAU,CAAA,IAAKkB,KAAMF,IAC1B/zD,GAAK+yD,KAAU,CAAA,IAAKkB,KAAMF,IAE1BhB,MAAW;MAAA;AAAA,WAIbA,KAAU,GACL71D,KAAI,GAAGA,KA1DH,GAAA,EA0DaA,IAAG;AACvBo1D,QAAAA,KAAKtyD,GAAK+yD,EAAAA,GACVR,KAAKvyD,GAAK+yD,KAAU,CAAA,GACpBP,KAAKxyD,GAAK+yD,KAAU,EAAA,GACpBN,KAAKzyD,GAAK+yD,KAAU,EAAA,GACpBL,KAAK1yD,GAAK+yD,KAAU,EAAA,GACpBJ,KAAK3yD,GAAK+yD,KAAU,EAAA,GACpBH,KAAK5yD,GAAK+yD,KAAU,EAAA;AAAA,YAGhBoB,KAAS7B,MAFbO,KAAK7yD,GAAK+yD,KAAU,EAAA,IAGhBqB,KAAS9B,KAAKO,IACdwB,KAAS9B,KAAKK,IACd0B,KAAS/B,KAAKK,IACd2B,KAAS/B,KAAKG,IACd6B,KAAShC,KAAKG,IACd8B,KAAShC,KAAKC,IACdgC,KAASjC,KAAKC,IAGdiC,KAAUR,KAASM,IACnBG,KAAUT,KAASM,IACnBI,KAAUR,KAASE,IACnBO,KAAUT,KAASE;AAEvBv0D,QAAAA,GAAK+yD,EAAAA,IAAW4B,KAAUE,IAC1B70D,GAAK+yD,KAAU,EAAA,IAAM4B,KAAUE;AAAAA,YAE3BE,KAA6B,eAArBD,KAAUF;AACtB50D,QAAAA,GAAK+yD,KAAU,EAAA,IAAM6B,KAAUG,IAC/B/0D,GAAK+yD,KAAU,EAAA,IAAM6B,KAAUG;AAAAA,YAQ3BC,KAA6B,gBALjCL,KAAUD,KAASF,OAEnBM,KAAUR,KAASF,MAIfa,KAAO,YAAYN,KAAUK,IAC7BE,KAAO,cAAcJ,KAAUE,IAC/BG,KAAiB,eAPrBN,KAAUL,KAASF,KASfc,KAAQhB,KAASe,IACjBE,KAAQjB,KAASe;AAErBn1D,QAAAA,GAAK+yD,KAAU,EAAA,IAAMsC,KAAQJ,IAC7Bj1D,GAAK+yD,KAAU,EAAA,IAAMsC,KAAQJ,IAC7Bj1D,GAAK+yD,KAAU,CAAA,IAAKqC,KAAQF,IAC5Bl1D,GAAK+yD,KAAU,EAAA,IAAMqC,KAAQF,IAE7BnC;MAAAA;AAAAA,WAKG71D,KAAI,GAAGA,KAjHF,IAAA,EAiHaA,GAErB41D,CAAAA,KAAY9yD,GAAK9C,EAAAA,IAAK60D,GAAM70D,EAAAA,GAC5B6yD,GAAgB7yD,EAAAA,IACd41D,KAAY,IAAOA,KAAY,MAAO,IAAKA,KAAY,MAAO;AAAA,aAG3D/C;IAAAA,EA8GgB+B,IAAKC,EAAAA,GAEnBxyD,KAAI,GAAGA,KAHN,IAAA,EAGiBA,GACzBywD,CAAAA,GAAGS,GAAOlxD,EAAAA,CAAAA,IAAM8yD,GAAO9yD,EAAAA;AAAAA,QAErB+1D,KAAOtF,GAAG,CAAA,IAAKgC;AACnBA,IAAAA,KAAKhC,GAAG,CAAA,GAEI,KAARsF,KACF9D,GAAUS,GAAK,CAAA,CAAA,KAGfT,GAAUS,GAAKnC,GADftI,KAAM,QAAQ8N,EAAAA,CAAAA,CAAAA,GAEd9D,GAAU3B,GAAQrI,EAAAA,CAAAA;AAAAA,aAGhB+N,KAAU,IACPA,KAAU,KAAoB,KAAfvF,GAAGuF,EAAAA,IACvBA,CAAAA;AAAAA,QAGa,KAAXA,GAAAA,QACF/D,GAAUW,EAAAA,GACHH;AAAAA,aAGLwD,IADAt4D,KAAI,GAEDA,MAAKq4D,MAAS;AAAA,eACfE,KAAWv4D,IACC,KAAT8yD,GAAG9yD,EAAAA,KAAWA,MAAKq4D,KAAAA,GACtBr4D;AAAAA,UAEAw4D,KAAWx4D,KAAIu4D;AAAAA,UACfC,MApCI,IAoCa;AACnBF,QAAAA,KAAME,MAAY;AAAA,iBACTC,KAAW,GAAGA,MAAYH,IAAAA,EAAOG,GACxCnE,CAAAA,GAAUY,EAAAA;AACZsD,QAAAA,MAAsB;MAAA;AAExBlO,MAAAA,KAAM,QAAQwI,GAAG9yD,EAAAA,GACjBs0D,GAAUU,IAAMwD,MAAY,KAAK5F,GAAStI,EAAAA,CAAAA,CAAAA,GAC1CgK,GAAU3B,GAAQrI,EAAAA,CAAAA,GAClBtqD;IAAAA;AAAAA,WA5CQ,MA8CNq4D,MACF/D,GAAUW,EAAAA,GAELH;EAAAA;AAAAA,WA8HA4D,GAAWzS,IAAAA;AAAAA,KAClBA,KAAUxgD,KAAKsb,IAAItb,KAAK6mC,IAAI2Z,IAAS,CAAA,GAAI,GAAA,GAErCoM,MAAkBpM,QAAAA,CAAAA,SA1qBC0S,IAAAA;AAAAA,eACnBC,KAAM,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,EAAA,GAGO54D,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAAA,YACvBwB,KAAI8wD,IAAQsG,GAAI54D,EAAAA,IAAK24D,KAAK,MAAM,GAAA;AACpCn3D,QAAAA,KAAIiE,KAAKsb,IAAItb,KAAK6mC,IAAI9qC,IAAG,CAAA,GAAI,GAAA,GAC7B+wD,GAAOgB,GAAOvzD,EAAAA,CAAAA,IAAMwB;MAAAA;AAAAA,eAElBq3D,KAAO,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAC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9/D,KAAIqF,KAAK+C,IAAIvU,GAAEgsE,EAAAA,GACf3+D,KAAIlB,MAAKC,KAAI,KAAKoV;AACpBnV,YAAAA,MAAKO,MAAKR,KAAI,KAAKoV,MAAKxhB,GAAEsnE,IAC1Bj7D,MAAK2e,MAAKO,KAAI,KAAKzI,MAAK9iB,GAAE+rE,IAE1B1/D,MADAA,MAAKoB,MAAK8d,KAAI,KAAKzI,MAAK9iB,GAAEmnE,MACjBv6D,MAAK4U,KAAMwJ,MAAKlI,KAAMrV,MAAKqV,IACpCzW,MAAK,QAAQrM,GAAEwZ,GACfnN,MAAK,QAAQrM,GAAEwhB,GACfnV,MAAK,QAAQrM,GAAE6rE,IAAAA,MACT/sE,OAAOuN,MAAKF,MAAKqV,IAAKnV,MAAKgB,MAAKrN,GAAE8rE,IAAMz/D,MAAK,QAAQrM,GAAEilC;UAAAA;cAE5D54B,CAAAA,KAAI;AACTrM,UAAAA,KAAIqM,KAAI,IAAI;QAAA;MAAA;AAAA,aAGZ,KAAKrM,MAAAA,QACD6M,MAAKA,GAAE6/D,OAAO1sE,KAAIm2E,GAAGrpE,EAAAA,IADV9M;IAAAA;AAAAA,QAIjB8nE,KAAK,IACPmB,KAAK,CACH,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QAAA,GAEFD,KAAK,IACLF,KAAK,IACLM,KAAK,GACLC,KAAK,CACH,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,CAAA;AAEJM,IAAAA,GAAE,cAAc,eAAA,GAChBtsE,GAAKm9E,aAAa,WAAA;AAAA,aACT;IAAA,GAETn9E,GAAKo9E,aAAa,SAASz6E,IAAAA;AAAAA,aAClBA;IAAAA,GAET3C,GAAKq9E,aAAa,SAAS16E,IAAGqM,IAAGQ,IAAAA;AAAAA,aACxBR,GAAEQ,KAAI,CAAA;IAAA,GAEfxP,GAAKs9E,aAAa,SAAS36E,IAAGqM,IAAGQ,IAAAA;AAAAA,aACxBR,GAAEQ,KAAI,CAAA;IAAA,GAEfxP,GAAKu9E,aAAa,SA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IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,GACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,GACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,IACA,IACA,GACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,IACA,GAAA,GAEFmD,KAAK,CACH,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IAAA,GAEFZ,KAAK,GACLyC,KAAK,CACH,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA,GAEFzK,KAAK,CACH,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA,GAEF3B,KAAK,MACL4O,KAAK,CACH,CAAC,KAAK,KAAK,KAAK,CAAA,GAChB,CAAC,KAAK,KAAK,KAAK,KAAK,CAAA,GACrB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,CAAA,GAC1B,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,CAAA,CAAA,GAE1DC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAA,GACxD1J,KAAK,CAAA,IAAK,GAAA,IAAO,GAAA,IAAO,GAAG,GAAG,GAAA,IAAO,GAAA,IAAI,IAAI,IAAO,GAAA,IAAO,GAAA,IAAI,EAAI,G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K,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,CAAA,GAGvD,CACE,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,CAAA,GAGvD,CACE,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,CAAA,GAGvD,CACE,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,CAAA,CAAA,GAIzDE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,G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AAAA,GAAAA,KAI9BxD,eAAetrD,WAAWjzB,EAAAA,GACxBnW,KAAK00F;EAAAA;AAAAA,MAGVS,IA5jFmB,CACrB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,OACA,KACA,OACA,OACA,KACA,OACA,OACA,KACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,KACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA,GA8jBEgD,IAAa,IAAIjiF,GAAMw+E,eAAe,EAAEoD,eAAAA,KAAe,CAAA;AAoC3D5hF,EAAAA,GAAMkB,IAAI2L,OAAOlO,KAAK,CAAC,mBAlCE,SAASL,IAAAA;AAAAA,QAC5B6Z,KAAO7Z,GAAK6Z,MAGZlY,MAFI3B,GAAKnF,GACLmF,GAAK0H,GACC1H,GAAK2B,WAAW,CAAA,IAG1BkiC,MAFQ7jC,GAAKihB,OACNtf,GAAQ8f,MACL,CAAA;AAAA,QAEd9f,GAAQ2hF,gBAC2B,aAAA,OAA1B3hF,GAAQ2hF,iBAA8B3hF,GAAQ2hF,eACvDK,EAAW/uD,WAAWjzB,EAAAA,GAEuB,qBAAzC9B,OAAO/R,UAAU6M,SAAS3O,KAAK6tB,EAAAA,GAA4B;AAAA,UACzD5f,KAAI;AAAA,WACR4pC,KAAU,CAAA,GACL5pC,KAAI,GAAGA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",
+  "names": ["c", "w", "d", "err", "b", "i", "j", "x", "s", "l", "le", "v", "m", "a", "p", "o", "nt", "st", "l", "bt", "s", "t", "i", "c", "n", "lt", "dt", "b", "d", "p", "v", "o", "t2", "a", "i2", "w", "_a", "_b", "it", "j", "k", "m", "st", "a", "b", "o", "k", "td", "dt", "i", "v", "t", "m", "o", "t", "w", "err", "d", "f", "b", "v", "c", "o", "i", "st", "l", "fl", "h", "Deflate", "AsyncDeflate", "Inflate", "c", "n", "dt", "AsyncInflate", "Gzip", "c", "f", "Gunzip", "p", "s", "AsyncGunzip", "Zlib", "c", "f", "a", "d", "Unzlib", "AsyncUnzlib", "Decompress", "n", "AsyncDecompress", "err", "d", "i", "c", "DecodeUTF8", "_a", "s", "EncodeUTF8", "i", "l", "w", "v", "n", "c", "_a", "s", "l", "d", "b", "le", "k", "l", "f", "u", "c", "ce", "fl", "dt", "y", "o", "ZipPassThrough", "ZipDeflate", "AsyncZipDeflate", "err", "Zip", "f", "o", "u", "err", "bt", "l", "_a", "_b", "UnzipPassThrough", "UnzipInflate", "AsyncUnzipInflate", "_", "err", "Unzip", "f", "i", "l", "_a", "u", "err", "dat", "final", "globalObject", "window", "global", "self", "this", "consoleLog", "console", "log", "apply", "arguments", "warn", "str", "call", "error", "download", "url", "name", "opts", "xhr", "XMLHttpRequest", "open", "responseType", "onload", "saveAs", "response", "onerror", "send", "corsEnabled", "e", "status", "click", "node", "dispatchEvent", "MouseEvent", "evt", "document", "createEvent", "initMouseEvent", "atob", "btoa", "_global", "HTMLAnchorElement", "prototype", "blob", "URL", "webkitURL", "a", "createElement", "rel", "href", "origin", "location", "target", "createObjectURL", "setTimeout", "revokeObjectURL", "navigator", "msSaveOrOpenBlob", "autoBom", "_typeof", "test", "type", "Blob", "String", "fromCharCode", "popup", "title", "body", "innerText", "force", "isSafari", "HTMLElement", "safari", "isChromeIOS", "userAgent", "FileReader", "reader", "onloadend", "result", "replace", "readAsDataURL", "RGBColor", "color_string", "channels", "ok", "charAt", "substr", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "feldspar", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgrey", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslateblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "violetred", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "toLowerCase", "color_defs", "re", "example", "process", "bits", "parseInt", "i", "length", "processor", "exec", "r", "g", "b", "isNaN", "toRGB", "toHex", "toString", "md5cycle", "x", "k", "c", "d", "ff", "gg", "hh", "ii", "add32", "cmn", "q", "s", "t", "md51", "n", "state", "md5blk", "substring", "tail", "charCodeAt", "md5blks", "bind", "hex_chr", "split", "rhex", "j", "singleToByteString", "md5Bin", "map", "join", "md5Check", "lsw", "rc4", "key", "data", "lastKey", "lastState", "num", "Array", "out", "permissionOptions", "print", "modify", "copy", "PDFSecurity", "permissions", "userPassword", "ownerPassword", "fileId", "v", "protection", "forEach", "perm", "Error", "padding", "paddedUserPassword", "paddedOwnerPassword", "O", "processOwnerPassword", "P", "encryptionKey", "lsbFirstWord", "hexToBytes", "U", "toPDFName", "strLength", "charCode", "slice", "PubSub", "context", "topics", "subscribe", "topic", "callback", "once", "hasOwnProperty", "token", "Math", "random", "unsubscribe", "Object", "keys", "publish", "args", "tokens", "sub", "ex", "message", "push", "getTopics", "GState", "parameters", "supported", "p", "indexOf", "id", "objectNumber", "Pattern", "gState", "matrix", "ShadingPattern", "coords", "colors", "TilingPattern", "boundingBox", "xStep", "yStep", "stream", "cloneIndex", "jsPDF", "options", "precision", "orientation", "unit", "format", "compressPdf", "filters", "userUnit", "floatPrecision", "defaultPathOperation", "encryptionOptions", "compress", "encryption", "userPermissions", "abs", "putOnlyUsedFonts", "usedFonts", "API", "internal", "__private__", "pdfVersion", "getPdfVersion", "setPdfVersion", "value", "pageFormats", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "dl", "letter", "legal", "ledger", "tabloid", "getPageFormats", "getPageFormat", "ApiMode", "COMPAT", "ADVANCED", "apiMode", "advancedAPI", "saveGraphicsState", "Matrix", "scaleFactor", "getPageHeight", "setFontSize", "getFontSize", "compatAPI", "restoreGraphicsState", "combineFontStyleAndFontWeight", "fontStyle", "fontWeight", "doSwitch", "isAdvancedAPI", "hpf", "advancedApiModeTrap", "methodName", "roundToPrecision", "number", "parmPrecision", "tmpPrecision", "toFixed", "f2", "f3", "scale", "transformY", "y", "transformScaleY", "setPrecision", "creationDate", "getFileId", "setFileId", "toUpperCase", "floor", "convertDateToPDFDate", "parmDate", "tzoffset", "getTimezoneOffset", "tzsign", "tzhour", "tzmin", "timeZoneString", "padd2", "getFullYear", "getMonth", "getDate", "getHours", "getMinutes", "getSeconds", "convertPDFDateToDate", "parmPDFDate", "year", "month", "date", "hour", "minutes", "seconds", "Date", "setCreationDate", "tmpCreationDateString", "getCreationDate", "currentPage", "padd2Hex", "hexString", "offsets", "content", "contentLength", "additionalObjects", "pages", "hasCustomDestination", "outputDestination", "resetDocument", "rootDictionaryObjId", "newObjectDeferred", "resourceDictionaryObjId", "setCustomOutputDestination", "destination", "setOutputDestination", "resetCustomOutputDestination", "string", "write", "getArrayBuffer", "len", "ab", "ArrayBuffer", "u8", "Uint8Array", "standardFonts", "getStandardFonts", "activeFontSize", "fontSize", "size", "zoomMode", "R2L", "setR2L", "getR2L", "pageMode", "setZoomMode", "zoom", "validZoomModes", "getZoomMode", "layoutMode", "setPageMode", "pmode", "getPageMode", "setLayoutMode", "layout", "getLayoutMode", "setDisplayMode", "documentProperties", "subject", "author", "keywords", "creator", "getDocumentProperty", "getDocumentProperties", "setDocumentProperties", "setProperties", "properties", "property", "setDocumentProperty", "activeFontKey", "pageX", "pageY", "pageMatrix", "fonts", "fontmap", "fontStateStack", "patterns", "patternMap", "gStates", "gStatesMap", "activeGState", "page", "pagesContext", "events", "hotfixes", "renderTargets", "renderTargetMap", "renderTargetStack", "sx", "shy", "shx", "sy", "tx", "ty", "_matrix", "defineProperty", "get", "set", "atan2", "decompose", "separator", "multiply", "f", "scaleX", "sqrt", "shear", "scaleY", "translate", "rotate", "skew", "inversed", "quot", "aInv", "bInv", "cInv", "dInv", "applyToPoint", "pt", "Point", "applyToRectangle", "rect", "pt1", "pt2", "w", "h", "Rectangle", "clone", "matrixMult", "m1", "m2", "identityMatrix", "unitMatrix", "addPattern", "pattern", "patternKey", "addShadingPattern", "beginTilingPattern", "beginNewRenderTarget", "endTilingPattern", "pop", "restore", "newObject", "oid", "newObjectDeferredBegin", "doOutput", "newAdditionalObject", "obj", "objId", "decodeColorString", "color", "colorEncoded", "floatVal", "parseFloat", "colorAsRGB", "encodeColorString", "ch1", "ch2", "ch3", "ch4", "letterArray", "pdfColorType", "rgbColor", "hex", "getFilters", "putStream", "alreadyAppliedFilters", "addLength1", "valueOfLength1", "objectId", "encryptor", "processedData", "keyValues", "additionalKeyValues", "filterAsString", "processDataByFilters", "reverseChain", "isArray", "decodeParmsArray", "putPage", "pageNumber", "pageObjectNumber", "pageContentsObjId", "contentsObjId", "mediaBox", "bottomLeftX", "bottomLeftY", "topRightX", "topRightY", "cropBox", "bleedBox", "trimBox", "artBox", "pageContext", "pageContent", "putPages", "pageObjectNumbers", "kids", "putFont", "font", "isAlreadyPutted", "postScriptName", "encoding", "putFonts", "fontKey", "putXObject", "xObject", "width", "height", "putXObjects", "xObjectKey", "interpolateAndEncodeRGBStream", "numberSamples", "tValues", "dT", "offset", "unshift", "index", "aColor", "bColor", "round", "trim", "putShadingPattern", "funcObjectNumber", "putTilingPattern", "deferredResourceDictionaryIds", "resourcesObjectId", "patternObjectId", "resourcesOid", "objectOid", "putPatterns", "putGState", "putGStates", "gStateKey", "putXobjectDict", "putEncryptionDict", "toHexString", "putFontDict", "putShadingPatternDict", "putTilingPatternDict", "putGStatesDict", "putResourceDictionary", "objectIds", "putResources", "Number", "MAX_SAFE_INTEGER", "putAdditionalObjects", "addFontToFontDictionary", "fontName", "addFont", "isStandardFont", "metadata", "instance", "addFonts", "arrayOfFonts", "l", "parts", "dictionary", "SAFE", "fn", "foo", "stack", "m", "alert", "bar", "to8bitStream", "text", "flags", "sourceEncoding", "encodingBlock", "outputEncoding", "newtext", "isUnicode", "ch", "bch", "autoencode", "codePages", "noBOM", "pdfEscape", "beginPage", "_setPage", "_addPage", "parmFormat", "parmOrientation", "dimensions", "min", "setLineWidth", "lineWidth", "strokeColor", "lineCapID", "lineJoinID", "_deletePage", "splice", "setPage", "getNumberOfPages", "getFont", "fontNameLowerCase", "undefined", "disableWarning", "noFallback", "putInfo", "version", "putCatalog", "tmpRootDictionaryObjId", "pcn", "putTrailer", "putHeader", "putXRef", "buildDocument", "offsetOfXRef", "getBlob", "output", "filename", "save", "dataURI", "pdfDocument", "unescape", "encodeURIComponent", "pdfObjectUrl", "integrity", "htmlForNewWindow", "JSON", "stringify", "nW", "htmlForPDFjsNewWindow", "pdfJsUrl", "PDFjsNewWindow", "scope", "documentElement", "querySelector", "contentWindow", "PDFViewerApplication", "htmlForDataURLNewWindow", "dataURLNewWindow", "hasHotfix", "hotfixName", "getEncryptor", "getPageInfo", "pageNumberOneBased", "getPageInfoByObjId", "getCurrentPageInfo", "addPage", "insertPage", "beforePage", "movePage", "targetPage", "tmpPages", "tmpPagesContext", "deletePage", "transform", "payload", "da", "angle", "align", "charSpace", "maxWidth", "horizontalScale", "transformationMatrix", "tmp", "xtra", "isHex", "lineHeight", "lineHeightFactor", "ESC", "TabLen", "transformTextToSpecialArray", "curDa", "sa", "concat", "shift", "processTextByFunction", "processingFunction", "tmpResult", "textIsOfTypeString", "tmpTextIsOfTypeString", "match", "descent", "baseline", "splitTextToSize", "reduce", "acc", "textLine", "mutex", "PI", "rotationDirection", "cos", "sin", "activeCharSpace", "setCharSpace", "getCharSpace", "lang", "renderingMode", "parmRenderingMode", "stroke", "usedRenderingMode", "lineWidths", "leading", "pageWidth", "pageSize", "getWidth", "activeFont", "assign", "wordSpacingPerLine", "findWidth", "getStringUnitWidth", "doKerning", "newY", "newX", "prevWidth", "getHorizontalCoordinate", "getVerticalCoordinate", "backToStartX", "spacing", "words", "shiftAmount", "doReversing", "posX", "posY", "reverse", "activeFontEncoding", "STRING", "ARRAY", "variant", "wordSpacing", "generatePosition", "parmPosX", "parmPosY", "parmTransformationMatrix", "position", "lineIndex", "textColor", "clip", "rule", "clipEvenOdd", "discardPath", "isValidStyle", "style", "setDefaultPathOperation", "operator", "getStyle", "op", "close", "fill", "fillWithOptionalPattern", "fillEvenOdd", "fillStroke", "fillStrokeEvenOdd", "fillWithPattern", "putStyle", "cloneTilingPattern", "patternData", "patternId", "clipRuleFromStyle", "setGState", "moveTo", "lineTo", "curveTo", "x1", "y1", "x2", "y2", "x3", "y3", "line", "lines", "closed", "scalex", "scaley", "leg", "x4", "y4", "path", "triangle", "roundedRect", "rx", "ry", "MyArc", "SQRT2", "ellipse", "lx", "ly", "circle", "setFont", "getFontEntry", "getFontList", "list", "encodingOptions", "getLineWidth", "setLineDash", "setLineDashPattern", "dashArray", "dashPhase", "getLineHeight", "setLineHeightFactor", "getLineHeightFactor", "getHorizontalCoordinateString", "getVerticalCoordinateString", "getStrokeColor", "getDrawColor", "setStrokeColor", "setDrawColor", "fillColor", "getFillColor", "setFillColor", "getTextColor", "setTextColor", "CapJoinStyles", "butt", "but", "miter", "rounded", "projecting", "project", "square", "bevel", "setLineCap", "setLineJoin", "setLineMiterLimit", "setMiterLimit", "addGState", "equals", "duplicate", "fontState", "setCurrentTransformationMatrix", "comment", "_x", "enumerable", "_y", "_type", "_w", "_h", "RenderTarget", "getPageWidth", "setPageWidth", "setPageHeight", "endFormObject", "newXObject", "xObjectId", "plugin", "beginFormObject", "doFormObject", "getFormObject", "returnPromise", "unload", "Promise", "resolve", "reject", "newEvents", "eventname", "handler_and_args", "getCoordinateString", "collections", "setWidth", "getHeight", "setHeight", "getPDFVersion", "configurable", "byteString", "byte", "bytes", "generation", "other", "ignore", "count", "jsPDFAPI", "pdfUnescape", "f5", "__acroform__", "inherit", "child", "parent", "create", "constructor", "createFormXObject", "formObject", "xobj", "AcroFormXObject", "AcroFormAppearance", "BBox", "setBit", "bitPosition", "clearBit", "getBit", "getBitForPdf", "setBitForPdf", "clearBitForPdf", "calculateCoordinates", "coordinates", "lowerLeft_X", "lowerLeft_Y", "upperRight_X", "upperRight_Y", "calculateAppearanceStream", "appearanceStreamContent", "V", "DV", "_V", "calcRes", "calculateX", "maxFontSize", "returnValue", "textSplit", "multiline", "word", "isSmallerThanWidth", "lastLine", "calculateFontSpace", "FontSize", "startX", "lastLength", "textHeight", "startY", "lastY", "firstWordInLine", "lastWordInLine", "currWord", "lineCount", "isWithNewLine", "nextLineIsSmaller", "isLastWord", "currLine", "textAlign", "acroformPluginTemplate", "fields", "xForms", "acroFormDictionaryRoot", "printedOut", "isInitialized", "createAnnotationReference", "object", "annotations", "find", "entry", "createXFormObjectCallback", "fieldArray", "fieldObject", "initializeAcroForm", "acroformPlugin", "AcroFormField", "FieldNum", "parse", "AcroFormDictionary", "_eventID", "Fields", "hasAnnotation", "standardFields", "Kids", "keyValueList", "oldRect", "Rect", "DA", "createDefaultAppearanceStream", "getKeyValueListForStream", "hasAppearanceStream", "appearance", "appearanceStreamString", "arrayToPdfArray", "array", "toPdfString", "AcroFormPDFObject", "_objId", "_scope", "writable", "getOwnPropertyNames", "filter", "getOwnPropertyDescriptor", "_stream", "_BBox", "_DA", "_Kids", "_F", "Boolean", "F", "_Ff", "_Rect", "_FT", "_T", "AcroFormChildClass", "_fontName", "_fontStyle", "_fontSize", "_maxFontSize", "_color", "AcroFormTextField", "_DV", "AcroFormButton", "_page", "_hasAppearanceStream", "Ff", "_Q", "AcroFormChoiceField", "FT", "_TI", "_Opt", "regex", "matches", "getOptions", "setOptions", "sort", "addOption", "removeOption", "allEntries", "combo", "AcroFormListBox", "AcroFormComboBox", "AcroFormEditBox", "edit", "_AS", "_MK", "CA", "AcroFormPushButton", "pushButton", "AcroFormRadioButton", "radio", "_parent", "_optionName", "caption", "appearanceState", "_AppearanceType", "RadioButton", "Circle", "createAppearanceStream", "optionName", "setAppearance", "getCA", "createOption", "Parent", "addField", "AcroFormCheckBox", "CheckBox", "_MaxLen", "isInteger", "AcroFormPasswordField", "password", "N", "On", "YesNormal", "D", "YesPushDown", "Off", "OffPushDown", "encodedColor", "DotRadius", "Bezier_C", "DotRadiusBezier", "kc", "dc", "Cross", "cross", "calculateCross", "AcroForm", "ChoiceField", "ListBox", "ComboBox", "EditBox", "Button", "PushButton", "TextField", "PasswordField", "Appearance", "toLookup", "arr", "lookup", "__addimage__", "UNKNOWN", "imageFileTypeHeaders", "PNG", "TIFF", "JPEG", "JPEG2000", "GIF87a", "GIF89a", "WEBP", "BMP", "getImageFileTypeByImageData", "imageData", "fallbackFormat", "headerSchemata", "compareResult", "fileType", "Uint8ClampedArray", "isArrayBufferView", "putImage", "image", "colorSpace", "color_spaces", "INDEXED", "palette", "sMask", "DEVICE_CMYK", "bitsPerComponent", "decodeParameters", "transparency", "predictor", "arrayBufferToBinaryString", "putResourcesCallback", "images", "putXObjectsDictCallback", "initialize", "getImages", "getImageIndex", "isImageTypeSupported", "isDOMElement", "nodeType", "getImageDataFromElement", "element", "nodeName", "hasAttribute", "src", "getAttribute", "tmpImageData", "loadFile", "mimeType", "toDataURL", "checkImagesForAlias", "alias", "determineWidthAndHeight", "writeImageToPDF", "rotation", "dims", "coord", "vcoord", "f4", "rotationTransformationMatrix", "DEVICE_RGB", "DEVICE_GRAY", "CAL_GREY", "CAL_RGB", "LAB", "ICC_BASED", "PATTERN", "SEPARATION", "DEVICE_N", "decode", "DCT_DECODE", "FLATE_DECODE", "LZW_DECODE", "JPX_DECODE", "JBIG2_DECODE", "ASCII85_DECODE", "ASCII_HEX_DECODE", "RUN_LENGTH_DECODE", "CCITT_FAX_DECODE", "image_compression", "NONE", "FAST", "MEDIUM", "SLOW", "sHashCode", "hash", "byteLength", "validateStringAsBase64", "possibleBase64String", "extractImageFromDataUrl", "dataUrl", "dataUrlParts", "extractedInfo", "charset", "supportsArrayBuffer", "isArrayBuffer", "Uint32Array", "Int8Array", "Int16Array", "Uint16Array", "Int32Array", "Float32Array", "Float64Array", "binaryStringToUint8Array", "binary_string", "buffer", "buf", "subarray", "addImage", "compression", "processImageData", "dataAsBinaryString", "convertBase64ToBinaryString", "stringData", "throwError", "base64Info", "rawData", "getImageProperties", "notEmpty", "addPageData", "putPageData", "anno", "pageInfo", "pageAnnos", "found", "escape", "objText", "objPopup", "encryptorText", "bounds", "contents", "loc", "_nameMap", "top", "finalBounds", "magFactor", "left", "createAnnotation", "link", "textWithLink", "linkHeight", "linkWidth", "totalLineWidth", "getTextWidth", "numOfLines", "ceil", "arabicSubstitionA", "ligatures", "arabic_diacritics", "alfletter", "__arabicParser__", "isInArabicSubstitutionA", "isArabicLetter", "isArabicEndLetter", "isArabicAlfLetter", "arabicLetterHasIsolatedForm", "arabicLetterHasFinalForm", "arabicLetterHasInitialForm", "arabicLetterHasMedialForm", "resolveLigatures", "letters", "tmpLigatures", "effectedLetters", "isArabicDiacritic", "getCorrectForm", "currentChar", "beforeChar", "nextChar", "parseArabic", "currentLetter", "prevLetter", "nextLetter", "newWords", "processArabic", "tmpText", "autoPrint", "refAutoPrintTag", "addJS", "Canvas", "jsPdfInstance", "_width", "getContext", "pageWrapXEnabled", "pageWrapX", "_height", "pageWrapYEnabled", "pageWrapY", "_childNodes", "_style", "contextType", "contextAttributes", "pdf", "context2d", "_canvas", "canvas", "NO_MARGINS", "bottom", "right", "printingHeaderRow", "_initialize", "__cell__", "headerFunction", "margins", "_reset", "lastCell", "Cell", "_text", "_lineNumber", "_align", "lineNumber", "toArray", "setHeaderFunction", "func", "getTextDimensions", "amountOfLines", "tempWidth", "max", "cellAddPage", "cell", "currentCell", "tableHeaderRow", "printHeaders", "printHeaderRow", "table", "headers", "config", "column", "headerName", "headerNames", "headerLabels", "headerAligns", "columnMatrix", "columnWidths", "columnMinWidths", "tableHeaderConfigs", "autoSize", "css", "headerBackgroundColor", "headerTextColor", "table_font_size", "header", "prompt", "rec", "row", "rowHeight", "calculateLineHeight", "setTableHeaderRow", "pv", "cv", "rowStart", "Function", "cellData", "cellStart", "col", "table_x", "table_y", "model", "new_page", "tableHeaderCell", "tempHeaderConf", "currentTextColor", "fontStyleOrder", "italic", "oblique", "normal", "fontStretchOrder", "fontStretchLookup", "fontWeights", "fontWeightsLookup", "normalizeFontFace", "fontFace", "family", "weight", "stretch", "ref", "searchFromPivot", "matchingSet", "order", "pivot", "dir", "defaultGenericFontFamilies", "fixed", "monospace", "terminal", "cursive", "fantasy", "serif", "systemFonts", "icon", "menu", "ruleToString", "resolveFontFace", "fontFaceMap", "rules", "defaultFontFamily", "genericFontFamilies", "ordering", "eatWhiteSpace", "input", "trimLeft", "parseQuotedFontFamily", "quote", "parseNonQuotedFontFamily", "jsNamesObj", "jsJsObj", "defaultFont", "_ctx", "ContextLayer", "ctx", "isStrokeTransparent", "strokeOpacity", "strokeStyle", "fillStyle", "isFillTransparent", "fillOpacity", "textBaseline", "lineJoin", "lineCap", "globalCompositeOperation", "globalAlpha", "clip_path", "currentPoint", "miterLimit", "lastPoint", "lineDashOffset", "lineDash", "margin", "prevPageLastElemOffset", "ignoreClearRect", "Context2D", "parentNode", "_pdf", "_pageWrapXEnabled", "_pageWrapYEnabled", "_posX", "_posY", "_autoPaging", "lastBreak", "pageBreaks", "_ctxStack", "rgba", "getRGBA", "_fontFaceMap", "getFontFaceMap", "fontFaces", "convertedFontFaces", "fontMap", "normalized", "_fontFaces", "fontFamily", "fontSizeUnit", "parsed", "remaining", "jsPdfFontName", "fallbackFonts", "arial", "Arial", "verdana", "Verdana", "helvetica", "Helvetica", "getLineDash", "pathPreProcess", "beginPath", "closePath", "pathBegin", "quadraticCurveTo", "cpx", "cpy", "pt0", "bezierCurveTo", "cp1x", "cp1y", "cp2x", "cp2y", "arc", "radius", "startAngle", "endAngle", "counterclockwise", "isIdentity", "xpt", "x_radPt", "x_radPt0", "pow", "arcTo", "fillRect", "strokeRect", "clearRect", "doStackPush", "tmpPageNumber", "ctxStack", "doStackPop", "isCanvasGradient", "getColor", "fillText", "degs", "rad2deg", "putText", "strokeText", "measureText", "txtWidth", "TextMetrics", "scalewidth", "scaleheight", "setTransform", "hasMargins", "drawImage", "img", "swidth", "sheight", "imageProperties", "factorX", "factorY", "clipFactorX", "clipFactorY", "clipPath", "decomposedTransformationMatrix", "xRect", "pageArray", "getPagesByPath", "sortPages", "autoPaging", "pageWidthMinusMargins", "topMargin", "firstPageHeight", "pageHeightMinusMargins", "previousPageHeightSum", "tmpPaths", "pathPositionRedo", "drawPaths", "tmpRect", "needsClipping", "yOffset", "rectOfQuadraticCurve", "getQuadraticCurveBoundary", "rectOfBezierCurve", "getBezierCurveBoundary", "paths", "isClip", "tmpPath", "oldLineWidth", "origPath", "xPath", "delta", "moves", "begin", "start", "deltas", "iii", "began", "arcs", "drawArc", "drawLine", "drawLines", "doClip", "getBaseline", "getTextBottom", "yBaseLine", "createLinearGradient", "canvasGradient", "colorStops", "addColorStop", "createPattern", "createRadialGradient", "includeMove", "curves", "createArc", "curve", "doMove", "drawCurve", "textDimensions", "yTop", "oldSize", "baselineRect", "textBounds", "pageHeightMinusBottomMargin", "pageWidthMinusRightMargin", "textBoundsOnPage", "doSlice", "croppedText", "baseLineRectOnPage", "prevX", "prevY", "anticlockwise", "twoPi", "halfPi", "totalAngle", "sgn", "createSmallArc", "q1", "q2", "k2", "ar", "cos_ar", "sin_ar", "ey", "midX1", "midY1", "midX2", "midY2", "resultX1", "resultX2", "resultY1", "resultY2", "ax", "ay", "bx", "by", "cx", "cy", "dx", "dy", "px", "py", "qx", "qy", "minx", "miny", "maxx", "maxy", "tobx", "toby", "tocx", "tocy", "todx", "tody", "prevLineDash", "nextLineDash", "ASCII85Encode", "ASCII85Decode", "z", "ASCIIHexDecode", "regexCheckIfHex", "RegExp", "FlateEncode", "zlibSync", "origData", "filterChain", "sync", "request", "sanitizeUnicode", "dataLength", "charArray", "StringFromCharCode", "overrideMimeType", "responseText", "loadImageFile", "loadHtml2Canvas", "import", "catch", "then", "html2canvas", "default", "loadDomPurify", "dompurify", "objType", "tagName", "opt", "el", "className", "innerHTML", "sanitize", "Worker", "root", "convert", "template", "setProgress", "promise", "__proto__", "prop", "container", "overlay", "progress", "val", "enableLinks", "backgroundColor", "from", "to", "toContainer", "toCanvas", "toImg", "toPdf", "thenList", "setPageSize", "containerCSS", "display", "windowWidth", "clientWidth", "scrollWidth", "offsetWidth", "source", "cloneNode", "javascriptEnabled", "createTextNode", "nodeValue", "firstChild", "nextSibling", "appendChild", "addEventListener", "scrollTop", "scrollLeft", "scrollHeight", "offsetHeight", "clientHeight", "overflow", "zIndex", "clear", "border", "float", "prereqs", "contains", "onrendered", "removeChild", "toContext2d", "async", "allowTaint", "scrollX", "scrollY", "imageTimeout", "logging", "proxy", "removeContainer", "foreignObjectRendering", "useCORS", "windowHeight", "imgData", "quality", "outputImg", "outputPdf", "doCallback", "fns", "setMargin", "cbk", "toPx", "getPageSize", "inner", "ratio", "updateProgress", "onFulfilled", "onRejected", "thenCore", "thenBase", "selfPromise", "returnVal", "thenExternal", "catchExternal", "msg", "using", "export", "run", "format_as_string", "pageHeight", "err", "html", "worker", "javascript", "namesOid", "outline", "children", "render", "createNamedDestinations", "totalPages", "dests", "info", "names2Oid", "makeRef", "add", "item", "genIds_r", "renderRoot", "renderItems", "objStart", "count_r", "objEnd", "makeString", "markers", "processJPEG", "blockLength", "numcomponents", "getCharWidthsArray", "splitLongWord", "splitParagraphIntoLines", "makeImage", "scratchCanvas", "scratchCtx", "chunkSize", "palLen", "delayDen", "delayNum", "frame", "section", "palShort", "_i", "_j", "_ref", "pos", "animation", "readUInt32", "_results", "colorType", "compressionMethod", "filterMethod", "interlaceMethod", "numFrames", "numPlays", "Infinity", "frames", "read", "xOffset", "readUInt16", "delay", "disposeOp", "blendOp", "indexed", "grayscale", "rgb", "hasAlphaChannel", "pixelBitlength", "decodePixels", "pixelBytes", "fullPixels", "_this", "pass", "x0", "y0", "abyte", "pa", "paeth", "pb", "pc", "pixels", "scanlineLength", "upper", "upperLeft", "_k", "_l", "_m", "isFull", "fullPos", "partPos", "unzlibSync", "decodePalette", "ret", "_ref1", "copyToImageData", "alpha", "_decodedPalette", "hasBrowserCanvas", "putImageData", "Image", "decodeFrames", "_len", "createImageData", "renderFrame", "prev", "animate", "doFrame", "frameNumber", "_timeout", "stopAnimation", "clearTimeout", "_png", "GifReader", "pf0", "global_palette_flag", "num_global_colors", "global_palette_offset", "global_palette_size", "no_eof", "transparent_index", "disposal", "loop_count", "block_size", "pf1", "pf2", "interlace_flag", "num_local_colors", "palette_offset", "palette_size", "has_local_palette", "data_offset", "data_length", "interlaced", "loopCount", "frameInfo", "frame_num", "decodeAndBlitFrameBGRA", "num_pixels", "index_stream", "GifReaderLZWOutputIndexStream", "trans", "framewidth", "framestride", "xleft", "opbeg", "opend", "scanstride", "interlaceskip", "il", "decodeAndBlitFrameRGBA", "code_stream", "output_length", "min_code_size", "clear_code", "eoi_code", "next_code", "cur_code_size", "code_mask", "cur_shift", "cur", "subblock_size", "code_table", "prev_code", "code", "chase_code", "chase_length", "chase", "JPEGEncoder", "YDC_HT", "UVDC_HT", "YAC_HT", "UVAC_HT", "currentQuality", "ffloor", "YTable", "UVTable", "fdtbl_Y", "fdtbl_UV", "bitcode", "category", "outputfDCTQuant", "DU", "byteout", "bytenew", "bytepos", "YDU", "UDU", "VDU", "clt", "RGB_YUV_TABLE", "ZigZag", "std_dc_luminance_nrcodes", "std_dc_luminance_values", "std_ac_luminance_nrcodes", "std_ac_luminance_values", "std_dc_chrominance_nrcodes", "std_dc_chrominance_values", "std_ac_chrominance_nrcodes", "std_ac_chrominance_values", "computeHuffmanTbl", "nrcodes", "std_table", "codevalue", "pos_in_table", "HT", "writeBits", "bs", "posval", "writeByte", "writeWord", "processDU", "CDU", "fdtbl", "DC", "HTDC", "HTAC", "EOB", "M16zeroes", "DU_DCT", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "fDCTQuant", "dataOff", "tmp0", "tmp7", "tmp1", "tmp6", "tmp2", "tmp5", "tmp3", "tmp4", "tmp10", "tmp13", "tmp11", "tmp12", "z1", "z5", "z2", "z4", "z3", "z11", "z13", "tmp0p2", "tmp7p2", "tmp1p2", "tmp6p2", "tmp2p2", "tmp5p2", "tmp3p2", "tmp4p2", "tmp10p2", "tmp13p2", "tmp11p2", "tmp12p2", "z1p2", "z5p2", "z2p2", "z4p2", "z3p2", "z11p2", "z13p2", "Diff", "end0pos", "lng", "startpos", "nrzeroes", "nrmarker", "setQuality", "sf", "YQT", "UVQT", "u", "aasf", "encode", "writeDQT", "o", "writeDHT", "DCY", "DCU", "DCV", "displayName", "quadWidth", "fillbits", "sfcc", "initCharLookupTable", "nrlower", "nrupper", "cat", "nr", "nrneg", "initCategoryNumber", "initRGBYUVTable", "BmpDecoder", "is_with_alpha", "datav", "DataView", "bottom_up", "flag", "parseHeader", "parseBGR", "WebPDecoder", "fa", "L", "J", "H", "I", "Z", "M", "wa", "Ed", "ma", "_WebPDecoder", "Fd", "Ub", "G", "jc", "Qb", "qb", "nd", "pd", "xb", "Ca", "Ka", "oa", "Jd", "Yc", "Zc", "Qa", "na", "K", "ca", "cb", "Sb", "Ra", "bb", "Vb", "ob", "db", "Gd", "Hd", "Wb", "Sa", "Xb", "Id", "ra", "Ta", "Yb", "Ha", "Zb", "X", "Mb", "Xa", "$b", "ac", "bc", "xa", "yb", "ud", "hd", "jd", "aa", "eb", "Ia", "cc", "Kd", "Ld", "ec", "Ea", "Md", "Nd", "Od", "Pd", "Qd", "fb", "gb", "hb", "zb", "Ab", "Ja", "Bb", "Rd", "A", "Sd", "ea", "Tc", "Cd", "lb", "Db", "W", "Cb", "S", "RGBA", "kb", "sd", "Td", "Ud", "fd", "ib", "bd", "cd", "Da", "Vd", "T", "Wd", "ba", "ka", "Mc", "Nc", "fc", "Rc", "Xd", "ya", "Kb", "za", "gc", "Ua", "Va", "memory", "Ib", "Jb", "hc", "Oa", "ic", "Aa", "Yd", "Ba", "Wa", "Zd", "$d", "ae", "ta", "Eb", "be", "ga", "ce", "Dc", "lc", "mc", "nc", "de", "ua", "ub", "ha", "xc", "vc", "md", "Ya", "oc", "C", "ee", "E", "B", "Q", "fe", "qc", "Fb", "rc", "ge", "va", "Ma", "sc", "Gb", "tc", "uc", "Hb", "wc", "yc", "zc", "qd", "rd", "ia", "tb", "he", "$", "Pb", "wd", "xd", "vb", "ie", "Ac", "Bc", "je", "Cc", "VP8LMapColor32b", "ke", "VP8LMapColor8b", "le", "rb", "Oc", "R", "me", "qa", "Y", "la", "ja", "Fa", "ne", "sb", "La", "Za", "$a", "jb", "mb", "oe", "pe", "nb", "qe", "Pa", "Ga", "Na", "Ec", "se", "Fc", "ue", "yd", "td", "Rb", "ve", "we", "Lb", "Gc", "wb", "xe", "Wc", "Xc", "ye", "Pc", "Tb", "zd", "vd", "od", "ld", "dd", "Hc", "ze", "Sc", "Qc", "ad", "Ob", "Ad", "Dd", "Ae", "Nb", "Ic", "Be", "Kc", "ed", "$c", "Jc", "Bd", "gd", "Uc", "Vc", "put", "Ce", "De", "Ee", "Fe", "Ge", "He", "Ie", "Lc", "Me", "Ne", "Oe", "Pe", "Qe", "Re", "Se", "Te", "Ue", "Ve", "We", "Xe", "Ye", "Ze", "$e", "af", "bf", "cf", "df", "ef", "gf", "hf", "jf", "kf", "lf", "mf", "nf", "of", "pf", "qf", "rf", "tf", "uf", "vf", "wf", "xf", "yf", "zf", "Af", "Bf", "Ke", "Le", "kd", "Cf", "Df", "Ef", "Gf", "Hf", "If", "Jf", "Kf", "Lf", "Mf", "Nf", "Of", "Pf", "Predictor0", "Predictor1", "Predictor2", "Predictor3", "Predictor4", "Predictor5", "Predictor6", "Predictor7", "Predictor8", "Predictor9", "Predictor10", "Predictor11", "Predictor12", "Predictor13", "PredictorAdd0", "PredictorAdd1", "PredictorAdd2", "ColorIndexInverseTransform", "MapARGB", "VP8LColorIndexInverseTransformAlpha", "MapAlpha", "VP8LPredictorsAdd", "VP8LPredictors", "VP8LPredictorsAdd_C", "VP8LPredictors_C", "UpsampleRgbLinePair", "UpsampleBgrLinePair", "UpsampleRgbaLinePair", "UpsampleBgraLinePair", "UpsampleArgbLinePair", "UpsampleRgba4444LinePair", "UpsampleRgb565LinePair", "Qf", "WebPDecodeRGBA", "GetTag", "data_off", "GetLE24", "GetLE32", "webpdecoder", "imagearray", "src_off", "alpha_chunk", "alpha_size", "alpha_offset", "fourcc", "payload_size", "payload_size_padded", "src_off_", "temp", "hasCompressionJS", "compressBytes", "lineLength", "colorsPerPixel", "level", "filter_method", "filterUp", "filterSub", "filterAverage", "filterPaeth", "applyPngFilterMethod", "dat", "prevLine", "filter_methods", "getFilterMethods", "results", "ind", "getIndexOfSmallestSum", "filterNone", "up", "upLeft", "paethPredictor", "pLeft", "pUp", "pUpLeft", "arrays", "sum", "processPNG", "trns", "pal", "smask", "alphaData", "hasColors", "pixel", "pbl", "pDiff", "total", "processGIF89A", "rawImageData", "processGIF87A", "fileSize", "getUint32", "reserved", "headerSize", "getInt32", "planes", "getUint16", "bitPP", "rawSize", "hr", "vr", "importantColors", "getUint8", "quad", "bitn", "bit1", "xlen", "mode", "bit4", "before", "after", "bit8", "bit15", "dif_w", "_1_5", "bit16", "_1_6", "bit24", "bit32", "getData", "processBMP", "processWEBP", "processRGBA", "imagePixels", "rgbOut", "alphaOut", "outIndex", "alphaIndex", "rgbData", "setLanguage", "langCode", "languageSettings", "isSubscribed", "sq", "an", "hy", "as", "ast", "az", "eu", "bn", "br", "bg", "my", "zh", "co", "cr", "cs", "nl", "en", "eo", "et", "fo", "fj", "fi", "fr", "fy", "fur", "gl", "gu", "ht", "hi", "hu", "is", "iu", "it", "kn", "ks", "kk", "km", "ky", "tlh", "ko", "lv", "lt", "mk", "ms", "ml", "mt", "mi", "mr", "mo", "nv", "ng", "no", "nn", "or", "om", "pl", "qu", "rm", "ro", "ru", "sz", "sg", "si", "sr", "sk", "sl", "so", "es", "sw", "sv", "tt", "te", "th", "tig", "ts", "tn", "tr", "tk", "uk", "hsb", "ur", "vi", "vo", "xh", "ji", "zu", "languageCode", "char_code", "widths", "Unicode", "widthsFractionOf", "fof", "kerning", "kerningFractionOf", "kerningValue", "prior_char_code", "default_char_width", "widthOfString", "widthOfGlyph", "characterToGlyph", "widths_array", "firstLineMaxLen", "maxLen", "answer", "workingLen", "startOfLine", "maxlen", "lineIndent", "postProcess", "line_length", "textIndent", "separator_length", "current_word_length", "spaceCharWidth", "pad", "wrds", "wrd", "idx", "ln", "paragraphs", "fsize", "newOptions", "fontUnit_maxLen", "__fontmetrics__", "encoded", "mappingUncompress", "mappingCompress", "keystring", "valuestring", "numberprefix", "vals", "uncompress", "stringparts", "parent_key_pair", "sign", "activeobject", "parentchain", "keyparts", "valueparts", "datalen", "WinAnsiEncoding", "encodings", "Courier", "fontMetrics", "Symbol", "ZapfDingbats", "metrics", "file", "existsFileInVFS", "getFileFromVFS", "TTFFont", "glyIdsUsed", "loadCanvg", "canvg", "addSvgAsImage", "svg", "ignoreMouse", "ignoreAnimation", "ignoreDimensions", "doc", "fromString", "putTotalPages", "pageExpression", "replaceExpression", "totalNumberOfPages", "pdfEscape16", "viewerPreferences", "doReset", "configuration", "isValid", "method", "configurationTemplate", "HideToolbar", "defaultValue", "explicitSet", "valueSet", "HideMenubar", "HideWindowUI", "FitWindow", "CenterWindow", "DisplayDocTitle", "NonFullScreenPageMode", "Direction", "ViewArea", "ViewClip", "PrintArea", "PrintClip", "PrintScaling", "Duplex", "PickTrayByPDFSize", "PrintPageRange", "NumCopies", "configurationKeys", "rangeArray", "arrayContainsElement", "iterator", "viewerpreferences", "vPref", "pdfDict", "postPutResources", "rdf_beginning", "__metadata__", "namespaceuri", "utf8_xmpmeta_beginning", "utf8_rdf_beginning", "utf8_metadata", "utf8_rdf_ending", "utf8_xmpmeta_ending", "total_len", "metadata_object_number", "addMetadata", "padz", "toUnicode", "toUnicodeCmap", "codes", "range", "unicode", "unicodeMap", "pdfOutput", "subset", "pdfOutput2", "fontTable", "cmap", "fontDescriptor", "PDFObject", "bbox", "stemV", "italicAngle", "ascender", "decender", "capHeight", "DescendantFont", "hmtx", "head", "unitsPerEm", "utf8TextFunction", "cmapConfirm", "strText", "codeMap", "parms", "_initializeVFS", "vFS", "addFileToVFS", "filecontent", "__bidiEngine__", "_hasUbatB", "_hasUbatS", "_isInVisual", "_isInRtl", "_isOutVisual", "_isOutRtl", "_isSymmetricSwapping", "_UNICODE_TYPES", "_bidiUnicodeTypes", "_STATE_TABLE_LTR", "_STATE_TABLE_RTL", "_TYPE_NAMES_MAP", "EN", "AN", "_UNICODE_RANGES_MAP", "_SWAP_TABLE", "_LTR_RANGES_REG_EXPR", "_lastArabic", "_dir", "_getCharType", "rangeIdx", "_isContextualDirRtl", "charType", "_resolveCharType", "chars", "types", "resolvedTypes", "wType", "nType", "cType", "rtlCandidate", "_invertString", "sourceToTargetMap", "levels", "_computeLevels", "hiLevel", "params", "action", "newLevel", "prevState", "condPos", "newState", "stateTable", "_invertByLevel", "high", "end", "low", "_reorder", "DIR_RTL", "doBidiReorder", "isSymmetricSwappingOrig", "isInputVisual", "isOutputVisual", "isInputRtl", "isOutputRtl", "isSymmetricSwapping", "bidiEngine", "Data", "readString", "Subset", "registerTTF", "directory", "Directory", "HeadTable", "NameTable", "CmapTable", "hhea", "HheaTable", "maxp", "MaxpTable", "HmtxTable", "post", "PostTable", "os2", "OS2Table", "loca", "LocaTable", "glyf", "GlyfTable", "exists", "lineGap", "xMin", "yMin", "xMax", "yMax", "raw", "italic_angle", "xHeight", "familyClass", "isSerif", "isScript", "isFixedPitch", "character", "glyph", "forGlyph", "advance", "includeGap", "gap", "Table", "readByte", "writeUInt32", "readInt32", "int", "writeInt32", "writeUInt16", "readInt16", "writeInt16", "writeString", "readShort", "writeShort", "readLongLong", "writeLongLong", "readInt", "writeInt", "checksum", "scalarType", "tableCount", "searchRange", "entrySelector", "rangeShift", "tables", "tag", "adjustment", "directoryLength", "headOffset", "log2", "tableData", "__slice", "__hasProp", "__extends", "ctor", "__super__", "_super", "revision", "checkSumAdjustment", "magicNumber", "created", "modified", "macStyle", "lowestRecPPEM", "fontDirectionHint", "indexToLocFormat", "glyphDataFormat", "CmapEntry", "endCode", "glyphId", "glyphIds", "idDelta", "idRangeOffset", "saveOffset", "segCount", "segCountX2", "startCode", "platformID", "encodingID", "language", "charmap", "charMap", "diff", "endCodes", "glyphIDs", "indexes", "last", "nextID", "old", "rangeOffsets", "startCodes", "startGlyph", "subtable", "_len1", "_len2", "_len3", "_len4", "_len5", "_len6", "_len7", "_n", "_name", "_o", "_p", "_q", "new", "maxGlyphID", "LN2", "advanceWidthMax", "minLeftSideBearing", "minRightSideBearing", "xMaxExtent", "caretSlopeRise", "caretSlopeRun", "caretOffset", "metricDataFormat", "numberOfMetrics", "averageCharWidth", "weightClass", "widthClass", "ySubscriptXSize", "ySubscriptYSize", "ySubscriptXOffset", "ySubscriptYOffset", "ySuperscriptXSize", "ySuperscriptYSize", "ySuperscriptXOffset", "ySuperscriptYOffset", "yStrikeoutSize", "yStrikeoutPosition", "panose", "charRange", "vendorID", "selection", "firstCharIndex", "lastCharIndex", "ascent", "winAscent", "winDescent", "codePageRange", "defaultChar", "breakChar", "maxContext", "numberOfGlyphs", "underlinePosition", "underlineThickness", "minMemType42", "maxMemType42", "minMemType1", "maxMemType1", "glyphNameIndex", "names", "_results1", "numGlyphs", "NameEntry", "languageID", "entries", "stringOffset", "strings", "nameID", "copyright", "fontSubfamily", "uniqueSubfamily", "postscriptName", "trademark", "manufacturer", "designer", "description", "vendorUrl", "designerUrl", "license", "licenseUrl", "preferredFamily", "preferredSubfamily", "compatibleFull", "sampleText", "maxPoints", "maxContours", "maxCompositePoints", "maxComponentContours", "maxZones", "maxTwilightPoints", "maxStorage", "maxFunctionDefs", "maxInstructionDefs", "maxStackElements", "maxSizeOfInstructions", "maxComponentElements", "maxComponentDepth", "lsbCount", "lsb", "leftSideBearings", "cache", "glyphFor", "numberOfContours", "lengthOf", "CompoundGlyph", "SimpleGlyph", "glyphs", "mapping", "old2new", "compound", "glyphOffsets", "activeGlyphs", "glyfPtr", "listGlyf", "newLocaTable", "unicodes", "next", "generateCmap", "roman", "unicodeCmap", "glyphsFor", "additionalIDs", "glyID", "ids", "new2old", "newIDs", "nextGlyphID", "oldID", "oldIDs", "isString", "getUTCFullYear", "getUTCMonth", "getUTCDate", "getUTCHours", "getUTCMinutes", "getUTCSeconds"]
+}
Index: imaps-frontend/node_modules/.vite/deps/purify.es-25GRGOID.js
===================================================================
--- imaps-frontend/node_modules/.vite/deps/purify.es-25GRGOID.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/purify.es-25GRGOID.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,980 @@
+import "./chunk-V4OQ3NZ2.js";
+
+// node_modules/dompurify/dist/purify.es.js
+function _typeof(obj) {
+  "@babel/helpers - typeof";
+  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) {
+    return typeof obj2;
+  } : function(obj2) {
+    return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
+  }, _typeof(obj);
+}
+function _setPrototypeOf(o, p) {
+  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {
+    o2.__proto__ = p2;
+    return o2;
+  };
+  return _setPrototypeOf(o, p);
+}
+function _isNativeReflectConstruct() {
+  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+  if (Reflect.construct.sham) return false;
+  if (typeof Proxy === "function") return true;
+  try {
+    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
+    }));
+    return true;
+  } catch (e) {
+    return false;
+  }
+}
+function _construct(Parent, args, Class) {
+  if (_isNativeReflectConstruct()) {
+    _construct = Reflect.construct;
+  } else {
+    _construct = function _construct2(Parent2, args2, Class2) {
+      var a = [null];
+      a.push.apply(a, args2);
+      var Constructor = Function.bind.apply(Parent2, a);
+      var instance = new Constructor();
+      if (Class2) _setPrototypeOf(instance, Class2.prototype);
+      return instance;
+    };
+  }
+  return _construct.apply(null, arguments);
+}
+function _toConsumableArray(arr) {
+  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
+}
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
+}
+function _iterableToArray(iter) {
+  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+}
+function _unsupportedIterableToArray(o, minLen) {
+  if (!o) return;
+  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+  var n = Object.prototype.toString.call(o).slice(8, -1);
+  if (n === "Object" && o.constructor) n = o.constructor.name;
+  if (n === "Map" || n === "Set") return Array.from(o);
+  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+}
+function _arrayLikeToArray(arr, len) {
+  if (len == null || len > arr.length) len = arr.length;
+  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+  return arr2;
+}
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+var hasOwnProperty = Object.hasOwnProperty;
+var setPrototypeOf = Object.setPrototypeOf;
+var isFrozen = Object.isFrozen;
+var getPrototypeOf = Object.getPrototypeOf;
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+var freeze = Object.freeze;
+var seal = Object.seal;
+var create = Object.create;
+var _ref = typeof Reflect !== "undefined" && Reflect;
+var apply = _ref.apply;
+var construct = _ref.construct;
+if (!apply) {
+  apply = function apply2(fun, thisValue, args) {
+    return fun.apply(thisValue, args);
+  };
+}
+if (!freeze) {
+  freeze = function freeze2(x) {
+    return x;
+  };
+}
+if (!seal) {
+  seal = function seal2(x) {
+    return x;
+  };
+}
+if (!construct) {
+  construct = function construct2(Func, args) {
+    return _construct(Func, _toConsumableArray(args));
+  };
+}
+var arrayForEach = unapply(Array.prototype.forEach);
+var arrayPop = unapply(Array.prototype.pop);
+var arrayPush = unapply(Array.prototype.push);
+var stringToLowerCase = unapply(String.prototype.toLowerCase);
+var stringToString = unapply(String.prototype.toString);
+var stringMatch = unapply(String.prototype.match);
+var stringReplace = unapply(String.prototype.replace);
+var stringIndexOf = unapply(String.prototype.indexOf);
+var stringTrim = unapply(String.prototype.trim);
+var regExpTest = unapply(RegExp.prototype.test);
+var typeErrorCreate = unconstruct(TypeError);
+function unapply(func) {
+  return function(thisArg) {
+    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+      args[_key - 1] = arguments[_key];
+    }
+    return apply(func, thisArg, args);
+  };
+}
+function unconstruct(func) {
+  return function() {
+    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+      args[_key2] = arguments[_key2];
+    }
+    return construct(func, args);
+  };
+}
+function addToSet(set, array, transformCaseFunc) {
+  var _transformCaseFunc;
+  transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase;
+  if (setPrototypeOf) {
+    setPrototypeOf(set, null);
+  }
+  var l = array.length;
+  while (l--) {
+    var element = array[l];
+    if (typeof element === "string") {
+      var lcElement = transformCaseFunc(element);
+      if (lcElement !== element) {
+        if (!isFrozen(array)) {
+          array[l] = lcElement;
+        }
+        element = lcElement;
+      }
+    }
+    set[element] = true;
+  }
+  return set;
+}
+function clone(object) {
+  var newObject = create(null);
+  var property;
+  for (property in object) {
+    if (apply(hasOwnProperty, object, [property]) === true) {
+      newObject[property] = object[property];
+    }
+  }
+  return newObject;
+}
+function lookupGetter(object, prop) {
+  while (object !== null) {
+    var desc = getOwnPropertyDescriptor(object, prop);
+    if (desc) {
+      if (desc.get) {
+        return unapply(desc.get);
+      }
+      if (typeof desc.value === "function") {
+        return unapply(desc.value);
+      }
+    }
+    object = getPrototypeOf(object);
+  }
+  function fallbackValue(element) {
+    console.warn("fallback value for", element);
+    return null;
+  }
+  return fallbackValue;
+}
+var html$1 = freeze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]);
+var svg$1 = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
+var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]);
+var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "fedropshadow", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]);
+var mathMl$1 = freeze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover"]);
+var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
+var text = freeze(["#text"]);
+var html = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot"]);
+var svg = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]);
+var mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
+var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
+var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm);
+var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
+var TMPLIT_EXPR = seal(/\${[\w\W]*}/gm);
+var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/);
+var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
+var IS_ALLOWED_URI = seal(
+  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
+  // eslint-disable-line no-useless-escape
+);
+var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
+var ATTR_WHITESPACE = seal(
+  /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
+  // eslint-disable-line no-control-regex
+);
+var DOCTYPE_NAME = seal(/^html$/i);
+var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
+var getGlobal = function getGlobal2() {
+  return typeof window === "undefined" ? null : window;
+};
+var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document) {
+  if (_typeof(trustedTypes) !== "object" || typeof trustedTypes.createPolicy !== "function") {
+    return null;
+  }
+  var suffix = null;
+  var ATTR_NAME = "data-tt-policy-suffix";
+  if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {
+    suffix = document.currentScript.getAttribute(ATTR_NAME);
+  }
+  var policyName = "dompurify" + (suffix ? "#" + suffix : "");
+  try {
+    return trustedTypes.createPolicy(policyName, {
+      createHTML: function createHTML(html2) {
+        return html2;
+      },
+      createScriptURL: function createScriptURL(scriptUrl) {
+        return scriptUrl;
+      }
+    });
+  } catch (_) {
+    console.warn("TrustedTypes policy " + policyName + " could not be created.");
+    return null;
+  }
+};
+function createDOMPurify() {
+  var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
+  var DOMPurify = function DOMPurify2(root) {
+    return createDOMPurify(root);
+  };
+  DOMPurify.version = "2.5.8";
+  DOMPurify.removed = [];
+  if (!window2 || !window2.document || window2.document.nodeType !== 9) {
+    DOMPurify.isSupported = false;
+    return DOMPurify;
+  }
+  var originalDocument = window2.document;
+  var document = window2.document;
+  var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node = window2.Node, Element = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser = window2.DOMParser, trustedTypes = window2.trustedTypes;
+  var ElementPrototype = Element.prototype;
+  var cloneNode = lookupGetter(ElementPrototype, "cloneNode");
+  var getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
+  var getChildNodes = lookupGetter(ElementPrototype, "childNodes");
+  var getParentNode = lookupGetter(ElementPrototype, "parentNode");
+  if (typeof HTMLTemplateElement === "function") {
+    var template = document.createElement("template");
+    if (template.content && template.content.ownerDocument) {
+      document = template.content.ownerDocument;
+    }
+  }
+  var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);
+  var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML("") : "";
+  var _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;
+  var importNode = originalDocument.importNode;
+  var documentMode = {};
+  try {
+    documentMode = clone(document).documentMode ? document.documentMode : {};
+  } catch (_) {
+  }
+  var hooks = {};
+  DOMPurify.isSupported = typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0 && documentMode !== 9;
+  var MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;
+  var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
+  var ALLOWED_TAGS = null;
+  var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));
+  var ALLOWED_ATTR = null;
+  var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));
+  var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {
+    tagNameCheck: {
+      writable: true,
+      configurable: false,
+      enumerable: true,
+      value: null
+    },
+    attributeNameCheck: {
+      writable: true,
+      configurable: false,
+      enumerable: true,
+      value: null
+    },
+    allowCustomizedBuiltInElements: {
+      writable: true,
+      configurable: false,
+      enumerable: true,
+      value: false
+    }
+  }));
+  var FORBID_TAGS = null;
+  var FORBID_ATTR = null;
+  var ALLOW_ARIA_ATTR = true;
+  var ALLOW_DATA_ATTR = true;
+  var ALLOW_UNKNOWN_PROTOCOLS = false;
+  var ALLOW_SELF_CLOSE_IN_ATTR = true;
+  var SAFE_FOR_TEMPLATES = false;
+  var SAFE_FOR_XML = true;
+  var WHOLE_DOCUMENT = false;
+  var SET_CONFIG = false;
+  var FORCE_BODY = false;
+  var RETURN_DOM = false;
+  var RETURN_DOM_FRAGMENT = false;
+  var RETURN_TRUSTED_TYPE = false;
+  var SANITIZE_DOM = true;
+  var SANITIZE_NAMED_PROPS = false;
+  var SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
+  var KEEP_CONTENT = true;
+  var IN_PLACE = false;
+  var USE_PROFILES = {};
+  var FORBID_CONTENTS = null;
+  var DEFAULT_FORBID_CONTENTS = addToSet({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]);
+  var DATA_URI_TAGS = null;
+  var DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
+  var URI_SAFE_ATTRIBUTES = null;
+  var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
+  var MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
+  var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
+  var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
+  var NAMESPACE = HTML_NAMESPACE;
+  var IS_EMPTY_INPUT = false;
+  var ALLOWED_NAMESPACES = null;
+  var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
+  var PARSER_MEDIA_TYPE;
+  var SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
+  var DEFAULT_PARSER_MEDIA_TYPE = "text/html";
+  var transformCaseFunc;
+  var CONFIG = null;
+  var formElement = document.createElement("form");
+  var isRegexOrFunction = function isRegexOrFunction2(testValue) {
+    return testValue instanceof RegExp || testValue instanceof Function;
+  };
+  var _parseConfig = function _parseConfig2(cfg) {
+    if (CONFIG && CONFIG === cfg) {
+      return;
+    }
+    if (!cfg || _typeof(cfg) !== "object") {
+      cfg = {};
+    }
+    cfg = clone(cfg);
+    PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
+    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;
+    transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
+    ALLOWED_TAGS = "ALLOWED_TAGS" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
+    ALLOWED_ATTR = "ALLOWED_ATTR" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
+    ALLOWED_NAMESPACES = "ALLOWED_NAMESPACES" in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
+    URI_SAFE_ATTRIBUTES = "ADD_URI_SAFE_ATTR" in cfg ? addToSet(
+      clone(DEFAULT_URI_SAFE_ATTRIBUTES),
+      // eslint-disable-line indent
+      cfg.ADD_URI_SAFE_ATTR,
+      // eslint-disable-line indent
+      transformCaseFunc
+      // eslint-disable-line indent
+    ) : DEFAULT_URI_SAFE_ATTRIBUTES;
+    DATA_URI_TAGS = "ADD_DATA_URI_TAGS" in cfg ? addToSet(
+      clone(DEFAULT_DATA_URI_TAGS),
+      // eslint-disable-line indent
+      cfg.ADD_DATA_URI_TAGS,
+      // eslint-disable-line indent
+      transformCaseFunc
+      // eslint-disable-line indent
+    ) : DEFAULT_DATA_URI_TAGS;
+    FORBID_CONTENTS = "FORBID_CONTENTS" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
+    FORBID_TAGS = "FORBID_TAGS" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};
+    FORBID_ATTR = "FORBID_ATTR" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};
+    USE_PROFILES = "USE_PROFILES" in cfg ? cfg.USE_PROFILES : false;
+    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
+    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
+    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
+    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;
+    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
+    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;
+    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
+    RETURN_DOM = cfg.RETURN_DOM || false;
+    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
+    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
+    FORCE_BODY = cfg.FORCE_BODY || false;
+    SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
+    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;
+    KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
+    IN_PLACE = cfg.IN_PLACE || false;
+    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;
+    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
+    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
+    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
+      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
+    }
+    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
+      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
+    }
+    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") {
+      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
+    }
+    if (SAFE_FOR_TEMPLATES) {
+      ALLOW_DATA_ATTR = false;
+    }
+    if (RETURN_DOM_FRAGMENT) {
+      RETURN_DOM = true;
+    }
+    if (USE_PROFILES) {
+      ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));
+      ALLOWED_ATTR = [];
+      if (USE_PROFILES.html === true) {
+        addToSet(ALLOWED_TAGS, html$1);
+        addToSet(ALLOWED_ATTR, html);
+      }
+      if (USE_PROFILES.svg === true) {
+        addToSet(ALLOWED_TAGS, svg$1);
+        addToSet(ALLOWED_ATTR, svg);
+        addToSet(ALLOWED_ATTR, xml);
+      }
+      if (USE_PROFILES.svgFilters === true) {
+        addToSet(ALLOWED_TAGS, svgFilters);
+        addToSet(ALLOWED_ATTR, svg);
+        addToSet(ALLOWED_ATTR, xml);
+      }
+      if (USE_PROFILES.mathMl === true) {
+        addToSet(ALLOWED_TAGS, mathMl$1);
+        addToSet(ALLOWED_ATTR, mathMl);
+        addToSet(ALLOWED_ATTR, xml);
+      }
+    }
+    if (cfg.ADD_TAGS) {
+      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
+        ALLOWED_TAGS = clone(ALLOWED_TAGS);
+      }
+      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
+    }
+    if (cfg.ADD_ATTR) {
+      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
+        ALLOWED_ATTR = clone(ALLOWED_ATTR);
+      }
+      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
+    }
+    if (cfg.ADD_URI_SAFE_ATTR) {
+      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
+    }
+    if (cfg.FORBID_CONTENTS) {
+      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
+        FORBID_CONTENTS = clone(FORBID_CONTENTS);
+      }
+      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
+    }
+    if (KEEP_CONTENT) {
+      ALLOWED_TAGS["#text"] = true;
+    }
+    if (WHOLE_DOCUMENT) {
+      addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
+    }
+    if (ALLOWED_TAGS.table) {
+      addToSet(ALLOWED_TAGS, ["tbody"]);
+      delete FORBID_TAGS.tbody;
+    }
+    if (freeze) {
+      freeze(cfg);
+    }
+    CONFIG = cfg;
+  };
+  var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
+  var HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]);
+  var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]);
+  var ALL_SVG_TAGS = addToSet({}, svg$1);
+  addToSet(ALL_SVG_TAGS, svgFilters);
+  addToSet(ALL_SVG_TAGS, svgDisallowed);
+  var ALL_MATHML_TAGS = addToSet({}, mathMl$1);
+  addToSet(ALL_MATHML_TAGS, mathMlDisallowed);
+  var _checkValidNamespace = function _checkValidNamespace2(element) {
+    var parent = getParentNode(element);
+    if (!parent || !parent.tagName) {
+      parent = {
+        namespaceURI: NAMESPACE,
+        tagName: "template"
+      };
+    }
+    var tagName = stringToLowerCase(element.tagName);
+    var parentTagName = stringToLowerCase(parent.tagName);
+    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
+      return false;
+    }
+    if (element.namespaceURI === SVG_NAMESPACE) {
+      if (parent.namespaceURI === HTML_NAMESPACE) {
+        return tagName === "svg";
+      }
+      if (parent.namespaceURI === MATHML_NAMESPACE) {
+        return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
+      }
+      return Boolean(ALL_SVG_TAGS[tagName]);
+    }
+    if (element.namespaceURI === MATHML_NAMESPACE) {
+      if (parent.namespaceURI === HTML_NAMESPACE) {
+        return tagName === "math";
+      }
+      if (parent.namespaceURI === SVG_NAMESPACE) {
+        return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
+      }
+      return Boolean(ALL_MATHML_TAGS[tagName]);
+    }
+    if (element.namespaceURI === HTML_NAMESPACE) {
+      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
+        return false;
+      }
+      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
+        return false;
+      }
+      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
+    }
+    if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
+      return true;
+    }
+    return false;
+  };
+  var _forceRemove = function _forceRemove2(node) {
+    arrayPush(DOMPurify.removed, {
+      element: node
+    });
+    try {
+      node.parentNode.removeChild(node);
+    } catch (_) {
+      try {
+        node.outerHTML = emptyHTML;
+      } catch (_2) {
+        node.remove();
+      }
+    }
+  };
+  var _removeAttribute = function _removeAttribute2(name, node) {
+    try {
+      arrayPush(DOMPurify.removed, {
+        attribute: node.getAttributeNode(name),
+        from: node
+      });
+    } catch (_) {
+      arrayPush(DOMPurify.removed, {
+        attribute: null,
+        from: node
+      });
+    }
+    node.removeAttribute(name);
+    if (name === "is" && !ALLOWED_ATTR[name]) {
+      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
+        try {
+          _forceRemove(node);
+        } catch (_) {
+        }
+      } else {
+        try {
+          node.setAttribute(name, "");
+        } catch (_) {
+        }
+      }
+    }
+  };
+  var _initDocument = function _initDocument2(dirty) {
+    var doc;
+    var leadingWhitespace;
+    if (FORCE_BODY) {
+      dirty = "<remove></remove>" + dirty;
+    } else {
+      var matches = stringMatch(dirty, /^[\r\n\t ]+/);
+      leadingWhitespace = matches && matches[0];
+    }
+    if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) {
+      dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
+    }
+    var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
+    if (NAMESPACE === HTML_NAMESPACE) {
+      try {
+        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
+      } catch (_) {
+      }
+    }
+    if (!doc || !doc.documentElement) {
+      doc = implementation.createDocument(NAMESPACE, "template", null);
+      try {
+        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
+      } catch (_) {
+      }
+    }
+    var body = doc.body || doc.documentElement;
+    if (dirty && leadingWhitespace) {
+      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
+    }
+    if (NAMESPACE === HTML_NAMESPACE) {
+      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
+    }
+    return WHOLE_DOCUMENT ? doc.documentElement : body;
+  };
+  var _createIterator = function _createIterator2(root) {
+    return createNodeIterator.call(
+      root.ownerDocument || root,
+      root,
+      // eslint-disable-next-line no-bitwise
+      NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION,
+      null,
+      false
+    );
+  };
+  var _isClobbered = function _isClobbered2(elm) {
+    return elm instanceof HTMLFormElement && (typeof elm.nodeName !== "string" || typeof elm.textContent !== "string" || typeof elm.removeChild !== "function" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== "function" || typeof elm.setAttribute !== "function" || typeof elm.namespaceURI !== "string" || typeof elm.insertBefore !== "function" || typeof elm.hasChildNodes !== "function");
+  };
+  var _isNode = function _isNode2(object) {
+    return _typeof(Node) === "object" ? object instanceof Node : object && _typeof(object) === "object" && typeof object.nodeType === "number" && typeof object.nodeName === "string";
+  };
+  var _executeHook = function _executeHook2(entryPoint, currentNode, data) {
+    if (!hooks[entryPoint]) {
+      return;
+    }
+    arrayForEach(hooks[entryPoint], function(hook) {
+      hook.call(DOMPurify, currentNode, data, CONFIG);
+    });
+  };
+  var _sanitizeElements = function _sanitizeElements2(currentNode) {
+    var content;
+    _executeHook("beforeSanitizeElements", currentNode, null);
+    if (_isClobbered(currentNode)) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    if (regExpTest(/[\u0080-\uFFFF]/, currentNode.nodeName)) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    var tagName = transformCaseFunc(currentNode.nodeName);
+    _executeHook("uponSanitizeElement", currentNode, {
+      tagName,
+      allowedTags: ALLOWED_TAGS
+    });
+    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    if (tagName === "select" && regExpTest(/<template/i, currentNode.innerHTML)) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    if (currentNode.nodeType === 7) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    if (SAFE_FOR_XML && currentNode.nodeType === 8 && regExpTest(/<[/\w]/g, currentNode.data)) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
+      if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {
+        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;
+        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;
+      }
+      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
+        var parentNode = getParentNode(currentNode) || currentNode.parentNode;
+        var childNodes = getChildNodes(currentNode) || currentNode.childNodes;
+        if (childNodes && parentNode) {
+          var childCount = childNodes.length;
+          for (var i = childCount - 1; i >= 0; --i) {
+            var childClone = cloneNode(childNodes[i], true);
+            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
+            parentNode.insertBefore(childClone, getNextSibling(currentNode));
+          }
+        }
+      }
+      _forceRemove(currentNode);
+      return true;
+    }
+    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
+      _forceRemove(currentNode);
+      return true;
+    }
+    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {
+      content = currentNode.textContent;
+      content = stringReplace(content, MUSTACHE_EXPR$1, " ");
+      content = stringReplace(content, ERB_EXPR$1, " ");
+      content = stringReplace(content, TMPLIT_EXPR$1, " ");
+      if (currentNode.textContent !== content) {
+        arrayPush(DOMPurify.removed, {
+          element: currentNode.cloneNode()
+        });
+        currentNode.textContent = content;
+      }
+    }
+    _executeHook("afterSanitizeElements", currentNode, null);
+    return false;
+  };
+  var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
+    if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document || value in formElement)) {
+      return false;
+    }
+    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ;
+    else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ;
+    else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
+      if (
+        // First condition does a very basic check if a) it's basically a valid custom element tagname AND
+        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
+        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
+        _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND
+        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
+        lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))
+      ) ;
+      else {
+        return false;
+      }
+    } else if (URI_SAFE_ATTRIBUTES[lcName]) ;
+    else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) ;
+    else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) ;
+    else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) ;
+    else if (value) {
+      return false;
+    } else ;
+    return true;
+  };
+  var _basicCustomElementTest = function _basicCustomElementTest2(tagName) {
+    return tagName !== "annotation-xml" && stringMatch(tagName, CUSTOM_ELEMENT$1);
+  };
+  var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
+    var attr;
+    var value;
+    var lcName;
+    var l;
+    _executeHook("beforeSanitizeAttributes", currentNode, null);
+    var attributes = currentNode.attributes;
+    if (!attributes || _isClobbered(currentNode)) {
+      return;
+    }
+    var hookEvent = {
+      attrName: "",
+      attrValue: "",
+      keepAttr: true,
+      allowedAttributes: ALLOWED_ATTR
+    };
+    l = attributes.length;
+    while (l--) {
+      attr = attributes[l];
+      var _attr = attr, name = _attr.name, namespaceURI = _attr.namespaceURI;
+      value = name === "value" ? attr.value : stringTrim(attr.value);
+      lcName = transformCaseFunc(name);
+      hookEvent.attrName = lcName;
+      hookEvent.attrValue = value;
+      hookEvent.keepAttr = true;
+      hookEvent.forceKeepAttr = void 0;
+      _executeHook("uponSanitizeAttribute", currentNode, hookEvent);
+      value = hookEvent.attrValue;
+      if (hookEvent.forceKeepAttr) {
+        continue;
+      }
+      _removeAttribute(name, currentNode);
+      if (!hookEvent.keepAttr) {
+        continue;
+      }
+      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
+        _removeAttribute(name, currentNode);
+        continue;
+      }
+      if (SAFE_FOR_TEMPLATES) {
+        value = stringReplace(value, MUSTACHE_EXPR$1, " ");
+        value = stringReplace(value, ERB_EXPR$1, " ");
+        value = stringReplace(value, TMPLIT_EXPR$1, " ");
+      }
+      var lcTag = transformCaseFunc(currentNode.nodeName);
+      if (!_isValidAttribute(lcTag, lcName, value)) {
+        continue;
+      }
+      if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) {
+        _removeAttribute(name, currentNode);
+        value = SANITIZE_NAMED_PROPS_PREFIX + value;
+      }
+      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
+        _removeAttribute(name, currentNode);
+        continue;
+      }
+      if (trustedTypesPolicy && _typeof(trustedTypes) === "object" && typeof trustedTypes.getAttributeType === "function") {
+        if (namespaceURI) ;
+        else {
+          switch (trustedTypes.getAttributeType(lcTag, lcName)) {
+            case "TrustedHTML": {
+              value = trustedTypesPolicy.createHTML(value);
+              break;
+            }
+            case "TrustedScriptURL": {
+              value = trustedTypesPolicy.createScriptURL(value);
+              break;
+            }
+          }
+        }
+      }
+      try {
+        if (namespaceURI) {
+          currentNode.setAttributeNS(namespaceURI, name, value);
+        } else {
+          currentNode.setAttribute(name, value);
+        }
+        if (_isClobbered(currentNode)) {
+          _forceRemove(currentNode);
+        } else {
+          arrayPop(DOMPurify.removed);
+        }
+      } catch (_) {
+      }
+    }
+    _executeHook("afterSanitizeAttributes", currentNode, null);
+  };
+  var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {
+    var shadowNode;
+    var shadowIterator = _createIterator(fragment);
+    _executeHook("beforeSanitizeShadowDOM", fragment, null);
+    while (shadowNode = shadowIterator.nextNode()) {
+      _executeHook("uponSanitizeShadowNode", shadowNode, null);
+      _sanitizeElements(shadowNode);
+      _sanitizeAttributes(shadowNode);
+      if (shadowNode.content instanceof DocumentFragment) {
+        _sanitizeShadowDOM2(shadowNode.content);
+      }
+    }
+    _executeHook("afterSanitizeShadowDOM", fragment, null);
+  };
+  DOMPurify.sanitize = function(dirty) {
+    var cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+    var body;
+    var importedNode;
+    var currentNode;
+    var oldNode;
+    var returnNode;
+    IS_EMPTY_INPUT = !dirty;
+    if (IS_EMPTY_INPUT) {
+      dirty = "<!-->";
+    }
+    if (typeof dirty !== "string" && !_isNode(dirty)) {
+      if (typeof dirty.toString === "function") {
+        dirty = dirty.toString();
+        if (typeof dirty !== "string") {
+          throw typeErrorCreate("dirty is not a string, aborting");
+        }
+      } else {
+        throw typeErrorCreate("toString is not a function");
+      }
+    }
+    if (!DOMPurify.isSupported) {
+      if (_typeof(window2.toStaticHTML) === "object" || typeof window2.toStaticHTML === "function") {
+        if (typeof dirty === "string") {
+          return window2.toStaticHTML(dirty);
+        }
+        if (_isNode(dirty)) {
+          return window2.toStaticHTML(dirty.outerHTML);
+        }
+      }
+      return dirty;
+    }
+    if (!SET_CONFIG) {
+      _parseConfig(cfg);
+    }
+    DOMPurify.removed = [];
+    if (typeof dirty === "string") {
+      IN_PLACE = false;
+    }
+    if (IN_PLACE) {
+      if (dirty.nodeName) {
+        var tagName = transformCaseFunc(dirty.nodeName);
+        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
+          throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
+        }
+      }
+    } else if (dirty instanceof Node) {
+      body = _initDocument("<!---->");
+      importedNode = body.ownerDocument.importNode(dirty, true);
+      if (importedNode.nodeType === 1 && importedNode.nodeName === "BODY") {
+        body = importedNode;
+      } else if (importedNode.nodeName === "HTML") {
+        body = importedNode;
+      } else {
+        body.appendChild(importedNode);
+      }
+    } else {
+      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
+      dirty.indexOf("<") === -1) {
+        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
+      }
+      body = _initDocument(dirty);
+      if (!body) {
+        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
+      }
+    }
+    if (body && FORCE_BODY) {
+      _forceRemove(body.firstChild);
+    }
+    var nodeIterator = _createIterator(IN_PLACE ? dirty : body);
+    while (currentNode = nodeIterator.nextNode()) {
+      if (currentNode.nodeType === 3 && currentNode === oldNode) {
+        continue;
+      }
+      _sanitizeElements(currentNode);
+      _sanitizeAttributes(currentNode);
+      if (currentNode.content instanceof DocumentFragment) {
+        _sanitizeShadowDOM(currentNode.content);
+      }
+      oldNode = currentNode;
+    }
+    oldNode = null;
+    if (IN_PLACE) {
+      return dirty;
+    }
+    if (RETURN_DOM) {
+      if (RETURN_DOM_FRAGMENT) {
+        returnNode = createDocumentFragment.call(body.ownerDocument);
+        while (body.firstChild) {
+          returnNode.appendChild(body.firstChild);
+        }
+      } else {
+        returnNode = body;
+      }
+      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {
+        returnNode = importNode.call(originalDocument, returnNode, true);
+      }
+      return returnNode;
+    }
+    var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
+    if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
+      serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
+    }
+    if (SAFE_FOR_TEMPLATES) {
+      serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, " ");
+      serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, " ");
+      serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, " ");
+    }
+    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
+  };
+  DOMPurify.setConfig = function(cfg) {
+    _parseConfig(cfg);
+    SET_CONFIG = true;
+  };
+  DOMPurify.clearConfig = function() {
+    CONFIG = null;
+    SET_CONFIG = false;
+  };
+  DOMPurify.isValidAttribute = function(tag, attr, value) {
+    if (!CONFIG) {
+      _parseConfig({});
+    }
+    var lcTag = transformCaseFunc(tag);
+    var lcName = transformCaseFunc(attr);
+    return _isValidAttribute(lcTag, lcName, value);
+  };
+  DOMPurify.addHook = function(entryPoint, hookFunction) {
+    if (typeof hookFunction !== "function") {
+      return;
+    }
+    hooks[entryPoint] = hooks[entryPoint] || [];
+    arrayPush(hooks[entryPoint], hookFunction);
+  };
+  DOMPurify.removeHook = function(entryPoint) {
+    if (hooks[entryPoint]) {
+      return arrayPop(hooks[entryPoint]);
+    }
+  };
+  DOMPurify.removeHooks = function(entryPoint) {
+    if (hooks[entryPoint]) {
+      hooks[entryPoint] = [];
+    }
+  };
+  DOMPurify.removeAllHooks = function() {
+    hooks = {};
+  };
+  return DOMPurify;
+}
+var purify = createDOMPurify();
+export {
+  purify as default
+};
+/*! Bundled license information:
+
+dompurify/dist/purify.es.js:
+  (*! @license DOMPurify 2.5.8 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.5.8/LICENSE *)
+*/
+//# sourceMappingURL=purify.es-25GRGOID.js.map
Index: imaps-frontend/node_modules/.vite/deps/purify.es-25GRGOID.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/purify.es-25GRGOID.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/purify.es-25GRGOID.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": ["../../dompurify/src/utils.js", "../../dompurify/src/tags.js", "../../dompurify/src/attrs.js", "../../dompurify/src/regexp.js", "../../dompurify/src/purify.js"],
+  "sourcesContent": ["const {\n  hasOwnProperty,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!apply) {\n  apply = function (fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\nif (!freeze) {\n  freeze = function (x) {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function (x) {\n    return x;\n  };\n}\n\nif (!construct) {\n  construct = function (Func, args) {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\nexport function unapply(func) {\n  return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\nexport function unconstruct(func) {\n  return (...args) => construct(func, args);\n}\n\n/* Add properties to a lookup table */\nexport function addToSet(set, array, transformCaseFunc) {\n  transformCaseFunc = transformCaseFunc ?? stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n\n/* Shallow clone an object */\nexport function clone(object) {\n  const newObject = create(null);\n\n  let property;\n  for (property in object) {\n    if (apply(hasOwnProperty, object, [property]) === true) {\n      newObject[property] = object[property];\n    }\n  }\n\n  return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(element) {\n    console.warn('fallback value for', element);\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  // Object\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  hasOwnProperty,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  // RegExp\n  regExpTest,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'section',\n  'select',\n  'shadow',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n]);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'fedropshadow',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n]);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n]);\n\nexport const text = freeze(['#text']);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'xmlns',\n  'slot',\n]);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnsalign',\n  'columnlines',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lspace',\n  'lquote',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n]);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n", "import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  freeze,\n  arrayForEach,\n  arrayPop,\n  arrayPush,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  typeErrorCreate,\n  lookupGetter,\n} from './utils.js';\n\nconst getGlobal = () => (typeof window === 'undefined' ? null : window);\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, document) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (\n    document.currentScript &&\n    document.currentScript.hasAttribute(ATTR_NAME)\n  ) {\n    suffix = document.currentScript.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n  const DOMPurify = (root) => createDOMPurify(root);\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  DOMPurify.version = VERSION;\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  DOMPurify.removed = [];\n\n  if (!window || !window.document || window.document.nodeType !== 9) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  const originalDocument = window.document;\n\n  let { document } = window;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  const trustedTypesPolicy = _createTrustedTypesPolicy(\n    trustedTypes,\n    originalDocument\n  );\n  const emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let documentMode = {};\n  try {\n    documentMode = clone(document).documentMode ? document.documentMode : {};\n  } catch (_) {}\n\n  let hooks = {};\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof getParentNode === 'function' &&\n    implementation &&\n    implementation.createHTMLDocument !== undefined &&\n    documentMode !== 9;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(\n    Object.create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param  {Object} cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg) {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? (PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE)\n        : (PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE);\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS =\n      'ALLOWED_TAGS' in cfg\n        ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n        : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR =\n      'ALLOWED_ATTR' in cfg\n        ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n        : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES =\n      'ALLOWED_NAMESPACES' in cfg\n        ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n        : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES =\n      'ADD_URI_SAFE_ATTR' in cfg\n        ? addToSet(\n            clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n            cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n            transformCaseFunc // eslint-disable-line indent\n          ) // eslint-disable-line indent\n        : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS =\n      'ADD_DATA_URI_TAGS' in cfg\n        ? addToSet(\n            clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n            cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n            transformCaseFunc // eslint-disable-line indent\n          ) // eslint-disable-line indent\n        : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS =\n      'FORBID_CONTENTS' in cfg\n        ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n        : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS =\n      'FORBID_TAGS' in cfg\n        ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n        : {};\n    FORBID_ATTR =\n      'FORBID_ATTR' in cfg\n        ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n        : {};\n    USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n        'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, [...TAGS.text]);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n\n  const HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, TAGS.svg);\n  addToSet(ALL_SVG_TAGS, TAGS.svgFilters);\n  addToSet(ALL_SVG_TAGS, TAGS.svgDisallowed);\n\n  const ALL_MATHML_TAGS = addToSet({}, TAGS.mathMl);\n  addToSet(ALL_MATHML_TAGS, TAGS.mathMlDisallowed);\n\n  /**\n   *\n   *\n   * @param  {Element} element a DOM element whose namespace is being checked\n   * @returns {boolean} Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element) {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return (\n          tagName === 'svg' &&\n          (parentTagName === 'annotation-xml' ||\n            MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n        );\n      }\n\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (\n        parent.namespaceURI === SVG_NAMESPACE &&\n        !HTML_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      if (\n        parent.namespaceURI === MATHML_NAMESPACE &&\n        !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return (\n        !ALL_MATHML_TAGS[tagName] &&\n        (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n      );\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param  {Node} node a DOM node\n   */\n  const _forceRemove = function (node) {\n    arrayPush(DOMPurify.removed, { element: node });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      node.parentNode.removeChild(node);\n    } catch (_) {\n      try {\n        node.outerHTML = emptyHTML;\n      } catch (_) {\n        node.remove();\n      }\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param  {String} name an Attribute name\n   * @param  {Node} node a DOM node\n   */\n  const _removeAttribute = function (name, node) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: node.getAttributeNode(name),\n        from: node,\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: node,\n      });\n    }\n\n    node.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\"\" attributes\n    if (name === 'is' && !ALLOWED_ATTR[name]) {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(node);\n        } catch (_) {}\n      } else {\n        try {\n          node.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param  {String} dirty a string of dirty markup\n   * @return {Document} a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty) {\n    /* Create a HTML document */\n    let doc;\n    let leadingWhitespace;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy\n      ? trustedTypesPolicy.createHTML(dirty)\n      : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT\n          ? emptyHTML\n          : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * _createIterator\n   *\n   * @param  {Document} root document/fragment to create iterator for\n   * @return {Iterator} iterator instance\n   */\n  const _createIterator = function (root) {\n    return createNodeIterator.call(\n      root.ownerDocument || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n        NodeFilter.SHOW_CDATA_SECTION,\n      null,\n      false\n    );\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param  {Node} elm element to check for clobbering attacks\n   * @return {Boolean} true if clobbered, false if safe\n   */\n  const _isClobbered = function (elm) {\n    return (\n      elm instanceof HTMLFormElement &&\n      (typeof elm.nodeName !== 'string' ||\n        typeof elm.textContent !== 'string' ||\n        typeof elm.removeChild !== 'function' ||\n        !(elm.attributes instanceof NamedNodeMap) ||\n        typeof elm.removeAttribute !== 'function' ||\n        typeof elm.setAttribute !== 'function' ||\n        typeof elm.namespaceURI !== 'string' ||\n        typeof elm.insertBefore !== 'function' ||\n        typeof elm.hasChildNodes !== 'function')\n    );\n  };\n\n  /**\n   * _isNode\n   *\n   * @param  {Node} obj object to check whether it's a DOM node\n   * @return {Boolean} true is object is a DOM node\n   */\n  const _isNode = function (object) {\n    return typeof Node === 'object'\n      ? object instanceof Node\n      : object &&\n          typeof object === 'object' &&\n          typeof object.nodeType === 'number' &&\n          typeof object.nodeName === 'string';\n  };\n\n  /**\n   * _executeHook\n   * Execute user configurable hooks\n   *\n   * @param  {String} entryPoint  Name of the hook's entry point\n   * @param  {Node} currentNode node to work on with the hook\n   * @param  {Object} data additional hook parameters\n   */\n  const _executeHook = function (entryPoint, currentNode, data) {\n    if (!hooks[entryPoint]) {\n      return;\n    }\n\n    arrayForEach(hooks[entryPoint], (hook) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   *\n   * @param   {Node} currentNode to check for permission to exist\n   * @return  {Boolean} true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode) {\n    let content;\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeElements', currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check if tagname contains Unicode */\n    if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n\n    /* Execute a hook if present */\n    _executeHook('uponSanitizeElement', currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      (!_isNode(currentNode.content) ||\n        !_isNode(currentNode.content.firstElementChild)) &&\n      regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n      regExpTest(/<[/\\w]/g, currentNode.textContent)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Mitigate a problem with templates inside select */\n    if (\n      tagName === 'select' &&\n      regExpTest(/<template/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any ocurrence of processing instructions */\n    if (currentNode.nodeType === 7) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.nodeType === 8 &&\n      regExpTest(/<[/\\w]/g, currentNode.data)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n          regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n        )\n          return false;\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n        )\n          return false;\n      }\n\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if (\n      (tagName === 'noscript' ||\n        tagName === 'noembed' ||\n        tagName === 'noframes') &&\n      regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      content = stringReplace(content, MUSTACHE_EXPR, ' ');\n      content = stringReplace(content, ERB_EXPR, ' ');\n      content = stringReplace(content, TMPLIT_EXPR, ' ');\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeElements', currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param  {string} lcTag Lowercase tag name of containing element.\n   * @param  {string} lcName Lowercase attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (\n      ALLOW_DATA_ATTR &&\n      !FORBID_ATTR[lcName] &&\n      regExpTest(DATA_ATTR, lcName)\n    ) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n        // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        (_basicCustomElementTest(lcTag) &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n          ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n            (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n        // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n      ) {\n        // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n        // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n      } else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (\n      regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Check for binary attributes */\n    } else if (value) {\n      return false;\n    } else {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    }\n\n    return true;\n  };\n\n  /**\n   * _basicCustomElementCheck\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   * @param {string} tagName name of the tag of the node to sanitize\n   */\n  const _basicCustomElementTest = function (tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param  {Node} currentNode to sanitize\n   */\n  const _sanitizeAttributes = function (currentNode) {\n    let attr;\n    let value;\n    let lcName;\n    let l;\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n    };\n    l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      attr = attributes[l];\n      const { name, namespaceURI } = attr;\n      value = name === 'value' ? attr.value : stringTrim(attr.value);\n      lcName = transformCaseFunc(name);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = stringReplace(value, MUSTACHE_EXPR, ' ');\n        value = stringReplace(value, ERB_EXPR, ' ');\n        value = stringReplace(value, TMPLIT_EXPR, ' ');\n      }\n\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      if (\n        trustedTypesPolicy &&\n        typeof trustedTypes === 'object' &&\n        typeof trustedTypes.getAttributeType === 'function'\n      ) {\n        if (namespaceURI) {\n          /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n        } else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML': {\n              value = trustedTypesPolicy.createHTML(value);\n              break;\n            }\n\n            case 'TrustedScriptURL': {\n              value = trustedTypesPolicy.createScriptURL(value);\n              break;\n            }\n\n            default: {\n              break;\n            }\n          }\n        }\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeAttributes', currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param  {DocumentFragment} fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment) {\n    let shadowNode;\n    const shadowIterator = _createIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeShadowNode', shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeShadowDOM', fragment, null);\n  };\n\n  /**\n   * Sanitize\n   * Public method providing core sanitation functionality\n   *\n   * @param {String|Node} dirty string or DOM node\n   * @param {Object} configuration object\n   */\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body;\n    let importedNode;\n    let currentNode;\n    let oldNode;\n    let returnNode;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n\n    /* Check we can run. Otherwise fall back or ignore */\n    if (!DOMPurify.isSupported) {\n      if (\n        typeof window.toStaticHTML === 'object' ||\n        typeof window.toStaticHTML === 'function'\n      ) {\n        if (typeof dirty === 'string') {\n          return window.toStaticHTML(dirty);\n        }\n\n        if (_isNode(dirty)) {\n          return window.toStaticHTML(dirty.outerHTML);\n        }\n      }\n\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? trustedTypesPolicy.createHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while ((currentNode = nodeIterator.nextNode())) {\n      /* Fix IE's strange behavior with manipulated textNodes #89 */\n      if (currentNode.nodeType === 3 && currentNode === oldNode) {\n        continue;\n      }\n\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n\n      oldNode = currentNode;\n    }\n\n    oldNode = null;\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR, ' ');\n      serializedHTML = stringReplace(serializedHTML, ERB_EXPR, ' ');\n      serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR, ' ');\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? trustedTypesPolicy.createHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  /**\n   * Public method to set the configuration once\n   * setConfig\n   *\n   * @param {Object} cfg configuration object\n   */\n  DOMPurify.setConfig = function (cfg) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  /**\n   * Public method to remove the configuration\n   * clearConfig\n   *\n   */\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  /**\n   * Public method to check if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   * isValidAttribute\n   *\n   * @param  {string} tag Tag name of containing element.\n   * @param  {string} attr Attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n   */\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  /**\n   * AddHook\n   * Public method to add DOMPurify hooks\n   *\n   * @param {String} entryPoint entry point for the hook to add\n   * @param {Function} hookFunction function to execute\n   */\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    hooks[entryPoint] = hooks[entryPoint] || [];\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  /**\n   * RemoveHook\n   * Public method to remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if more are present)\n   *\n   * @param {String} entryPoint entry point for the hook to remove\n   * @return {Function} removed(popped) hook\n   */\n  DOMPurify.removeHook = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      return arrayPop(hooks[entryPoint]);\n    }\n  };\n\n  /**\n   * RemoveHooks\n   * Public method to remove all DOMPurify hooks at a given entryPoint\n   *\n   * @param  {String} entryPoint entry point for the hooks to remove\n   */\n  DOMPurify.removeHooks = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint] = [];\n    }\n  };\n\n  /**\n   * RemoveAllHooks\n   * Public method to remove all DOMPurify hooks\n   *\n   */\n  DOMPurify.removeAllHooks = function () {\n    hooks = {};\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n"],
+  "mappings": "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AG;MACzB;AAEA,UAAI,OAAOD,KAAKE,UAAU,YAAY;AACpC,eAAOnD,QAAQiD,KAAKE,KAAK;MAC3B;IACF;AAEAP,aAAS7D,eAAe6D,MAAM;EAChC;AAEA,WAASQ,cAAcX,SAAS;AAC9BY,YAAQC,KAAK,sBAAsBb,OAAO;AAC1C,WAAO;EACT;AAEA,SAAOW;AACT;ACjIO,IAAMG,SAAOtE,OAAO,CACzB,KACA,QACA,WACA,WACA,QACA,WACA,SACA,SACA,KACA,OACA,OACA,OACA,SACA,cACA,QACA,MACA,UACA,UACA,WACA,UACA,QACA,QACA,OACA,YACA,WACA,QACA,YACA,MACA,aACA,OACA,WACA,OACA,UACA,OACA,OACA,MACA,MACA,WACA,MACA,YACA,cACA,UACA,QACA,UACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,UACA,UACA,MACA,QACA,KACA,OACA,SACA,OACA,OACA,SACA,UACA,MACA,QACA,OACA,QACA,WACA,QACA,YACA,SACA,OACA,QACA,MACA,YACA,UACA,UACA,KACA,WACA,OACA,YACA,KACA,MACA,MACA,QACA,KACA,QACA,WACA,UACA,UACA,SACA,UACA,UACA,QACA,UACA,UACA,SACA,OACA,WACA,OACA,SACA,SACA,MACA,YACA,YACA,SACA,MACA,SACA,QACA,MACA,SACA,MACA,KACA,MACA,OACA,SACA,KAAK,CACN;AAGM,IAAMuE,QAAMvE,OAAO,CACxB,OACA,KACA,YACA,eACA,gBACA,gBACA,iBACA,oBACA,UACA,YACA,QACA,QACA,WACA,UACA,QACA,KACA,SACA,YACA,SACA,SACA,QACA,kBACA,UACA,QACA,YACA,SACA,QACA,WACA,WACA,YACA,kBACA,QACA,QACA,SACA,UACA,UACA,QACA,YACA,SACA,QACA,SACA,QACA,OAAO,CACR;AAEM,IAAMwE,aAAaxE,OAAO,CAC/B,WACA,iBACA,uBACA,eACA,oBACA,qBACA,qBACA,kBACA,WACA,WACA,WACA,WACA,WACA,kBACA,WACA,WACA,eACA,gBACA,YACA,gBACA,sBACA,eACA,UACA,cAAc,CACf;AAMM,IAAMyE,gBAAgBzE,OAAO,CAClC,WACA,iBACA,UACA,WACA,gBACA,aACA,oBACA,kBACA,iBACA,iBACA,iBACA,SACA,aACA,QACA,gBACA,aACA,WACA,iBACA,UACA,OACA,cACA,WACA,KAAK,CACN;AAEM,IAAM0E,WAAS1E,OAAO,CAC3B,QACA,YACA,UACA,WACA,SACA,UACA,MACA,cACA,iBACA,MACA,MACA,SACA,WACA,YACA,SACA,QACA,MACA,UACA,SACA,UACA,QACA,QACA,WACA,UACA,OACA,SACA,OACA,UACA,YAAY,CACb;AAIM,IAAM2E,mBAAmB3E,OAAO,CACrC,WACA,eACA,cACA,YACA,aACA,WACA,WACA,UACA,UACA,SACA,aACA,cACA,kBACA,eACA,MAAM,CACP;AAEM,IAAM4E,OAAO5E,OAAO,CAAC,OAAO,CAAC;ACpR7B,IAAMsE,OAAOtE,OAAO,CACzB,UACA,UACA,SACA,OACA,kBACA,gBACA,wBACA,YACA,cACA,WACA,UACA,WACA,eACA,eACA,WACA,QACA,SACA,SACA,SACA,QACA,WACA,YACA,gBACA,UACA,eACA,YACA,YACA,WACA,OACA,YACA,2BACA,yBACA,YACA,aACA,WACA,gBACA,QACA,OACA,WACA,UACA,UACA,QACA,QACA,YACA,MACA,aACA,aACA,SACA,QACA,SACA,QACA,QACA,WACA,QACA,OACA,OACA,aACA,SACA,UACA,OACA,aACA,YACA,SACA,QACA,SACA,WACA,cACA,UACA,QACA,WACA,WACA,eACA,eACA,UACA,WACA,WACA,cACA,YACA,OACA,YACA,OACA,YACA,QACA,QACA,WACA,cACA,SACA,YACA,SACA,QACA,SACA,QACA,WACA,SACA,OACA,UACA,QACA,SACA,WACA,YACA,SACA,aACA,QACA,UACA,UACA,SACA,SACA,SACA,MAAM,CACP;AAEM,IAAMuE,MAAMvE,OAAO,CACxB,iBACA,cACA,YACA,sBACA,UACA,iBACA,iBACA,WACA,iBACA,kBACA,SACA,QACA,MACA,SACA,QACA,iBACA,aACA,aACA,SACA,uBACA,+BACA,iBACA,mBACA,MACA,MACA,KACA,MACA,MACA,mBACA,aACA,WACA,WACA,OACA,YACA,aACA,OACA,QACA,gBACA,aACA,UACA,eACA,eACA,iBACA,eACA,aACA,oBACA,gBACA,cACA,gBACA,eACA,MACA,MACA,MACA,MACA,cACA,YACA,iBACA,qBACA,UACA,QACA,MACA,mBACA,MACA,OACA,KACA,MACA,MACA,MACA,MACA,WACA,aACA,cACA,YACA,QACA,gBACA,kBACA,gBACA,oBACA,kBACA,SACA,cACA,cACA,gBACA,gBACA,eACA,eACA,oBACA,aACA,OACA,QACA,SACA,UACA,QACA,OACA,QACA,cACA,UACA,YACA,WACA,SACA,UACA,eACA,UACA,YACA,eACA,QACA,cACA,uBACA,oBACA,gBACA,UACA,iBACA,uBACA,kBACA,KACA,MACA,MACA,UACA,QACA,QACA,eACA,aACA,WACA,UACA,UACA,SACA,QACA,mBACA,oBACA,oBACA,gBACA,eACA,gBACA,eACA,cACA,gBACA,oBACA,qBACA,kBACA,mBACA,qBACA,kBACA,UACA,gBACA,SACA,gBACA,kBACA,YACA,WACA,WACA,aACA,oBACA,eACA,mBACA,kBACA,cACA,QACA,MACA,MACA,WACA,UACA,WACA,cACA,WACA,cACA,iBACA,iBACA,SACA,gBACA,QACA,gBACA,oBACA,oBACA,KACA,MACA,MACA,SACA,KACA,MACA,MACA,KACA,YAAY,CACb;AAEM,IAAM0E,SAAS1E,OAAO,CAC3B,UACA,eACA,SACA,YACA,SACA,gBACA,eACA,cACA,cACA,SACA,OACA,WACA,gBACA,YACA,SACA,SACA,UACA,QACA,MACA,WACA,UACA,iBACA,UACA,UACA,kBACA,aACA,YACA,eACA,WACA,WACA,iBACA,YACA,YACA,QACA,YACA,YACA,cACA,WACA,UACA,UACA,eACA,iBACA,wBACA,aACA,aACA,cACA,YACA,kB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",
+  "names": ["hasOwnProperty", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "fun", "thisValue", "args", "x", "Func", "_construct", "_toConsumableArray", "arrayForEach", "unapply", "Array", "prototype", "forEach", "arrayPop", "pop", "arrayPush", "push", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "func", "thisArg", "_len", "arguments", "length", "_key", "_len2", "_key2", "addToSet", "set", "array", "transformCaseFunc", "_transformCaseFunc", "l", "element", "lcElement", "clone", "object", "newObject", "property", "lookupGetter", "prop", "desc", "get", "value", "fallbackValue", "console", "warn", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "document", "_typeof", "createPolicy", "suffix", "ATTR_NAME", "currentScript", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "_", "createDOMPurify", "undefined", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "isSupported", "originalDocument", "DocumentFragment", "HTMLTemplateElement", "Node", "Element", "NodeFilter", "_window$NamedNodeMap", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "getNextSibling", "getChildNodes", "getParentNode", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "_document", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "documentMode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "concat", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "ADD_ATTR", "table", "tbody", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "Boolean", "_forceRemove", "node", "parentNode", "removeChild", "outerHTML", "remove", "_removeAttribute", "name", "attribute", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_isClobbered", "elm", "nodeName", "textContent", "attributes", "hasChildNodes", "_isNode", "_executeHook", "entryPoint", "currentNode", "data", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_basicCustomElementTest", "childCount", "i", "childClone", "__removalCount", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "attr", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "_attr", "forceKeepAttr", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "nextNode", "sanitize", "importedNode", "oldNode", "returnNode", "toStaticHTML", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmod", "serializedHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "hookFunction", "removeHook", "removeHooks", "removeAllHooks"]
+}
Index: imaps-frontend/node_modules/.vite/deps/react-tiles-dnd.js
===================================================================
--- imaps-frontend/node_modules/.vite/deps/react-tiles-dnd.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/.vite/deps/react-tiles-dnd.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -840,7 +840,7 @@
 });
 
-// node_modules/nano-css/index.js
+// node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/index.js
 var require_nano_css = __commonJS({
-  "node_modules/nano-css/index.js"(exports2) {
+  "node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/index.js"(exports2) {
     "use strict";
     var KEBAB_REGEX = /[A-Z]/g;
@@ -953,7 +953,7 @@
 });
 
-// node_modules/nano-css/addon/__dev__/warnOnMissingDependencies.js
+// node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/__dev__/warnOnMissingDependencies.js
 var require_warnOnMissingDependencies = __commonJS({
-  "node_modules/nano-css/addon/__dev__/warnOnMissingDependencies.js"(exports2, module2) {
+  "node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/__dev__/warnOnMissingDependencies.js"(exports2, module2) {
     "use strict";
     var pkgName = "nano-css";
@@ -977,7 +977,7 @@
 });
 
-// node_modules/nano-css/addon/cssom.js
+// node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/cssom.js
 var require_cssom = __commonJS({
-  "node_modules/nano-css/addon/cssom.js"(exports2) {
+  "node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/cssom.js"(exports2) {
     "use strict";
     exports2.addon = function(renderer) {
@@ -1005,7 +1005,7 @@
 });
 
-// node_modules/nano-css/addon/vcssom/removeRule.js
+// node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom/removeRule.js
 var require_removeRule = __commonJS({
-  "node_modules/nano-css/addon/vcssom/removeRule.js"(exports2) {
+  "node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom/removeRule.js"(exports2) {
     function removeRule(rule) {
       var maxIndex = rule.index;
@@ -1025,7 +1025,7 @@
 });
 
-// node_modules/nano-css/addon/vcssom.js
+// node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom.js
 var require_vcssom = __commonJS({
-  "node_modules/nano-css/addon/vcssom.js"(exports2) {
+  "node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom.js"(exports2) {
     "use strict";
     var removeRule = require_removeRule().removeRule;
@@ -1101,7 +1101,7 @@
 });
 
-// node_modules/nano-css/addon/vcssom/cssToTree.js
+// node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom/cssToTree.js
 var require_cssToTree = __commonJS({
-  "node_modules/nano-css/addon/vcssom/cssToTree.js"(exports2) {
+  "node_modules/react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom/cssToTree.js"(exports2) {
     function cssToTree2(tree, css, selector, prelude) {
       var declarations = {};
@@ -3475,42 +3475,42 @@
 };
 
-// node_modules/react-use/esm/factory/createMemo.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createMemo.js
 var import_react4 = __toESM(require_react());
 
-// node_modules/react-use/esm/factory/createReducerContext.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createReducerContext.js
 var import_react5 = __toESM(require_react());
 
-// node_modules/react-use/esm/factory/createReducer.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createReducer.js
 var import_react8 = __toESM(require_react());
 
-// node_modules/react-use/esm/useUpdateEffect.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useUpdateEffect.js
 var import_react7 = __toESM(require_react());
 
-// node_modules/react-use/esm/useFirstMountState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useFirstMountState.js
 var import_react6 = __toESM(require_react());
 
-// node_modules/react-use/esm/factory/createStateContext.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createStateContext.js
 var import_react9 = __toESM(require_react());
 
-// node_modules/react-use/esm/useAsync.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useAsync.js
 var import_react12 = __toESM(require_react());
 
-// node_modules/react-use/esm/useAsyncFn.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useAsyncFn.js
 init_tslib_es6();
 var import_react11 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMountedState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMountedState.js
 var import_react10 = __toESM(require_react());
 
-// node_modules/react-use/esm/useAsyncRetry.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useAsyncRetry.js
 init_tslib_es6();
 var import_react13 = __toESM(require_react());
 
-// node_modules/react-use/esm/factory/createHTMLMediaHook.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createHTMLMediaHook.js
 init_tslib_es6();
 var React2 = __toESM(require_react());
 var import_react15 = __toESM(require_react());
 
-// node_modules/react-use/esm/useSetState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useSetState.js
 var import_react14 = __toESM(require_react());
 var useSetState = function(initialState) {
@@ -3528,5 +3528,5 @@
 var useSetState_default = useSetState;
 
-// node_modules/react-use/esm/misc/parseTimeRanges.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/misc/parseTimeRanges.js
 function parseTimeRanges(ranges) {
   var result2 = [];
@@ -3540,5 +3540,5 @@
 }
 
-// node_modules/react-use/esm/factory/createHTMLMediaHook.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createHTMLMediaHook.js
 function createHTMLMediaHook(tag) {
   return function(elOrProps) {
@@ -3706,11 +3706,11 @@
 }
 
-// node_modules/react-use/esm/useAudio.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useAudio.js
 var useAudio = createHTMLMediaHook("audio");
 
-// node_modules/react-use/esm/useBattery.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useBattery.js
 var import_react17 = __toESM(require_react());
 
-// node_modules/react-use/esm/misc/util.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/misc/util.js
 var noop2 = function() {
 };
@@ -3736,38 +3736,38 @@
 var isNavigator = typeof navigator !== "undefined";
 
-// node_modules/react-use/esm/misc/isDeepEqual.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/misc/isDeepEqual.js
 var import_react16 = __toESM(require_react2());
 
-// node_modules/react-use/esm/useBattery.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useBattery.js
 var nav = isNavigator ? navigator : void 0;
 var isBatteryApiSupported = nav && typeof nav.getBattery === "function";
 
-// node_modules/react-use/esm/useBeforeUnload.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useBeforeUnload.js
 var import_react18 = __toESM(require_react());
 
-// node_modules/react-use/esm/useToggle.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useToggle.js
 var import_react19 = __toESM(require_react());
 
-// node_modules/react-use/esm/useClickAway.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useClickAway.js
 var import_react20 = __toESM(require_react());
 
-// node_modules/react-use/esm/useCookie.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useCookie.js
 var import_react21 = __toESM(require_react());
 var import_js_cookie = __toESM(require_js_cookie());
 
-// node_modules/react-use/esm/useCopyToClipboard.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useCopyToClipboard.js
 var import_copy_to_clipboard = __toESM(require_copy_to_clipboard());
 var import_react22 = __toESM(require_react());
 
-// node_modules/react-use/esm/useCounter.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useCounter.js
 var import_react25 = __toESM(require_react());
 
-// node_modules/react-use/esm/useGetSet.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useGetSet.js
 var import_react24 = __toESM(require_react());
 
-// node_modules/react-use/esm/useUpdate.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useUpdate.js
 var import_react23 = __toESM(require_react());
 
-// node_modules/react-use/esm/useCss.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useCss.js
 var import_nano_css = __toESM(require_nano_css());
 var import_cssom = __toESM(require_cssom());
@@ -3776,100 +3776,100 @@
 var import_react27 = __toESM(require_react());
 
-// node_modules/react-use/esm/useIsomorphicLayoutEffect.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useIsomorphicLayoutEffect.js
 var import_react26 = __toESM(require_react());
 var useIsomorphicLayoutEffect = isBrowser2 ? import_react26.useLayoutEffect : import_react26.useEffect;
 var useIsomorphicLayoutEffect_default = useIsomorphicLayoutEffect;
 
-// node_modules/react-use/esm/useCss.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useCss.js
 var nano = (0, import_nano_css.create)();
 (0, import_cssom.addon)(nano);
 (0, import_vcssom.addon)(nano);
 
-// node_modules/react-use/esm/useCustomCompareEffect.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useCustomCompareEffect.js
 var import_react28 = __toESM(require_react());
 
-// node_modules/react-use/esm/useDebounce.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useDebounce.js
 var import_react30 = __toESM(require_react());
 
-// node_modules/react-use/esm/useTimeoutFn.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useTimeoutFn.js
 var import_react29 = __toESM(require_react());
 
-// node_modules/react-use/esm/useDefault.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useDefault.js
 var import_react31 = __toESM(require_react());
 
-// node_modules/react-use/esm/useDrop.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useDrop.js
 init_tslib_es6();
 var import_react32 = __toESM(require_react());
 
-// node_modules/react-use/esm/useDropArea.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useDropArea.js
 var import_react33 = __toESM(require_react());
 
-// node_modules/react-use/esm/useEffectOnce.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useEffectOnce.js
 var import_react34 = __toESM(require_react());
 
-// node_modules/react-use/esm/useEnsuredForwardedRef.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useEnsuredForwardedRef.js
 var import_react35 = __toESM(require_react());
 
-// node_modules/react-use/esm/useEvent.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useEvent.js
 var import_react36 = __toESM(require_react());
 
-// node_modules/react-use/esm/useError.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useError.js
 var import_react37 = __toESM(require_react());
 
-// node_modules/react-use/esm/useFavicon.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useFavicon.js
 var import_react38 = __toESM(require_react());
 
-// node_modules/react-use/esm/useFullscreen.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useFullscreen.js
 var import_react39 = __toESM(require_react());
 var import_screenfull = __toESM(require_screenfull());
 
-// node_modules/react-use/esm/useGeolocation.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useGeolocation.js
 init_tslib_es6();
 var import_react40 = __toESM(require_react());
 
-// node_modules/react-use/esm/useGetSetState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useGetSetState.js
 init_tslib_es6();
 var import_react41 = __toESM(require_react());
 
-// node_modules/react-use/esm/useHarmonicIntervalFn.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useHarmonicIntervalFn.js
 var import_react42 = __toESM(require_react());
 
-// node_modules/react-use/esm/useHover.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useHover.js
 var React3 = __toESM(require_react());
 
-// node_modules/react-use/esm/useHoverDirty.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useHoverDirty.js
 var import_react43 = __toESM(require_react());
 
-// node_modules/react-use/esm/useIdle.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useIdle.js
 var import_react44 = __toESM(require_react());
 
-// node_modules/react-use/esm/useIntersection.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useIntersection.js
 var import_react45 = __toESM(require_react());
 
-// node_modules/react-use/esm/useInterval.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useInterval.js
 var import_react46 = __toESM(require_react());
 
-// node_modules/react-use/esm/useKey.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useKey.js
 var import_react47 = __toESM(require_react());
 
-// node_modules/react-use/esm/factory/createBreakpoint.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createBreakpoint.js
 var import_react48 = __toESM(require_react());
 
-// node_modules/react-use/esm/useKeyPress.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useKeyPress.js
 var import_react49 = __toESM(require_react());
 
-// node_modules/react-use/esm/useLatest.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useLatest.js
 var import_react50 = __toESM(require_react());
 
-// node_modules/react-use/esm/useLifecycles.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useLifecycles.js
 var import_react51 = __toESM(require_react());
 
-// node_modules/react-use/esm/useList.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useList.js
 var import_react52 = __toESM(require_react());
 
-// node_modules/react-use/esm/useLocalStorage.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useLocalStorage.js
 var import_react53 = __toESM(require_react());
 
-// node_modules/react-use/esm/useLocation.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useLocation.js
 var import_react54 = __toESM(require_react());
 var patchHistoryMethod = function(method2) {
@@ -3889,22 +3889,22 @@
 }
 
-// node_modules/react-use/esm/useLockBodyScroll.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useLockBodyScroll.js
 var import_react55 = __toESM(require_react());
 var isIosDevice = isBrowser2 && window.navigator && window.navigator.platform && /iP(ad|hone|od)/.test(window.navigator.platform);
 
-// node_modules/react-use/esm/useLogger.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useLogger.js
 init_tslib_es6();
 
-// node_modules/react-use/esm/useLongPress.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useLongPress.js
 var import_react56 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMap.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMap.js
 init_tslib_es6();
 var import_react57 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMedia.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMedia.js
 var import_react58 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMediaDevices.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMediaDevices.js
 var import_react59 = __toESM(require_react());
 var useMediaDevices = function() {
@@ -3943,89 +3943,89 @@
 var useMediaDevices_default = isNavigator && !!navigator.mediaDevices ? useMediaDevices : useMediaDevicesMock;
 
-// node_modules/react-use/esm/useMediatedState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMediatedState.js
 var import_react60 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMethods.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMethods.js
 var import_react61 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMotion.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMotion.js
 var import_react62 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMouse.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMouse.js
 var import_react65 = __toESM(require_react());
 
-// node_modules/react-use/esm/useRafState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useRafState.js
 var import_react64 = __toESM(require_react());
 
-// node_modules/react-use/esm/useUnmount.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useUnmount.js
 var import_react63 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMouseWheel.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMouseWheel.js
 var import_react66 = __toESM(require_react());
 
-// node_modules/react-use/esm/useNetworkState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useNetworkState.js
 var import_react67 = __toESM(require_react());
 var nav2 = isNavigator ? navigator : void 0;
 var conn = nav2 && (nav2.connection || nav2.mozConnection || nav2.webkitConnection);
 
-// node_modules/react-use/esm/useObservable.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useObservable.js
 var import_react68 = __toESM(require_react());
 
-// node_modules/react-use/esm/useOrientation.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useOrientation.js
 var import_react69 = __toESM(require_react());
 
-// node_modules/react-use/esm/usePageLeave.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/usePageLeave.js
 var import_react70 = __toESM(require_react());
 
-// node_modules/react-use/esm/usePermission.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/usePermission.js
 var import_react71 = __toESM(require_react());
 
-// node_modules/react-use/esm/usePrevious.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/usePrevious.js
 var import_react72 = __toESM(require_react());
 
-// node_modules/react-use/esm/usePreviousDistinct.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/usePreviousDistinct.js
 var import_react73 = __toESM(require_react());
 
-// node_modules/react-use/esm/usePromise.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/usePromise.js
 var import_react74 = __toESM(require_react());
 
-// node_modules/react-use/esm/useQueue.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useQueue.js
 init_tslib_es6();
 var import_react75 = __toESM(require_react());
 
-// node_modules/react-use/esm/useRaf.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useRaf.js
 var import_react76 = __toESM(require_react());
 
-// node_modules/react-use/esm/useRafLoop.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useRafLoop.js
 var import_react77 = __toESM(require_react());
 
-// node_modules/react-use/esm/useSearchParam.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useSearchParam.js
 var import_react78 = __toESM(require_react());
 
-// node_modules/react-use/esm/useScratch.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useScratch.js
 init_tslib_es6();
 var import_react79 = __toESM(require_react());
 var import_react_universal_interface = __toESM(require_lib());
 
-// node_modules/react-use/esm/useScroll.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useScroll.js
 var import_react80 = __toESM(require_react());
 
-// node_modules/react-use/esm/useScrolling.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useScrolling.js
 var import_react81 = __toESM(require_react());
 
-// node_modules/react-use/esm/useSessionStorage.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useSessionStorage.js
 var import_react82 = __toESM(require_react());
 
-// node_modules/react-use/esm/useShallowCompareEffect.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useShallowCompareEffect.js
 var import_fast_shallow_equal = __toESM(require_fast_shallow_equal());
 
-// node_modules/react-use/esm/useSize.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useSize.js
 init_tslib_es6();
 var React4 = __toESM(require_react());
 
-// node_modules/react-use/esm/useSlider.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useSlider.js
 var import_react83 = __toESM(require_react());
 
-// node_modules/react-use/esm/useSpeech.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useSpeech.js
 init_tslib_es6();
 var import_react84 = __toESM(require_react());
@@ -4038,52 +4038,52 @@
 })(Status || (Status = {}));
 
-// node_modules/react-use/esm/useStateWithHistory.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useStateWithHistory.js
 var import_react85 = __toESM(require_react());
 
-// node_modules/react-use/esm/useStateList.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useStateList.js
 init_tslib_es6();
 var import_react86 = __toESM(require_react());
 
-// node_modules/react-use/esm/useThrottle.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useThrottle.js
 var import_react87 = __toESM(require_react());
 
-// node_modules/react-use/esm/useThrottleFn.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useThrottleFn.js
 var import_react88 = __toESM(require_react());
 
-// node_modules/react-use/esm/useTitle.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useTitle.js
 var import_react89 = __toESM(require_react());
 
-// node_modules/react-use/esm/useTween.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useTween.js
 var import_ts_easing = __toESM(require_lib2());
 
-// node_modules/react-use/esm/useUnmountPromise.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useUnmountPromise.js
 var import_react90 = __toESM(require_react());
 
-// node_modules/react-use/esm/useUpsert.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useUpsert.js
 init_tslib_es6();
 
-// node_modules/react-use/esm/useVibrate.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useVibrate.js
 var import_react91 = __toESM(require_react());
 var isVibrationApiSupported = isNavigator && "vibrate" in navigator;
 
-// node_modules/react-use/esm/useVideo.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useVideo.js
 var useVideo = createHTMLMediaHook("video");
 
-// node_modules/react-use/esm/useStateValidator.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useStateValidator.js
 var import_react92 = __toESM(require_react());
 
-// node_modules/react-use/esm/useScrollbarWidth.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useScrollbarWidth.js
 var import_react93 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMultiStateValidator.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMultiStateValidator.js
 var import_react94 = __toESM(require_react());
 
-// node_modules/react-use/esm/useWindowScroll.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useWindowScroll.js
 var import_react95 = __toESM(require_react());
 
-// node_modules/react-use/esm/useWindowSize.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useWindowSize.js
 var import_react96 = __toESM(require_react());
 
-// node_modules/react-use/esm/useMeasure.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useMeasure.js
 var import_react97 = __toESM(require_react());
 var defaultState = {
@@ -4122,5 +4122,5 @@
 };
 
-// node_modules/react-use/esm/usePinchZoom.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/usePinchZoom.js
 var import_react98 = __toESM(require_react());
 var ZoomState;
@@ -4130,15 +4130,15 @@
 })(ZoomState || (ZoomState = {}));
 
-// node_modules/react-use/esm/useRendersCount.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useRendersCount.js
 var import_react99 = __toESM(require_react());
 
-// node_modules/react-use/esm/useSet.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useSet.js
 init_tslib_es6();
 var import_react100 = __toESM(require_react());
 
-// node_modules/react-use/esm/factory/createGlobalState.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/factory/createGlobalState.js
 var import_react101 = __toESM(require_react());
 
-// node_modules/react-use/esm/useHash.js
+// node_modules/react-tiles-dnd/node_modules/react-use/esm/useHash.js
 var import_react102 = __toESM(require_react());
 
Index: imaps-frontend/node_modules/.vite/deps/react-tiles-dnd.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/react-tiles-dnd.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/.vite/deps/react-tiles-dnd.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,7 +1,7 @@
 {
   "version": 3,
-  "sources": ["../../tslib/tslib.es6.mjs", "../../fast-deep-equal/react.js", "../../js-cookie/src/js.cookie.js", "../../toggle-selection/index.js", "../../copy-to-clipboard/index.js", "../../nano-css/index.js", "../../nano-css/addon/__dev__/warnOnMissingDependencies.js", "../../nano-css/addon/cssom.js", "../../nano-css/addon/vcssom/removeRule.js", "../../nano-css/addon/vcssom.js", "../../nano-css/addon/vcssom/cssToTree.js", "../../screenfull/dist/screenfull.js", "../../react-universal-interface/src/render.ts", "../../react-universal-interface/src/wrapInStatefulComponent.ts", "../../react-universal-interface/src/addClassDecoratorSupport.ts", "../../react-universal-interface/src/createEnhancer.ts", "../../react-universal-interface/src/hookToRenderProp.ts", "../../react-universal-interface/src/index.ts", "../../fast-shallow-equal/index.js", "../../ts-easing/lib/index.js", "../../@use-gesture/core/dist/maths-0ab39ae9.esm.js", "../../@use-gesture/core/dist/actions-fe213e88.esm.js", "../../@use-gesture/react/dist/use-gesture-react.esm.js", "../../@use-gesture/core/dist/use-gesture-core.esm.js", "../../src/tile-layout/table-utils/table.ts", "../../src/tile-layout/table-utils/tiles-table.ts", "../../src/tile-layout/table-utils/tiles.ts", "../../src/tile-layout/strategies/move.ts", "../../src/tile-layout/strategies/reorder.ts", "../../src/tile-layout/useTileTable.ts", "../../react-use/esm/factory/createMemo.js", "../../react-use/esm/factory/createReducerContext.js", "../../react-use/esm/factory/createReducer.js", "../../react-use/esm/useUpdateEffect.js", "../../react-use/esm/useFirstMountState.js", "../../react-use/esm/factory/createStateContext.js", "../../react-use/esm/useAsync.js", "../../react-use/esm/useAsyncFn.js", "../../react-use/esm/useMountedState.js", "../../react-use/esm/useAsyncRetry.js", "../../react-use/esm/factory/createHTMLMediaHook.js", "../../react-use/esm/useSetState.js", "../../react-use/esm/misc/parseTimeRanges.js", "../../react-use/esm/useAudio.js", "../../react-use/esm/useBattery.js", "../../react-use/esm/misc/util.js", "../../react-use/esm/misc/isDeepEqual.js", "../../react-use/esm/useBeforeUnload.js", "../../react-use/esm/useToggle.js", "../../react-use/esm/useClickAway.js", "../../react-use/esm/useCookie.js", "../../react-use/esm/useCopyToClipboard.js", "../../react-use/esm/useCounter.js", "../../react-use/esm/useGetSet.js", "../../react-use/esm/useUpdate.js", "../../react-use/esm/useCss.js", "../../react-use/esm/useIsomorphicLayoutEffect.js", "../../react-use/esm/useCustomCompareEffect.js", "../../react-use/esm/useDebounce.js", "../../react-use/esm/useTimeoutFn.js", "../../react-use/esm/useDefault.js", "../../react-use/esm/useDrop.js", "../../react-use/esm/useDropArea.js", "../../react-use/esm/useEffectOnce.js", "../../react-use/esm/useEnsuredForwardedRef.js", "../../react-use/esm/useEvent.js", "../../react-use/esm/useError.js", "../../react-use/esm/useFavicon.js", "../../react-use/esm/useFullscreen.js", "../../react-use/esm/useGeolocation.js", "../../react-use/esm/useGetSetState.js", "../../react-use/esm/useHarmonicIntervalFn.js", "../../react-use/esm/useHover.js", "../../react-use/esm/useHoverDirty.js", "../../react-use/esm/useIdle.js", "../../react-use/esm/useIntersection.js", "../../react-use/esm/useInterval.js", "../../react-use/esm/useKey.js", "../../react-use/esm/factory/createBreakpoint.js", "../../react-use/esm/useKeyPress.js", "../../react-use/esm/useLatest.js", "../../react-use/esm/useLifecycles.js", "../../react-use/esm/useList.js", "../../react-use/esm/useLocalStorage.js", "../../react-use/esm/useLocation.js", "../../react-use/esm/useLockBodyScroll.js", "../../react-use/esm/useLogger.js", "../../react-use/esm/useLongPress.js", "../../react-use/esm/useMap.js", "../../react-use/esm/useMedia.js", "../../react-use/esm/useMediaDevices.js", "../../react-use/esm/useMediatedState.js", "../../react-use/esm/useMethods.js", "../../react-use/esm/useMotion.js", "../../react-use/esm/useMouse.js", "../../react-use/esm/useRafState.js", "../../react-use/esm/useUnmount.js", "../../react-use/esm/useMouseWheel.js", "../../react-use/esm/useNetworkState.js", "../../react-use/esm/useObservable.js", "../../react-use/esm/useOrientation.js", "../../react-use/esm/usePageLeave.js", "../../react-use/esm/usePermission.js", "../../react-use/esm/usePrevious.js", "../../react-use/esm/usePreviousDistinct.js", "../../react-use/esm/usePromise.js", "../../react-use/esm/useQueue.js", "../../react-use/esm/useRaf.js", "../../react-use/esm/useRafLoop.js", "../../react-use/esm/useSearchParam.js", "../../react-use/esm/useScratch.js", "../../react-use/esm/useScroll.js", "../../react-use/esm/useScrolling.js", "../../react-use/esm/useSessionStorage.js", "../../react-use/esm/useShallowCompareEffect.js", "../../react-use/esm/useSize.js", "../../react-use/esm/useSlider.js", "../../react-use/esm/useSpeech.js", "../../react-use/esm/useStateWithHistory.js", "../../react-use/esm/useStateList.js", "../../react-use/esm/useThrottle.js", "../../react-use/esm/useThrottleFn.js", "../../react-use/esm/useTitle.js", "../../react-use/esm/useTween.js", "../../react-use/esm/useUnmountPromise.js", "../../react-use/esm/useUpsert.js", "../../react-use/esm/useVibrate.js", "../../react-use/esm/useVideo.js", "../../react-use/esm/useStateValidator.js", "../../react-use/esm/useScrollbarWidth.js", "../../react-use/esm/useMultiStateValidator.js", "../../react-use/esm/useWindowScroll.js", "../../react-use/esm/useWindowSize.js", "../../react-use/esm/useMeasure.js", "../../react-use/esm/usePinchZoom.js", "../../react-use/esm/useRendersCount.js", "../../react-use/esm/useSet.js", "../../react-use/esm/factory/createGlobalState.js", "../../react-use/esm/useHash.js", "../../react-tiles-dnd/esm/tile-layout/TilesContainer.module.css.js", "../../src/utils/useComposedRef.ts", "../../src/utils/joinclasses.ts", "../../lodash-es/_freeGlobal.js", "../../lodash-es/_root.js", "../../lodash-es/_Symbol.js", "../../lodash-es/_getRawTag.js", "../../lodash-es/_objectToString.js", "../../lodash-es/_baseGetTag.js", "../../lodash-es/isObjectLike.js", "../../lodash-es/isSymbol.js", "../../lodash-es/_baseToNumber.js", "../../lodash-es/_arrayMap.js", "../../lodash-es/isArray.js", "../../lodash-es/_baseToString.js", "../../lodash-es/_createMathOperation.js", "../../lodash-es/add.js", "../../lodash-es/_trimmedEndIndex.js", "../../lodash-es/_baseTrim.js", "../../lodash-es/isObject.js", "../../lodash-es/toNumber.js", "../../lodash-es/toFinite.js", "../../lodash-es/toInteger.js", "../../lodash-es/after.js", "../../lodash-es/identity.js", "../../lodash-es/isFunction.js", "../../lodash-es/_coreJsData.js", "../../lodash-es/_isMasked.js", "../../lodash-es/_toSource.js", "../../lodash-es/_baseIsNative.js", "../../lodash-es/_getValue.js", "../../lodash-es/_getNative.js", "../../lodash-es/_WeakMap.js", "../../lodash-es/_metaMap.js", "../../lodash-es/_baseSetData.js", "../../lodash-es/_baseCreate.js", "../../lodash-es/_createCtor.js", "../../lodash-es/_createBind.js", "../../lodash-es/_apply.js", "../../lodash-es/_composeArgs.js", "../../lodash-es/_composeArgsRight.js", "../../lodash-es/_countHolders.js", "../../lodash-es/_baseLodash.js", "../../lodash-es/_LazyWrapper.js", "../../lodash-es/noop.js", "../../lodash-es/_getData.js", "../../lodash-es/_realNames.js", "../../lodash-es/_getFuncName.js", "../../lodash-es/_LodashWrapper.js", "../../lodash-es/_copyArray.js", "../../lodash-es/_wrapperClone.js", "../../lodash-es/wrapperLodash.js", "../../lodash-es/_isLaziable.js", "../../lodash-es/_shortOut.js", "../../lodash-es/_setData.js", "../../lodash-es/_getWrapDetails.js", "../../lodash-es/_insertWrapDetails.js", "../../lodash-es/constant.js", "../../lodash-es/_defineProperty.js", "../../lodash-es/_baseSetToString.js", "../../lodash-es/_setToString.js", "../../lodash-es/_arrayEach.js", "../../lodash-es/_baseFindIndex.js", "../../lodash-es/_baseIsNaN.js", "../../lodash-es/_strictIndexOf.js", "../../lodash-es/_baseIndexOf.js", "../../lodash-es/_arrayIncludes.js", "../../lodash-es/_updateWrapDetails.js", "../../lodash-es/_setWrapToString.js", "../../lodash-es/_createRecurry.js", "../../lodash-es/_getHolder.js", "../../lodash-es/_isIndex.js", "../../lodash-es/_reorder.js", "../../lodash-es/_replaceHolders.js", "../../lodash-es/_createHybrid.js", "../../lodash-es/_createCurry.js", "../../lodash-es/_createPartial.js", "../../lodash-es/_mergeData.js", "../../lodash-es/_createWrap.js", "../../lodash-es/ary.js", "../../lodash-es/_baseAssignValue.js", "../../lodash-es/eq.js", "../../lodash-es/_assignValue.js", "../../lodash-es/_copyObject.js", "../../lodash-es/_overRest.js", "../../lodash-es/_baseRest.js", "../../lodash-es/isLength.js", "../../lodash-es/isArrayLike.js", "../../lodash-es/_isIterateeCall.js", "../../lodash-es/_createAssigner.js", "../../lodash-es/_isPrototype.js", "../../lodash-es/_baseTimes.js", "../../lodash-es/_baseIsArguments.js", "../../lodash-es/isArguments.js", "../../lodash-es/stubFalse.js", "../../lodash-es/isBuffer.js", "../../lodash-es/_baseIsTypedArray.js", "../../lodash-es/_baseUnary.js", "../../lodash-es/_nodeUtil.js", "../../lodash-es/isTypedArray.js", "../../lodash-es/_arrayLikeKeys.js", "../../lodash-es/_overArg.js", "../../lodash-es/_nativeKeys.js", "../../lodash-es/_baseKeys.js", "../../lodash-es/keys.js", "../../lodash-es/assign.js", "../../lodash-es/_nativeKeysIn.js", "../../lodash-es/_baseKeysIn.js", "../../lodash-es/keysIn.js", "../../lodash-es/assignIn.js", "../../lodash-es/assignInWith.js", "../../lodash-es/assignWith.js", "../../lodash-es/_isKey.js", "../../lodash-es/_nativeCreate.js", "../../lodash-es/_hashClear.js", "../../lodash-es/_hashDelete.js", "../../lodash-es/_hashGet.js", "../../lodash-es/_hashHas.js", "../../lodash-es/_hashSet.js", "../../lodash-es/_Hash.js", "../../lodash-es/_listCacheClear.js", "../../lodash-es/_assocIndexOf.js", "../../lodash-es/_listCacheDelete.js", "../../lodash-es/_listCacheGet.js", "../../lodash-es/_listCacheHas.js", "../../lodash-es/_listCacheSet.js", "../../lodash-es/_ListCache.js", "../../lodash-es/_Map.js", "../../lodash-es/_mapCacheClear.js", "../../lodash-es/_isKeyable.js", "../../lodash-es/_getMapData.js", "../../lodash-es/_mapCacheDelete.js", "../../lodash-es/_mapCacheGet.js", "../../lodash-es/_mapCacheHas.js", "../../lodash-es/_mapCacheSet.js", "../../lodash-es/_MapCache.js", "../../lodash-es/memoize.js", "../../lodash-es/_memoizeCapped.js", "../../lodash-es/_stringToPath.js", "../../lodash-es/toString.js", "../../lodash-es/_castPath.js", "../../lodash-es/_toKey.js", "../../lodash-es/_baseGet.js", "../../lodash-es/get.js", "../../lodash-es/_baseAt.js", "../../lodash-es/_arrayPush.js", "../../lodash-es/_isFlattenable.js", "../../lodash-es/_baseFlatten.js", "../../lodash-es/flatten.js", "../../lodash-es/_flatRest.js", "../../lodash-es/at.js", "../../lodash-es/_getPrototype.js", "../../lodash-es/isPlainObject.js", "../../lodash-es/isError.js", "../../lodash-es/attempt.js", "../../lodash-es/before.js", "../../lodash-es/bind.js", "../../lodash-es/bindAll.js", "../../lodash-es/bindKey.js", "../../lodash-es/_baseSlice.js", "../../lodash-es/_castSlice.js", "../../lodash-es/_hasUnicode.js", "../../lodash-es/_asciiToArray.js", "../../lodash-es/_unicodeToArray.js", "../../lodash-es/_stringToArray.js", "../../lodash-es/_createCaseFirst.js", "../../lodash-es/upperFirst.js", "../../lodash-es/capitalize.js", "../../lodash-es/_arrayReduce.js", "../../lodash-es/_basePropertyOf.js", "../../lodash-es/_deburrLetter.js", "../../lodash-es/deburr.js", "../../lodash-es/_asciiWords.js", "../../lodash-es/_hasUnicodeWord.js", "../../lodash-es/_unicodeWords.js", "../../lodash-es/words.js", "../../lodash-es/_createCompounder.js", "../../lodash-es/camelCase.js", "../../lodash-es/castArray.js", "../../lodash-es/_createRound.js", "../../lodash-es/ceil.js", "../../lodash-es/chain.js", "../../lodash-es/chunk.js", "../../lodash-es/_baseClamp.js", "../../lodash-es/clamp.js", "../../lodash-es/_stackClear.js", "../../lodash-es/_stackDelete.js", "../../lodash-es/_stackGet.js", "../../lodash-es/_stackHas.js", "../../lodash-es/_stackSet.js", "../../lodash-es/_Stack.js", "../../lodash-es/_baseAssign.js", "../../lodash-es/_baseAssignIn.js", "../../lodash-es/_cloneBuffer.js", "../../lodash-es/_arrayFilter.js", "../../lodash-es/stubArray.js", "../../lodash-es/_getSymbols.js", "../../lodash-es/_copySymbols.js", "../../lodash-es/_getSymbolsIn.js", "../../lodash-es/_copySymbolsIn.js", "../../lodash-es/_baseGetAllKeys.js", "../../lodash-es/_getAllKeys.js", "../../lodash-es/_getAllKeysIn.js", "../../lodash-es/_DataView.js", "../../lodash-es/_Promise.js", "../../lodash-es/_Set.js", "../../lodash-es/_getTag.js", "../../lodash-es/_initCloneArray.js", "../../lodash-es/_Uint8Array.js", "../../lodash-es/_cloneArrayBuffer.js", "../../lodash-es/_cloneDataView.js", "../../lodash-es/_cloneRegExp.js", "../../lodash-es/_cloneSymbol.js", "../../lodash-es/_cloneTypedArray.js", "../../lodash-es/_initCloneByTag.js", "../../lodash-es/_initCloneObject.js", "../../lodash-es/_baseIsMap.js", "../../lodash-es/isMap.js", "../../lodash-es/_baseIsSet.js", "../../lodash-es/isSet.js", "../../lodash-es/_baseClone.js", "../../lodash-es/clone.js", "../../lodash-es/cloneDeep.js", "../../lodash-es/cloneDeepWith.js", "../../lodash-es/cloneWith.js", "../../lodash-es/commit.js", "../../lodash-es/compact.js", "../../lodash-es/concat.js", "../../lodash-es/_setCacheAdd.js", "../../lodash-es/_setCacheHas.js", "../../lodash-es/_SetCache.js", "../../lodash-es/_arraySome.js", "../../lodash-es/_cacheHas.js", "../../lodash-es/_equalArrays.js", "../../lodash-es/_mapToArray.js", "../../lodash-es/_setToArray.js", "../../lodash-es/_equalByTag.js", "../../lodash-es/_equalObjects.js", "../../lodash-es/_baseIsEqualDeep.js", "../../lodash-es/_baseIsEqual.js", "../../lodash-es/_baseIsMatch.js", "../../lodash-es/_isStrictComparable.js", "../../lodash-es/_getMatchData.js", "../../lodash-es/_matchesStrictComparable.js", "../../lodash-es/_baseMatches.js", "../../lodash-es/_baseHasIn.js", "../../lodash-es/_hasPath.js", "../../lodash-es/hasIn.js", "../../lodash-es/_baseMatchesProperty.js", "../../lodash-es/_baseProperty.js", "../../lodash-es/_basePropertyDeep.js", "../../lodash-es/property.js", "../../lodash-es/_baseIteratee.js", "../../lodash-es/cond.js", "../../lodash-es/_baseConformsTo.js", "../../lodash-es/_baseConforms.js", "../../lodash-es/conforms.js", "../../lodash-es/conformsTo.js", "../../lodash-es/_arrayAggregator.js", "../../lodash-es/_createBaseFor.js", "../../lodash-es/_baseFor.js", "../../lodash-es/_baseForOwn.js", "../../lodash-es/_createBaseEach.js", "../../lodash-es/_baseEach.js", "../../lodash-es/_baseAggregator.js", "../../lodash-es/_createAggregator.js", "../../lodash-es/countBy.js", "../../lodash-es/create.js", "../../lodash-es/curry.js", "../../lodash-es/curryRight.js", "../../lodash-es/now.js", "../../lodash-es/debounce.js", "../../lodash-es/defaultTo.js", "../../lodash-es/defaults.js", "../../lodash-es/_assignMergeValue.js", "../../lodash-es/isArrayLikeObject.js", "../../lodash-es/_safeGet.js", "../../lodash-es/toPlainObject.js", "../../lodash-es/_baseMergeDeep.js", "../../lodash-es/_baseMerge.js", "../../lodash-es/_customDefaultsMerge.js", "../../lodash-es/mergeWith.js", "../../lodash-es/defaultsDeep.js", "../../lodash-es/_baseDelay.js", "../../lodash-es/defer.js", "../../lodash-es/delay.js", "../../lodash-es/_arrayIncludesWith.js", "../../lodash-es/_baseDifference.js", "../../lodash-es/difference.js", "../../lodash-es/last.js", "../../lodash-es/differenceBy.js", "../../lodash-es/differenceWith.js", "../../lodash-es/divide.js", "../../lodash-es/drop.js", "../../lodash-es/dropRight.js", "../../lodash-es/_baseWhile.js", "../../lodash-es/dropRightWhile.js", "../../lodash-es/dropWhile.js", "../../lodash-es/_castFunction.js", "../../lodash-es/forEach.js", "../../lodash-es/_arrayEachRight.js", "../../lodash-es/_baseForRight.js", "../../lodash-es/_baseForOwnRight.js", "../../lodash-es/_baseEachRight.js", "../../lodash-es/forEachRight.js", "../../lodash-es/endsWith.js", "../../lodash-es/_baseToPairs.js", "../../lodash-es/_setToPairs.js", "../../lodash-es/_createToPairs.js", "../../lodash-es/toPairs.js", "../../lodash-es/toPairsIn.js", "../../lodash-es/_escapeHtmlChar.js", "../../lodash-es/escape.js", "../../lodash-es/escapeRegExp.js", "../../lodash-es/_arrayEvery.js", "../../lodash-es/_baseEvery.js", "../../lodash-es/every.js", "../../lodash-es/toLength.js", "../../lodash-es/_baseFill.js", "../../lodash-es/fill.js", "../../lodash-es/_baseFilter.js", "../../lodash-es/filter.js", "../../lodash-es/_createFind.js", "../../lodash-es/findIndex.js", "../../lodash-es/find.js", "../../lodash-es/_baseFindKey.js", "../../lodash-es/findKey.js", "../../lodash-es/findLastIndex.js", "../../lodash-es/findLast.js", "../../lodash-es/findLastKey.js", "../../lodash-es/head.js", "../../lodash-es/_baseMap.js", "../../lodash-es/map.js", "../../lodash-es/flatMap.js", "../../lodash-es/flatMapDeep.js", "../../lodash-es/flatMapDepth.js", "../../lodash-es/flattenDeep.js", "../../lodash-es/flattenDepth.js", "../../lodash-es/flip.js", "../../lodash-es/floor.js", "../../lodash-es/_createFlow.js", "../../lodash-es/flow.js", "../../lodash-es/flowRight.js", "../../lodash-es/forIn.js", "../../lodash-es/forInRight.js", "../../lodash-es/forOwn.js", "../../lodash-es/forOwnRight.js", "../../lodash-es/fromPairs.js", "../../lodash-es/_baseFunctions.js", "../../lodash-es/functions.js", "../../lodash-es/functionsIn.js", "../../lodash-es/groupBy.js", "../../lodash-es/_baseGt.js", "../../lodash-es/_createRelationalOperation.js", "../../lodash-es/gt.js", "../../lodash-es/gte.js", "../../lodash-es/_baseHas.js", "../../lodash-es/has.js", "../../lodash-es/_baseInRange.js", "../../lodash-es/inRange.js", "../../lodash-es/isString.js", "../../lodash-es/_baseValues.js", "../../lodash-es/values.js", "../../lodash-es/includes.js", "../../lodash-es/indexOf.js", "../../lodash-es/initial.js", "../../lodash-es/_baseIntersection.js", "../../lodash-es/_castArrayLikeObject.js", "../../lodash-es/intersection.js", "../../lodash-es/intersectionBy.js", "../../lodash-es/intersectionWith.js", "../../lodash-es/_baseInverter.js", "../../lodash-es/_createInverter.js", "../../lodash-es/invert.js", "../../lodash-es/invertBy.js", "../../lodash-es/_parent.js", "../../lodash-es/_baseInvoke.js", "../../lodash-es/invoke.js", "../../lodash-es/invokeMap.js", "../../lodash-es/_baseIsArrayBuffer.js", "../../lodash-es/isArrayBuffer.js", "../../lodash-es/isBoolean.js", "../../lodash-es/_baseIsDate.js", "../../lodash-es/isDate.js", "../../lodash-es/isElement.js", "../../lodash-es/isEmpty.js", "../../lodash-es/isEqual.js", "../../lodash-es/isEqualWith.js", "../../lodash-es/isFinite.js", "../../lodash-es/isInteger.js", "../../lodash-es/isMatch.js", "../../lodash-es/isMatchWith.js", "../../lodash-es/isNumber.js", "../../lodash-es/isNaN.js", "../../lodash-es/_isMaskable.js", "../../lodash-es/isNative.js", "../../lodash-es/isNil.js", "../../lodash-es/isNull.js", "../../lodash-es/_baseIsRegExp.js", "../../lodash-es/isRegExp.js", "../../lodash-es/isSafeInteger.js", "../../lodash-es/isUndefined.js", "../../lodash-es/isWeakMap.js", "../../lodash-es/isWeakSet.js", "../../lodash-es/iteratee.js", "../../lodash-es/join.js", "../../lodash-es/kebabCase.js", "../../lodash-es/keyBy.js", "../../lodash-es/_strictLastIndexOf.js", "../../lodash-es/lastIndexOf.js", "../../lodash-es/lowerCase.js", "../../lodash-es/lowerFirst.js", "../../lodash-es/_baseLt.js", "../../lodash-es/lt.js", "../../lodash-es/lte.js", "../../lodash-es/mapKeys.js", "../../lodash-es/mapValues.js", "../../lodash-es/matches.js", "../../lodash-es/matchesProperty.js", "../../lodash-es/_baseExtremum.js", "../../lodash-es/max.js", "../../lodash-es/maxBy.js", "../../lodash-es/_baseSum.js", "../../lodash-es/_baseMean.js", "../../lodash-es/mean.js", "../../lodash-es/meanBy.js", "../../lodash-es/merge.js", "../../lodash-es/method.js", "../../lodash-es/methodOf.js", "../../lodash-es/min.js", "../../lodash-es/minBy.js", "../../lodash-es/mixin.js", "../../lodash-es/multiply.js", "../../lodash-es/negate.js", "../../lodash-es/_iteratorToArray.js", "../../lodash-es/toArray.js", "../../lodash-es/next.js", "../../lodash-es/_baseNth.js", "../../lodash-es/nth.js", "../../lodash-es/nthArg.js", "../../lodash-es/_baseUnset.js", "../../lodash-es/_customOmitClone.js", "../../lodash-es/omit.js", "../../lodash-es/_baseSet.js", "../../lodash-es/_basePickBy.js", "../../lodash-es/pickBy.js", "../../lodash-es/omitBy.js", "../../lodash-es/once.js", "../../lodash-es/_baseSortBy.js", "../../lodash-es/_compareAscending.js", "../../lodash-es/_compareMultiple.js", "../../lodash-es/_baseOrderBy.js", "../../lodash-es/orderBy.js", "../../lodash-es/_createOver.js", "../../lodash-es/over.js", "../../lodash-es/_castRest.js", "../../lodash-es/overArgs.js", "../../lodash-es/overEvery.js", "../../lodash-es/overSome.js", "../../lodash-es/_baseRepeat.js", "../../lodash-es/_asciiSize.js", "../../lodash-es/_unicodeSize.js", "../../lodash-es/_stringSize.js", "../../lodash-es/_createPadding.js", "../../lodash-es/pad.js", "../../lodash-es/padEnd.js", "../../lodash-es/padStart.js", "../../lodash-es/parseInt.js", "../../lodash-es/partial.js", "../../lodash-es/partialRight.js", "../../lodash-es/partition.js", "../../lodash-es/_basePick.js", "../../lodash-es/pick.js", "../../lodash-es/plant.js", "../../lodash-es/propertyOf.js", "../../lodash-es/_baseIndexOfWith.js", "../../lodash-es/_basePullAll.js", "../../lodash-es/pullAll.js", "../../lodash-es/pull.js", "../../lodash-es/pullAllBy.js", "../../lodash-es/pullAllWith.js", "../../lodash-es/_basePullAt.js", "../../lodash-es/pullAt.js", "../../lodash-es/_baseRandom.js", "../../lodash-es/random.js", "../../lodash-es/_baseRange.js", "../../lodash-es/_createRange.js", "../../lodash-es/range.js", "../../lodash-es/rangeRight.js", "../../lodash-es/rearg.js", "../../lodash-es/_baseReduce.js", "../../lodash-es/reduce.js", "../../lodash-es/_arrayReduceRight.js", "../../lodash-es/reduceRight.js", "../../lodash-es/reject.js", "../../lodash-es/remove.js", "../../lodash-es/repeat.js", "../../lodash-es/replace.js", "../../lodash-es/rest.js", "../../lodash-es/result.js", "../../lodash-es/reverse.js", "../../lodash-es/round.js", "../../lodash-es/_arraySample.js", "../../lodash-es/_baseSample.js", "../../lodash-es/sample.js", "../../lodash-es/_shuffleSelf.js", "../../lodash-es/_arraySampleSize.js", "../../lodash-es/_baseSampleSize.js", "../../lodash-es/sampleSize.js", "../../lodash-es/set.js", "../../lodash-es/setWith.js", "../../lodash-es/_arrayShuffle.js", "../../lodash-es/_baseShuffle.js", "../../lodash-es/shuffle.js", "../../lodash-es/size.js", "../../lodash-es/slice.js", "../../lodash-es/snakeCase.js", "../../lodash-es/_baseSome.js", "../../lodash-es/some.js", "../../lodash-es/sortBy.js", "../../lodash-es/_baseSortedIndexBy.js", "../../lodash-es/_baseSortedIndex.js", "../../lodash-es/sortedIndex.js", "../../lodash-es/sortedIndexBy.js", "../../lodash-es/sortedIndexOf.js", "../../lodash-es/sortedLastIndex.js", "../../lodash-es/sortedLastIndexBy.js", "../../lodash-es/sortedLastIndexOf.js", "../../lodash-es/_baseSortedUniq.js", "../../lodash-es/sortedUniq.js", "../../lodash-es/sortedUniqBy.js", "../../lodash-es/split.js", "../../lodash-es/spread.js", "../../lodash-es/startCase.js", "../../lodash-es/startsWith.js", "../../lodash-es/stubObject.js", "../../lodash-es/stubString.js", "../../lodash-es/stubTrue.js", "../../lodash-es/subtract.js", "../../lodash-es/sum.js", "../../lodash-es/sumBy.js", "../../lodash-es/tail.js", "../../lodash-es/take.js", "../../lodash-es/takeRight.js", "../../lodash-es/takeRightWhile.js", "../../lodash-es/takeWhile.js", "../../lodash-es/tap.js", "../../lodash-es/_customDefaultsAssignIn.js", "../../lodash-es/_escapeStringChar.js", "../../lodash-es/_reInterpolate.js", "../../lodash-es/_reEscape.js", "../../lodash-es/_reEvaluate.js", "../../lodash-es/templateSettings.js", "../../lodash-es/template.js", "../../lodash-es/throttle.js", "../../lodash-es/thru.js", "../../lodash-es/times.js", "../../lodash-es/toIterator.js", "../../lodash-es/_baseWrapperValue.js", "../../lodash-es/wrapperValue.js", "../../lodash-es/toLower.js", "../../lodash-es/toPath.js", "../../lodash-es/toSafeInteger.js", "../../lodash-es/toUpper.js", "../../lodash-es/transform.js", "../../lodash-es/_charsEndIndex.js", "../../lodash-es/_charsStartIndex.js", "../../lodash-es/trim.js", "../../lodash-es/trimEnd.js", "../../lodash-es/trimStart.js", "../../lodash-es/truncate.js", "../../lodash-es/unary.js", "../../lodash-es/_unescapeHtmlChar.js", "../../lodash-es/unescape.js", "../../lodash-es/_createSet.js", "../../lodash-es/_baseUniq.js", "../../lodash-es/union.js", "../../lodash-es/unionBy.js", "../../lodash-es/unionWith.js", "../../lodash-es/uniq.js", "../../lodash-es/uniqBy.js", "../../lodash-es/uniqWith.js", "../../lodash-es/uniqueId.js", "../../lodash-es/unset.js", "../../lodash-es/unzip.js", "../../lodash-es/unzipWith.js", "../../lodash-es/_baseUpdate.js", "../../lodash-es/update.js", "../../lodash-es/updateWith.js", "../../lodash-es/upperCase.js", "../../lodash-es/valuesIn.js", "../../lodash-es/without.js", "../../lodash-es/wrap.js", "../../lodash-es/wrapperAt.js", "../../lodash-es/wrapperChain.js", "../../lodash-es/wrapperReverse.js", "../../lodash-es/_baseXor.js", "../../lodash-es/xor.js", "../../lodash-es/xorBy.js", "../../lodash-es/xorWith.js", "../../lodash-es/zip.js", "../../lodash-es/_baseZipObject.js", "../../lodash-es/zipObject.js", "../../lodash-es/zipObjectDeep.js", "../../lodash-es/zipWith.js", "../../lodash-es/array.default.js", "../../lodash-es/collection.default.js", "../../lodash-es/date.default.js", "../../lodash-es/function.default.js", "../../lodash-es/lang.default.js", "../../lodash-es/math.default.js", "../../lodash-es/number.default.js", "../../lodash-es/object.default.js", "../../lodash-es/seq.default.js", "../../lodash-es/string.default.js", "../../lodash-es/util.default.js", "../../lodash-es/_lazyClone.js", "../../lodash-es/_lazyReverse.js", "../../lodash-es/_getView.js", "../../lodash-es/_lazyValue.js", "../../lodash-es/lodash.default.js", "../../src/tile-layout/TilesContainer.tsx"],
-  "sourcesContent": ["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        continue;\n      }\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n", "/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t//     character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n", "\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n", "\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n  \"text/plain\": \"Text\",\n  \"text/html\": \"Url\",\n  \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n    message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement(\"span\");\n    mark.textContent = text;\n    // avoid screen readers from reading out loud the text\n    mark.ariaHidden = \"true\"\n    // reset user styles for span element\n    mark.style.all = \"unset\";\n    // prevents scrolling to the end of the page\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\";\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = \"pre\";\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function(e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === \"undefined\") { // IE 11\n          debug && console.warn(\"unable to use e.clipboardData\");\n          debug && console.warn(\"trying IE specific stuff\");\n          window.clipboardData.clearData();\n          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n          window.clipboardData.setData(format, text);\n        } else { // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand(\"copy\");\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      options.onCopy && options.onCopy(window.clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n", "'use strict';\n\nvar KEBAB_REGEX = /[A-Z]/g;\n\nvar hash = function (str) {\n    var h = 5381, i = str.length;\n\n    while (i) h = (h * 33) ^ str.charCodeAt(--i);\n\n    return '_' + (h >>> 0).toString(36);\n};\n\nexports.create = function (config) {\n    config = config || {};\n    var assign = config.assign || Object.assign;\n    var client = typeof window === 'object';\n\n    // Check if we are really in browser environment.\n    if (process.env.NODE_ENV !== 'production') {\n        if (client) {\n            if ((typeof document !== 'object') || !document.getElementsByTagName('HTML')) {\n                console.error(\n                    'nano-css detected browser environment because of \"window\" global, but ' +\n                    '\"document\" global seems to be defective.'\n                );\n            }\n        }\n    }\n\n    var renderer = assign({\n        raw: '',\n        pfx: '_',\n        client: client,\n        assign: assign,\n        stringify: JSON.stringify,\n        kebab: function (prop) {\n            return prop.replace(KEBAB_REGEX, '-$&').toLowerCase();\n        },\n        decl: function (key, value) {\n            key = renderer.kebab(key);\n            return key + ':' + value + ';';\n        },\n        hash: function (obj) {\n            return hash(renderer.stringify(obj));\n        },\n        selector: function (parent, selector) {\n            return parent + (selector[0] === ':' ? ''  : ' ') + selector;\n        },\n        putRaw: function (rawCssRule) {\n            renderer.raw += rawCssRule;\n        }\n    }, config);\n\n    if (renderer.client) {\n        if (!renderer.sh)\n            document.head.appendChild(renderer.sh = document.createElement('style'));\n\n        if (process.env.NODE_ENV !== 'production') {\n            renderer.sh.setAttribute('data-nano-css-dev', '');\n\n            // Test style sheet used in DEV mode to test if .insetRule() would throw.\n            renderer.shTest = document.createElement('style');\n            renderer.shTest.setAttribute('data-nano-css-dev-tests', '');\n            document.head.appendChild(renderer.shTest);\n        }\n\n        renderer.putRaw = function (rawCssRule) {\n            // .insertRule() is faster than .appendChild(), that's why we use it in PROD.\n            // But CSS injected using .insertRule() is not displayed in Chrome Devtools,\n            // that's why we use .appendChild in DEV.\n            if (process.env.NODE_ENV === 'production') {\n                var sheet = renderer.sh.sheet;\n\n                // Unknown pseudo-selectors will throw, this try/catch swallows all errors.\n                try {\n                    sheet.insertRule(rawCssRule, sheet.cssRules.length);\n                // eslint-disable-next-line no-empty\n                } catch (error) {}\n            } else {\n                // Test if .insertRule() works in dev mode. Unknown pseudo-selectors will throw when\n                // .insertRule() is used, but .appendChild() will not throw.\n                try {\n                    renderer.shTest.sheet.insertRule(rawCssRule, renderer.shTest.sheet.cssRules.length);\n                } catch (error) {\n                    if (config.verbose) {\n                        console.error(error);\n                    }\n                }\n\n                // Insert pretty-printed CSS for dev mode.\n                renderer.sh.appendChild(document.createTextNode(rawCssRule));\n            }\n        };\n    }\n\n    renderer.put = function (selector, decls, atrule) {\n        var str = '';\n        var prop, value;\n        var postponed = [];\n\n        for (prop in decls) {\n            value = decls[prop];\n\n            if ((value instanceof Object) && !(value instanceof Array)) {\n                postponed.push(prop);\n            } else {\n                if ((process.env.NODE_ENV !== 'production') && !renderer.sourcemaps) {\n                    str += '    ' + renderer.decl(prop, value, selector, atrule) + '\\n';\n                } else {\n                    str += renderer.decl(prop, value, selector, atrule);\n                }\n            }\n        }\n\n        if (str) {\n            if ((process.env.NODE_ENV !== 'production') && !renderer.sourcemaps) {\n                str = '\\n' + selector + ' {\\n' + str + '}\\n';\n            } else {\n                str = selector + '{' + str + '}';\n            }\n            renderer.putRaw(atrule ? atrule + '{' + str + '}' : str);\n        }\n\n        for (var i = 0; i < postponed.length; i++) {\n            prop = postponed[i];\n\n            if (prop[0] === '@' && prop !== '@font-face') {\n                renderer.putAt(selector, decls[prop], prop);\n            } else {\n                renderer.put(renderer.selector(selector, prop), decls[prop], atrule);\n            }\n        }\n    };\n\n    renderer.putAt = renderer.put;\n\n    return renderer;\n};\n", "'use strict';\n\nvar pkgName = 'nano-css';\n\nmodule.exports = function warnOnMissingDependencies (addon, renderer, deps) {\n    var missing = [];\n\n    for (var i = 0; i < deps.length; i++) {\n        var name = deps[i];\n\n        if (!renderer[name]) {\n            missing.push(name);\n        }\n    }\n\n    if (missing.length) {\n        var str = 'Addon \"' + addon + '\" is missing the following dependencies:';\n\n        for (var j = 0; j < missing.length; j++) {\n            str += '\\n require(\"' + pkgName + '/addon/' + missing[j] + '\").addon(nano);';\n        }\n\n        throw new Error(str);\n    }\n};\n", "'use strict';\n\nexports.addon = function (renderer) {\n    // CSSOM support only browser environment.\n    if (!renderer.client) return;\n\n    if (process.env.NODE_ENV !== 'production') {\n        require('./__dev__/warnOnMissingDependencies')('cssom', renderer, ['sh']);\n    }\n\n    // Style sheet for media queries.\n    document.head.appendChild(renderer.msh = document.createElement('style'));\n\n    renderer.createRule = function (selector, prelude) {\n        var rawCss = selector + '{}';\n        if (prelude) rawCss = prelude + '{' + rawCss + '}';\n        var sheet = prelude ? renderer.msh.sheet : renderer.sh.sheet;\n        var index = sheet.insertRule(rawCss, sheet.cssRules.length);\n        var rule = (sheet.cssRules || sheet.rules)[index];\n\n        // Keep track of `index` where rule was inserted in the sheet. This is\n        // needed for rule deletion.\n        rule.index = index;\n\n        if (prelude) {\n            // If rule has media query (it has prelude), move style (CSSStyleDeclaration)\n            // object to the \"top\" to normalize it with a rule without the media\n            // query, so that both rules have `.style` property available.\n            var selectorRule = (rule.cssRules || rule.rules)[0];\n            rule.style = selectorRule.style;\n            rule.styleMap = selectorRule.styleMap;\n        }\n\n        return rule;\n    };\n};\n", "function removeRule (rule) {\n    var maxIndex = rule.index;\n    var sh = rule.parentStyleSheet;\n    var rules = sh.cssRules || sh.rules;\n    maxIndex = Math.max(maxIndex, rules.length - 1);\n    while (maxIndex >= 0) {\n        if (rules[maxIndex] === rule) {\n            sh.deleteRule(maxIndex);\n            break;\n        }\n        maxIndex--;\n    }\n}\n\nexports.removeRule = removeRule;\n", "'use strict';\n\nvar removeRule = require('./vcssom/removeRule').removeRule;\n\nexports.addon = function (renderer) {\n    // VCSSOM support only browser environment.\n    if (!renderer.client) return;\n\n    if (process.env.NODE_ENV !== 'production') {\n        require('./__dev__/warnOnMissingDependencies')('cssom', renderer, ['createRule']); // cssom\n    }\n\n    var kebab = renderer.kebab;\n\n    function VRule (selector, prelude) {\n        this.rule = renderer.createRule(selector, prelude);\n        this.decl = {};\n    }\n    VRule.prototype.diff = function (newDecl) {\n        var oldDecl = this.decl;\n        var style = this.rule.style;\n        var property;\n        for (property in oldDecl)\n            if (newDecl[property] === undefined)\n                style.removeProperty(property);\n        for (property in newDecl)\n            if (newDecl[property] !== oldDecl[property])\n                style.setProperty(kebab(property), newDecl[property]);\n        this.decl = newDecl;\n    };\n    VRule.prototype.del = function () {\n        removeRule(this.rule);\n    };\n\n    function VSheet () {\n        /**\n         * {\n         *   '<at-rule-prelude>': {\n         *     '<selector>': {\n         *       color: 'red\n         *     }\n         *   }\n         * }\n         */\n        this.tree = {};\n    }\n    VSheet.prototype.diff = function (newTree) {\n        var oldTree = this.tree;\n\n        // Remove media queries not present in new tree.\n        for (var prelude in oldTree) {\n            if (newTree[prelude] === undefined) {\n                var rules = oldTree[prelude];\n                for (var selector in rules)\n                    rules[selector].del();\n            }\n        }\n\n        for (var prelude in newTree) {\n            if (oldTree[prelude] === undefined) {\n                // Whole media query is new.\n                for (var selector in newTree[prelude]) {\n                    var rule = new VRule(selector, prelude);\n                    rule.diff(newTree[prelude][selector]);\n                    newTree[prelude][selector] = rule;\n                }\n            } else {\n                // Old tree already has rules with this media query.\n                var oldRules = oldTree[prelude];\n                var newRules = newTree[prelude];\n\n                // Remove rules not present in new tree.\n                for (var selector in oldRules)\n                    if (!newRules[selector])\n                        oldRules[selector].del();\n\n                // Apply new rules.\n                for (var selector in newRules) {\n                    var rule = oldRules[selector];\n                    if (rule) {\n                        rule.diff(newRules[selector]);\n                        newRules[selector] = rule;\n                    } else {\n                        rule = new VRule(selector, prelude);\n                        rule.diff(newRules[selector]);\n                        newRules[selector] = rule;\n                    }\n                }\n            }\n        }\n\n        this.tree = newTree;\n    };\n\n    renderer.VRule = VRule;\n    renderer.VSheet = VSheet;\n};\n", "function cssToTree (tree, css, selector, prelude) {\n    var declarations = {};\n    var hasDeclarations = false;\n    var key, value;\n\n    for (key in css) {\n        value = css[key];\n        if (typeof value !== 'object') {\n            hasDeclarations = true;\n            declarations[key] = value;\n        }\n    }\n\n    if (hasDeclarations) {\n        if (!tree[prelude]) tree[prelude] = {};\n        tree[prelude][selector] = declarations;\n    }\n\n    for (key in css) {\n        value = css[key];\n        if (typeof value === 'object') {\n            if (key[0] === '@') {\n                cssToTree(tree, value, selector, key);\n            } else {\n                var hasCurrentSymbol = key.indexOf('&') > -1;\n                var selectorParts = selector.split(',');\n                if (hasCurrentSymbol) {\n                    for (var i = 0; i < selectorParts.length; i++) {\n                        selectorParts[i] = key.replace(/&/g, selectorParts[i]);\n                    }\n                } else {\n                    for (var i = 0; i < selectorParts.length; i++) {\n                        selectorParts[i] = selectorParts[i] + ' ' + key;\n                    }\n                }\n                cssToTree(tree, value, selectorParts.join(','), prelude);\n            }\n        }\n    }\n};\n\nexports.cssToTree = cssToTree;\n", "/*!\n* screenfull\n* v5.2.0 - 2021-11-03\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n", "import {createElement as h, cloneElement, version} from 'react';\n\nconst isReact16Plus = parseInt(version.substr(0, version.indexOf('.'))) > 15;\nconst isFn = fn => typeof fn === 'function';\n\nconst render = (props, data, ...more) => {\n    if (process.env.NODE_ENV !== 'production') {\n        if (typeof props !== 'object') {\n            throw new TypeError('renderChildren(props, data) first argument must be a props object.');\n        }\n\n        const {children, render} = props;\n\n        if (isFn(children) && isFn(render)) {\n            console.warn(\n                'Both \"render\" and \"children\" are specified for in a universal interface component. ' +\n                'Children will be used.'\n            );\n            console.trace();\n        }\n\n        if (typeof data !== 'object') {\n            console.warn(\n                'Universal component interface normally expects data to be an object, ' +\n                `\"${typeof data}\" received.`\n            );\n            console.trace();\n        }\n    }\n\n    const {render, children = render, component, comp = component} = props;\n\n    if (isFn(children)) return children(data, ...more);\n\n    if (comp) {\n        return h(comp, data);\n    }\n\n    if (children instanceof Array)\n        return isReact16Plus ? children : h('div', null, ...children);\n\n    if (children && (children instanceof Object)) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (!children.type || ((typeof children.type !== 'string') && (typeof children.type !== 'function') && (typeof children.type !== 'symbol'))) {\n                console.warn(\n                    'Universal component interface received object as children, ' +\n                    'expected React element, but received unexpected React \"type\".'\n                );\n                console.trace();\n            }\n\n            if (typeof children.type === 'string')\n                return children;\n\n            return cloneElement(children, Object.assign({}, children.props, data));\n        } else {\n            if (typeof children.type === 'string')\n                return children;\n\n            return cloneElement(children, Object.assign({}, children.props, data));\n        }\n    }\n\n    return children || null;\n};\n\nexport default render;\n", "import * as React from 'react';\n\nconst wrapInStatefulComponent = (Comp) => {\n    const Decorated = class extends React.Component<any, any> {\n        render () {\n            return Comp(this.props, this.context);\n        }\n    };\n\n    if (process.env.NODE_ENV !== 'production') {\n        (Decorated as any).displayName = `Decorated(${Comp.displayName || Comp.name})`;\n    }\n\n    return Decorated;\n};\n\nexport default wrapInStatefulComponent;\n", "import wrapInStatefulComponent from './wrapInStatefulComponent';\n\nconst addClassDecoratorSupport = (Comp) => {\n    const isSFC = !Comp.prototype;\n    return !isSFC ? Comp : wrapInStatefulComponent(Comp);\n};\n\nexport default addClassDecoratorSupport;\n", "import * as React from 'react';\nimport addClassDecoratorSupport from './addClassDecoratorSupport';\n\nconst h = React.createElement;\n\nconst noWrap = (Comp, propName, props, state) => h(Comp, propName ?\n  {[propName]: state, ...props} :\n  {...state, ...props}\n);\n\nexport const divWrapper = (Comp, propName, props, state) =>\n  h('div', null, noWrap(Comp, propName, props, state)) as any;\n\nconst createEnhancer = (Facc, prop?: string, wrapper = noWrap) => {\n    const enhancer = (Comp, propName: any = prop, faccProps: object = null) => {\n        const isClassDecoratorMethodCall = typeof Comp === 'string';\n\n        if (isClassDecoratorMethodCall) {\n            return (Klass) => enhancer(Klass, Comp as any || prop, propName as any);\n        }\n\n        const Enhanced = (props) =>\n            h(Facc, faccProps, (state) => wrapper(Comp, propName, props, state));\n\n        if (process.env.NODE_ENV !== 'production') {\n            (Enhanced as any).displayName = `${Facc.displayName || Facc.name}(${Comp.displayName || Comp.name})`;\n        }\n\n        return isClassDecoratorMethodCall ? addClassDecoratorSupport(Enhanced) : Enhanced;\n    };\n\n    return enhancer;\n}\n\nexport default createEnhancer;\n", "import {FC} from 'react';\nimport render from './render';\n\nexport type MapPropsToArgs<Props extends {}, Args extends any[]> = (props: Props) => Args;\nexport type CreateRenderProp = <Props extends {}, Args extends any[], State extends any>(hook: (...args: Args) => State, mapPropsToArgs?: MapPropsToArgs<Props, Args>) => FC<Props>;\n\nconst defaultMapPropsToArgs = props => [props];\n\nconst hookToRenderProp: CreateRenderProp = (hook, mapPropsToArgs = defaultMapPropsToArgs as any) =>\n    props => render(props, hook(...mapPropsToArgs(props)));\n\nexport default hookToRenderProp;\n", "import render from './render';\nimport createEnhancer from './createEnhancer';\nimport hookToRenderProp from './hookToRenderProp';\n\nexport interface UniversalProps<Data> {\n    children?: ((data: Data) => React.ReactNode) | React.ReactNode;\n    render?: (data: Data) => React.ReactNode;\n    comp?: React.ComponentType<Data & any>;\n    component?: React.ComponentType<Data & any>;\n}\n\nexport {\n    render,\n    createEnhancer,\n    hookToRenderProp,\n};\n", "var keyList = Object.keys;\n\nexports.equal = function equal (a, b) {\n  if (a === b) return true;\n  if (!(a instanceof Object) || !(b instanceof Object)) return false;\n\n  var keys = keyList(a);\n  var length = keys.length;\n\n  for (var i = 0; i < length; i++)\n    if (!(keys[i] in b)) return false;\n\n  for (var i = 0; i < length; i++)\n    if (a[keys[i]] !== b[keys[i]]) return false;\n\n  return length === keyList(b).length;\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.easing = {\n    // No easing, no acceleration\n    linear: function (t) { return t; },\n    // Accelerates fast, then slows quickly towards end.\n    quadratic: function (t) { return t * (-(t * t) * t + 4 * t * t - 6 * t + 4); },\n    // Overshoots over 1 and then returns to 1 towards end.\n    cubic: function (t) { return t * (4 * t * t - 9 * t + 6); },\n    // Overshoots over 1 multiple times - wiggles around 1.\n    elastic: function (t) { return t * (33 * t * t * t * t - 106 * t * t * t + 126 * t * t - 67 * t + 15); },\n    // Accelerating from zero velocity\n    inQuad: function (t) { return t * t; },\n    // Decelerating to zero velocity\n    outQuad: function (t) { return t * (2 - t); },\n    // Acceleration until halfway, then deceleration\n    inOutQuad: function (t) { return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t; },\n    // Accelerating from zero velocity\n    inCubic: function (t) { return t * t * t; },\n    // Decelerating to zero velocity\n    outCubic: function (t) { return (--t) * t * t + 1; },\n    // Acceleration until halfway, then deceleration\n    inOutCubic: function (t) { return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; },\n    // Accelerating from zero velocity\n    inQuart: function (t) { return t * t * t * t; },\n    // Decelerating to zero velocity\n    outQuart: function (t) { return 1 - (--t) * t * t * t; },\n    // Acceleration until halfway, then deceleration\n    inOutQuart: function (t) { return t < .5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t; },\n    // Accelerating from zero velocity\n    inQuint: function (t) { return t * t * t * t * t; },\n    // Decelerating to zero velocity\n    outQuint: function (t) { return 1 + (--t) * t * t * t * t; },\n    // Acceleration until halfway, then deceleration\n    inOutQuint: function (t) { return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t; },\n    // Accelerating from zero velocity\n    inSine: function (t) { return -Math.cos(t * (Math.PI / 2)) + 1; },\n    // Decelerating to zero velocity\n    outSine: function (t) { return Math.sin(t * (Math.PI / 2)); },\n    // Accelerating until halfway, then decelerating\n    inOutSine: function (t) { return -(Math.cos(Math.PI * t) - 1) / 2; },\n    // Exponential accelerating from zero velocity\n    inExpo: function (t) { return Math.pow(2, 10 * (t - 1)); },\n    // Exponential decelerating to zero velocity\n    outExpo: function (t) { return -Math.pow(2, -10 * t) + 1; },\n    // Exponential accelerating until halfway, then decelerating\n    inOutExpo: function (t) {\n        t /= .5;\n        if (t < 1)\n            return Math.pow(2, 10 * (t - 1)) / 2;\n        t--;\n        return (-Math.pow(2, -10 * t) + 2) / 2;\n    },\n    // Circular accelerating from zero velocity\n    inCirc: function (t) { return -Math.sqrt(1 - t * t) + 1; },\n    // Circular decelerating to zero velocity Moves VERY fast at the beginning and\n    // then quickly slows down in the middle. This tween can actually be used\n    // in continuous transitions where target value changes all the time,\n    // because of the very quick start, it hides the jitter between target value changes.\n    outCirc: function (t) { return Math.sqrt(1 - (t = t - 1) * t); },\n    // Circular acceleration until halfway, then deceleration\n    inOutCirc: function (t) {\n        t /= .5;\n        if (t < 1)\n            return -(Math.sqrt(1 - t * t) - 1) / 2;\n        t -= 2;\n        return (Math.sqrt(1 - t * t) + 1) / 2;\n    }\n};\n", "function clamp(v, min, max) {\n  return Math.max(min, Math.min(v, max));\n}\nconst V = {\n  toVector(v, fallback) {\n    if (v === undefined) v = fallback;\n    return Array.isArray(v) ? v : [v, v];\n  },\n  add(v1, v2) {\n    return [v1[0] + v2[0], v1[1] + v2[1]];\n  },\n  sub(v1, v2) {\n    return [v1[0] - v2[0], v1[1] - v2[1]];\n  },\n  addTo(v1, v2) {\n    v1[0] += v2[0];\n    v1[1] += v2[1];\n  },\n  subTo(v1, v2) {\n    v1[0] -= v2[0];\n    v1[1] -= v2[1];\n  }\n};\nfunction rubberband(distance, dimension, constant) {\n  if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5);\n  return distance * dimension * constant / (dimension + constant * distance);\n}\nfunction rubberbandIfOutOfBounds(position, min, max, constant = 0.15) {\n  if (constant === 0) return clamp(position, min, max);\n  if (position < min) return -rubberband(min - position, max - min, constant) + min;\n  if (position > max) return +rubberband(position - max, max - min, constant) + max;\n  return position;\n}\nfunction computeRubberband(bounds, [Vx, Vy], [Rx, Ry]) {\n  const [[X0, X1], [Y0, Y1]] = bounds;\n  return [rubberbandIfOutOfBounds(Vx, X0, X1, Rx), rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)];\n}\n\nexport { V, computeRubberband as c, rubberbandIfOutOfBounds as r };\n", "import { V, c as computeRubberband } from './maths-0ab39ae9.esm.js';\n\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\n\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\n\nconst EVENT_TYPE_MAP = {\n  pointer: {\n    start: 'down',\n    change: 'move',\n    end: 'up'\n  },\n  mouse: {\n    start: 'down',\n    change: 'move',\n    end: 'up'\n  },\n  touch: {\n    start: 'start',\n    change: 'move',\n    end: 'end'\n  },\n  gesture: {\n    start: 'start',\n    change: 'change',\n    end: 'end'\n  }\n};\nfunction capitalize(string) {\n  if (!string) return '';\n  return string[0].toUpperCase() + string.slice(1);\n}\nconst actionsWithoutCaptureSupported = ['enter', 'leave'];\nfunction hasCapture(capture = false, actionKey) {\n  return capture && !actionsWithoutCaptureSupported.includes(actionKey);\n}\nfunction toHandlerProp(device, action = '', capture = false) {\n  const deviceProps = EVENT_TYPE_MAP[device];\n  const actionKey = deviceProps ? deviceProps[action] || action : action;\n  return 'on' + capitalize(device) + capitalize(actionKey) + (hasCapture(capture, actionKey) ? 'Capture' : '');\n}\nconst pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];\nfunction parseProp(prop) {\n  let eventKey = prop.substring(2).toLowerCase();\n  const passive = !!~eventKey.indexOf('passive');\n  if (passive) eventKey = eventKey.replace('passive', '');\n  const captureKey = pointerCaptureEvents.includes(eventKey) ? 'capturecapture' : 'capture';\n  const capture = !!~eventKey.indexOf(captureKey);\n  if (capture) eventKey = eventKey.replace('capture', '');\n  return {\n    device: eventKey,\n    capture,\n    passive\n  };\n}\nfunction toDomEventType(device, action = '') {\n  const deviceProps = EVENT_TYPE_MAP[device];\n  const actionKey = deviceProps ? deviceProps[action] || action : action;\n  return device + actionKey;\n}\nfunction isTouch(event) {\n  return 'touches' in event;\n}\nfunction getPointerType(event) {\n  if (isTouch(event)) return 'touch';\n  if ('pointerType' in event) return event.pointerType;\n  return 'mouse';\n}\nfunction getCurrentTargetTouchList(event) {\n  return Array.from(event.touches).filter(e => {\n    var _event$currentTarget, _event$currentTarget$;\n    return e.target === event.currentTarget || ((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || (_event$currentTarget$ = _event$currentTarget.contains) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.call(_event$currentTarget, e.target));\n  });\n}\nfunction getTouchList(event) {\n  return event.type === 'touchend' || event.type === 'touchcancel' ? event.changedTouches : event.targetTouches;\n}\nfunction getValueEvent(event) {\n  return isTouch(event) ? getTouchList(event)[0] : event;\n}\nfunction distanceAngle(P1, P2) {\n  try {\n    const dx = P2.clientX - P1.clientX;\n    const dy = P2.clientY - P1.clientY;\n    const cx = (P2.clientX + P1.clientX) / 2;\n    const cy = (P2.clientY + P1.clientY) / 2;\n    const distance = Math.hypot(dx, dy);\n    const angle = -(Math.atan2(dx, dy) * 180) / Math.PI;\n    const origin = [cx, cy];\n    return {\n      angle,\n      distance,\n      origin\n    };\n  } catch (_unused) {}\n  return null;\n}\nfunction touchIds(event) {\n  return getCurrentTargetTouchList(event).map(touch => touch.identifier);\n}\nfunction touchDistanceAngle(event, ids) {\n  const [P1, P2] = Array.from(event.touches).filter(touch => ids.includes(touch.identifier));\n  return distanceAngle(P1, P2);\n}\nfunction pointerId(event) {\n  const valueEvent = getValueEvent(event);\n  return isTouch(event) ? valueEvent.identifier : valueEvent.pointerId;\n}\nfunction pointerValues(event) {\n  const valueEvent = getValueEvent(event);\n  return [valueEvent.clientX, valueEvent.clientY];\n}\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\nfunction wheelValues(event) {\n  let {\n    deltaX,\n    deltaY,\n    deltaMode\n  } = event;\n  if (deltaMode === 1) {\n    deltaX *= LINE_HEIGHT;\n    deltaY *= LINE_HEIGHT;\n  } else if (deltaMode === 2) {\n    deltaX *= PAGE_HEIGHT;\n    deltaY *= PAGE_HEIGHT;\n  }\n  return [deltaX, deltaY];\n}\nfunction scrollValues(event) {\n  var _ref, _ref2;\n  const {\n    scrollX,\n    scrollY,\n    scrollLeft,\n    scrollTop\n  } = event.currentTarget;\n  return [(_ref = scrollX !== null && scrollX !== void 0 ? scrollX : scrollLeft) !== null && _ref !== void 0 ? _ref : 0, (_ref2 = scrollY !== null && scrollY !== void 0 ? scrollY : scrollTop) !== null && _ref2 !== void 0 ? _ref2 : 0];\n}\nfunction getEventDetails(event) {\n  const payload = {};\n  if ('buttons' in event) payload.buttons = event.buttons;\n  if ('shiftKey' in event) {\n    const {\n      shiftKey,\n      altKey,\n      metaKey,\n      ctrlKey\n    } = event;\n    Object.assign(payload, {\n      shiftKey,\n      altKey,\n      metaKey,\n      ctrlKey\n    });\n  }\n  return payload;\n}\n\nfunction call(v, ...args) {\n  if (typeof v === 'function') {\n    return v(...args);\n  } else {\n    return v;\n  }\n}\nfunction noop() {}\nfunction chain(...fns) {\n  if (fns.length === 0) return noop;\n  if (fns.length === 1) return fns[0];\n  return function () {\n    let result;\n    for (const fn of fns) {\n      result = fn.apply(this, arguments) || result;\n    }\n    return result;\n  };\n}\nfunction assignDefault(value, fallback) {\n  return Object.assign({}, fallback, value || {});\n}\n\nconst BEFORE_LAST_KINEMATICS_DELAY = 32;\nclass Engine {\n  constructor(ctrl, args, key) {\n    this.ctrl = ctrl;\n    this.args = args;\n    this.key = key;\n    if (!this.state) {\n      this.state = {};\n      this.computeValues([0, 0]);\n      this.computeInitial();\n      if (this.init) this.init();\n      this.reset();\n    }\n  }\n  get state() {\n    return this.ctrl.state[this.key];\n  }\n  set state(state) {\n    this.ctrl.state[this.key] = state;\n  }\n  get shared() {\n    return this.ctrl.state.shared;\n  }\n  get eventStore() {\n    return this.ctrl.gestureEventStores[this.key];\n  }\n  get timeoutStore() {\n    return this.ctrl.gestureTimeoutStores[this.key];\n  }\n  get config() {\n    return this.ctrl.config[this.key];\n  }\n  get sharedConfig() {\n    return this.ctrl.config.shared;\n  }\n  get handler() {\n    return this.ctrl.handlers[this.key];\n  }\n  reset() {\n    const {\n      state,\n      shared,\n      ingKey,\n      args\n    } = this;\n    shared[ingKey] = state._active = state.active = state._blocked = state._force = false;\n    state._step = [false, false];\n    state.intentional = false;\n    state._movement = [0, 0];\n    state._distance = [0, 0];\n    state._direction = [0, 0];\n    state._delta = [0, 0];\n    state._bounds = [[-Infinity, Infinity], [-Infinity, Infinity]];\n    state.args = args;\n    state.axis = undefined;\n    state.memo = undefined;\n    state.elapsedTime = state.timeDelta = 0;\n    state.direction = [0, 0];\n    state.distance = [0, 0];\n    state.overflow = [0, 0];\n    state._movementBound = [false, false];\n    state.velocity = [0, 0];\n    state.movement = [0, 0];\n    state.delta = [0, 0];\n    state.timeStamp = 0;\n  }\n  start(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state._active) {\n      this.reset();\n      this.computeInitial();\n      state._active = true;\n      state.target = event.target;\n      state.currentTarget = event.currentTarget;\n      state.lastOffset = config.from ? call(config.from, state) : state.offset;\n      state.offset = state.lastOffset;\n      state.startTime = state.timeStamp = event.timeStamp;\n    }\n  }\n  computeValues(values) {\n    const state = this.state;\n    state._values = values;\n    state.values = this.config.transform(values);\n  }\n  computeInitial() {\n    const state = this.state;\n    state._initial = state._values;\n    state.initial = state.values;\n  }\n  compute(event) {\n    const {\n      state,\n      config,\n      shared\n    } = this;\n    state.args = this.args;\n    let dt = 0;\n    if (event) {\n      state.event = event;\n      if (config.preventDefault && event.cancelable) state.event.preventDefault();\n      state.type = event.type;\n      shared.touches = this.ctrl.pointerIds.size || this.ctrl.touchIds.size;\n      shared.locked = !!document.pointerLockElement;\n      Object.assign(shared, getEventDetails(event));\n      shared.down = shared.pressed = shared.buttons % 2 === 1 || shared.touches > 0;\n      dt = event.timeStamp - state.timeStamp;\n      state.timeStamp = event.timeStamp;\n      state.elapsedTime = state.timeStamp - state.startTime;\n    }\n    if (state._active) {\n      const _absoluteDelta = state._delta.map(Math.abs);\n      V.addTo(state._distance, _absoluteDelta);\n    }\n    if (this.axisIntent) this.axisIntent(event);\n    const [_m0, _m1] = state._movement;\n    const [t0, t1] = config.threshold;\n    const {\n      _step,\n      values\n    } = state;\n    if (config.hasCustomTransform) {\n      if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && values[0];\n      if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && values[1];\n    } else {\n      if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;\n      if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;\n    }\n    state.intentional = _step[0] !== false || _step[1] !== false;\n    if (!state.intentional) return;\n    const movement = [0, 0];\n    if (config.hasCustomTransform) {\n      const [v0, v1] = values;\n      movement[0] = _step[0] !== false ? v0 - _step[0] : 0;\n      movement[1] = _step[1] !== false ? v1 - _step[1] : 0;\n    } else {\n      movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;\n      movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;\n    }\n    if (this.restrictToAxis && !state._blocked) this.restrictToAxis(movement);\n    const previousOffset = state.offset;\n    const gestureIsActive = state._active && !state._blocked || state.active;\n    if (gestureIsActive) {\n      state.first = state._active && !state.active;\n      state.last = !state._active && state.active;\n      state.active = shared[this.ingKey] = state._active;\n      if (event) {\n        if (state.first) {\n          if ('bounds' in config) state._bounds = call(config.bounds, state);\n          if (this.setup) this.setup();\n        }\n        state.movement = movement;\n        this.computeOffset();\n      }\n    }\n    const [ox, oy] = state.offset;\n    const [[x0, x1], [y0, y1]] = state._bounds;\n    state.overflow = [ox < x0 ? -1 : ox > x1 ? 1 : 0, oy < y0 ? -1 : oy > y1 ? 1 : 0];\n    state._movementBound[0] = state.overflow[0] ? state._movementBound[0] === false ? state._movement[0] : state._movementBound[0] : false;\n    state._movementBound[1] = state.overflow[1] ? state._movementBound[1] === false ? state._movement[1] : state._movementBound[1] : false;\n    const rubberband = state._active ? config.rubberband || [0, 0] : [0, 0];\n    state.offset = computeRubberband(state._bounds, state.offset, rubberband);\n    state.delta = V.sub(state.offset, previousOffset);\n    this.computeMovement();\n    if (gestureIsActive && (!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)) {\n      state.delta = V.sub(state.offset, previousOffset);\n      const absoluteDelta = state.delta.map(Math.abs);\n      V.addTo(state.distance, absoluteDelta);\n      state.direction = state.delta.map(Math.sign);\n      state._direction = state._delta.map(Math.sign);\n      if (!state.first && dt > 0) {\n        state.velocity = [absoluteDelta[0] / dt, absoluteDelta[1] / dt];\n        state.timeDelta = dt;\n      }\n    }\n  }\n  emit() {\n    const state = this.state;\n    const shared = this.shared;\n    const config = this.config;\n    if (!state._active) this.clean();\n    if ((state._blocked || !state.intentional) && !state._force && !config.triggerAllEvents) return;\n    const memo = this.handler(_objectSpread2(_objectSpread2(_objectSpread2({}, shared), state), {}, {\n      [this.aliasKey]: state.values\n    }));\n    if (memo !== undefined) state.memo = memo;\n  }\n  clean() {\n    this.eventStore.clean();\n    this.timeoutStore.clean();\n  }\n}\n\nfunction selectAxis([dx, dy], threshold) {\n  const absDx = Math.abs(dx);\n  const absDy = Math.abs(dy);\n  if (absDx > absDy && absDx > threshold) {\n    return 'x';\n  }\n  if (absDy > absDx && absDy > threshold) {\n    return 'y';\n  }\n  return undefined;\n}\nclass CoordinatesEngine extends Engine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"aliasKey\", 'xy');\n  }\n  reset() {\n    super.reset();\n    this.state.axis = undefined;\n  }\n  init() {\n    this.state.offset = [0, 0];\n    this.state.lastOffset = [0, 0];\n  }\n  computeOffset() {\n    this.state.offset = V.add(this.state.lastOffset, this.state.movement);\n  }\n  computeMovement() {\n    this.state.movement = V.sub(this.state.offset, this.state.lastOffset);\n  }\n  axisIntent(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state.axis && event) {\n      const threshold = typeof config.axisThreshold === 'object' ? config.axisThreshold[getPointerType(event)] : config.axisThreshold;\n      state.axis = selectAxis(state._movement, threshold);\n    }\n    state._blocked = (config.lockDirection || !!config.axis) && !state.axis || !!config.axis && config.axis !== state.axis;\n  }\n  restrictToAxis(v) {\n    if (this.config.axis || this.config.lockDirection) {\n      switch (this.state.axis) {\n        case 'x':\n          v[1] = 0;\n          break;\n        case 'y':\n          v[0] = 0;\n          break;\n      }\n    }\n  }\n}\n\nconst identity = v => v;\nconst DEFAULT_RUBBERBAND = 0.15;\nconst commonConfigResolver = {\n  enabled(value = true) {\n    return value;\n  },\n  eventOptions(value, _k, config) {\n    return _objectSpread2(_objectSpread2({}, config.shared.eventOptions), value);\n  },\n  preventDefault(value = false) {\n    return value;\n  },\n  triggerAllEvents(value = false) {\n    return value;\n  },\n  rubberband(value = 0) {\n    switch (value) {\n      case true:\n        return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];\n      case false:\n        return [0, 0];\n      default:\n        return V.toVector(value);\n    }\n  },\n  from(value) {\n    if (typeof value === 'function') return value;\n    if (value != null) return V.toVector(value);\n  },\n  transform(value, _k, config) {\n    const transform = value || config.shared.transform;\n    this.hasCustomTransform = !!transform;\n    if (process.env.NODE_ENV === 'development') {\n      const originalTransform = transform || identity;\n      return v => {\n        const r = originalTransform(v);\n        if (!isFinite(r[0]) || !isFinite(r[1])) {\n          console.warn(`[@use-gesture]: config.transform() must produce a valid result, but it was: [${r[0]},${[1]}]`);\n        }\n        return r;\n      };\n    }\n    return transform || identity;\n  },\n  threshold(value) {\n    return V.toVector(value, 0);\n  }\n};\nif (process.env.NODE_ENV === 'development') {\n  Object.assign(commonConfigResolver, {\n    domTarget(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n      }\n      return NaN;\n    },\n    lockDirection(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`lockDirection\\` option has been merged with \\`axis\\`. Use it as in \\`{ axis: 'lock' }\\``);\n      }\n      return NaN;\n    },\n    initial(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`initial\\` option has been renamed to \\`from\\`.`);\n      }\n      return NaN;\n    }\n  });\n}\n\nconst DEFAULT_AXIS_THRESHOLD = 0;\nconst coordinatesConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n  axis(_v, _k, {\n    axis\n  }) {\n    this.lockDirection = axis === 'lock';\n    if (!this.lockDirection) return axis;\n  },\n  axisThreshold(value = DEFAULT_AXIS_THRESHOLD) {\n    return value;\n  },\n  bounds(value = {}) {\n    if (typeof value === 'function') {\n      return state => coordinatesConfigResolver.bounds(value(state));\n    }\n    if ('current' in value) {\n      return () => value.current;\n    }\n    if (typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n      return value;\n    }\n    const {\n      left = -Infinity,\n      right = Infinity,\n      top = -Infinity,\n      bottom = Infinity\n    } = value;\n    return [[left, right], [top, bottom]];\n  }\n});\n\nconst KEYS_DELTA_MAP = {\n  ArrowRight: (displacement, factor = 1) => [displacement * factor, 0],\n  ArrowLeft: (displacement, factor = 1) => [-1 * displacement * factor, 0],\n  ArrowUp: (displacement, factor = 1) => [0, -1 * displacement * factor],\n  ArrowDown: (displacement, factor = 1) => [0, displacement * factor]\n};\nclass DragEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'dragging');\n  }\n  reset() {\n    super.reset();\n    const state = this.state;\n    state._pointerId = undefined;\n    state._pointerActive = false;\n    state._keyboardActive = false;\n    state._preventScroll = false;\n    state._delayed = false;\n    state.swipe = [0, 0];\n    state.tap = false;\n    state.canceled = false;\n    state.cancel = this.cancel.bind(this);\n  }\n  setup() {\n    const state = this.state;\n    if (state._bounds instanceof HTMLElement) {\n      const boundRect = state._bounds.getBoundingClientRect();\n      const targetRect = state.currentTarget.getBoundingClientRect();\n      const _bounds = {\n        left: boundRect.left - targetRect.left + state.offset[0],\n        right: boundRect.right - targetRect.right + state.offset[0],\n        top: boundRect.top - targetRect.top + state.offset[1],\n        bottom: boundRect.bottom - targetRect.bottom + state.offset[1]\n      };\n      state._bounds = coordinatesConfigResolver.bounds(_bounds);\n    }\n  }\n  cancel() {\n    const state = this.state;\n    if (state.canceled) return;\n    state.canceled = true;\n    state._active = false;\n    setTimeout(() => {\n      this.compute();\n      this.emit();\n    }, 0);\n  }\n  setActive() {\n    this.state._active = this.state._pointerActive || this.state._keyboardActive;\n  }\n  clean() {\n    this.pointerClean();\n    this.state._pointerActive = false;\n    this.state._keyboardActive = false;\n    super.clean();\n  }\n  pointerDown(event) {\n    const config = this.config;\n    const state = this.state;\n    if (event.buttons != null && (Array.isArray(config.pointerButtons) ? !config.pointerButtons.includes(event.buttons) : config.pointerButtons !== -1 && config.pointerButtons !== event.buttons)) return;\n    const ctrlIds = this.ctrl.setEventIds(event);\n    if (config.pointerCapture) {\n      event.target.setPointerCapture(event.pointerId);\n    }\n    if (ctrlIds && ctrlIds.size > 1 && state._pointerActive) return;\n    this.start(event);\n    this.setupPointer(event);\n    state._pointerId = pointerId(event);\n    state._pointerActive = true;\n    this.computeValues(pointerValues(event));\n    this.computeInitial();\n    if (config.preventScrollAxis && getPointerType(event) !== 'mouse') {\n      state._active = false;\n      this.setupScrollPrevention(event);\n    } else if (config.delay > 0) {\n      this.setupDelayTrigger(event);\n      if (config.triggerAllEvents) {\n        this.compute(event);\n        this.emit();\n      }\n    } else {\n      this.startPointerDrag(event);\n    }\n  }\n  startPointerDrag(event) {\n    const state = this.state;\n    state._active = true;\n    state._preventScroll = true;\n    state._delayed = false;\n    this.compute(event);\n    this.emit();\n  }\n  pointerMove(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state._pointerActive) return;\n    const id = pointerId(event);\n    if (state._pointerId !== undefined && id !== state._pointerId) return;\n    const _values = pointerValues(event);\n    if (document.pointerLockElement === event.target) {\n      state._delta = [event.movementX, event.movementY];\n    } else {\n      state._delta = V.sub(_values, state._values);\n      this.computeValues(_values);\n    }\n    V.addTo(state._movement, state._delta);\n    this.compute(event);\n    if (state._delayed && state.intentional) {\n      this.timeoutStore.remove('dragDelay');\n      state.active = false;\n      this.startPointerDrag(event);\n      return;\n    }\n    if (config.preventScrollAxis && !state._preventScroll) {\n      if (state.axis) {\n        if (state.axis === config.preventScrollAxis || config.preventScrollAxis === 'xy') {\n          state._active = false;\n          this.clean();\n          return;\n        } else {\n          this.timeoutStore.remove('startPointerDrag');\n          this.startPointerDrag(event);\n          return;\n        }\n      } else {\n        return;\n      }\n    }\n    this.emit();\n  }\n  pointerUp(event) {\n    this.ctrl.setEventIds(event);\n    try {\n      if (this.config.pointerCapture && event.target.hasPointerCapture(event.pointerId)) {\n        ;\n        event.target.releasePointerCapture(event.pointerId);\n      }\n    } catch (_unused) {\n      if (process.env.NODE_ENV === 'development') {\n        console.warn(`[@use-gesture]: If you see this message, it's likely that you're using an outdated version of \\`@react-three/fiber\\`. \\n\\nPlease upgrade to the latest version.`);\n      }\n    }\n    const state = this.state;\n    const config = this.config;\n    if (!state._active || !state._pointerActive) return;\n    const id = pointerId(event);\n    if (state._pointerId !== undefined && id !== state._pointerId) return;\n    this.state._pointerActive = false;\n    this.setActive();\n    this.compute(event);\n    const [dx, dy] = state._distance;\n    state.tap = dx <= config.tapsThreshold && dy <= config.tapsThreshold;\n    if (state.tap && config.filterTaps) {\n      state._force = true;\n    } else {\n      const [_dx, _dy] = state._delta;\n      const [_mx, _my] = state._movement;\n      const [svx, svy] = config.swipe.velocity;\n      const [sx, sy] = config.swipe.distance;\n      const sdt = config.swipe.duration;\n      if (state.elapsedTime < sdt) {\n        const _vx = Math.abs(_dx / state.timeDelta);\n        const _vy = Math.abs(_dy / state.timeDelta);\n        if (_vx > svx && Math.abs(_mx) > sx) state.swipe[0] = Math.sign(_dx);\n        if (_vy > svy && Math.abs(_my) > sy) state.swipe[1] = Math.sign(_dy);\n      }\n    }\n    this.emit();\n  }\n  pointerClick(event) {\n    if (!this.state.tap && event.detail > 0) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n  setupPointer(event) {\n    const config = this.config;\n    const device = config.device;\n    if (process.env.NODE_ENV === 'development') {\n      try {\n        if (device === 'pointer' && config.preventScrollDelay === undefined) {\n          const currentTarget = 'uv' in event ? event.sourceEvent.currentTarget : event.currentTarget;\n          const style = window.getComputedStyle(currentTarget);\n          if (style.touchAction === 'auto') {\n            console.warn(`[@use-gesture]: The drag target has its \\`touch-action\\` style property set to \\`auto\\`. It is recommended to add \\`touch-action: 'none'\\` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.\\n\\nThis message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.`, currentTarget);\n          }\n        }\n      } catch (_unused2) {}\n    }\n    if (config.pointerLock) {\n      event.currentTarget.requestPointerLock();\n    }\n    if (!config.pointerCapture) {\n      this.eventStore.add(this.sharedConfig.window, device, 'change', this.pointerMove.bind(this));\n      this.eventStore.add(this.sharedConfig.window, device, 'end', this.pointerUp.bind(this));\n      this.eventStore.add(this.sharedConfig.window, device, 'cancel', this.pointerUp.bind(this));\n    }\n  }\n  pointerClean() {\n    if (this.config.pointerLock && document.pointerLockElement === this.state.currentTarget) {\n      document.exitPointerLock();\n    }\n  }\n  preventScroll(event) {\n    if (this.state._preventScroll && event.cancelable) {\n      event.preventDefault();\n    }\n  }\n  setupScrollPrevention(event) {\n    this.state._preventScroll = false;\n    persistEvent(event);\n    const remove = this.eventStore.add(this.sharedConfig.window, 'touch', 'change', this.preventScroll.bind(this), {\n      passive: false\n    });\n    this.eventStore.add(this.sharedConfig.window, 'touch', 'end', remove);\n    this.eventStore.add(this.sharedConfig.window, 'touch', 'cancel', remove);\n    this.timeoutStore.add('startPointerDrag', this.startPointerDrag.bind(this), this.config.preventScrollDelay, event);\n  }\n  setupDelayTrigger(event) {\n    this.state._delayed = true;\n    this.timeoutStore.add('dragDelay', () => {\n      this.state._step = [0, 0];\n      this.startPointerDrag(event);\n    }, this.config.delay);\n  }\n  keyDown(event) {\n    const deltaFn = KEYS_DELTA_MAP[event.key];\n    if (deltaFn) {\n      const state = this.state;\n      const factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;\n      this.start(event);\n      state._delta = deltaFn(this.config.keyboardDisplacement, factor);\n      state._keyboardActive = true;\n      V.addTo(state._movement, state._delta);\n      this.compute(event);\n      this.emit();\n    }\n  }\n  keyUp(event) {\n    if (!(event.key in KEYS_DELTA_MAP)) return;\n    this.state._keyboardActive = false;\n    this.setActive();\n    this.compute(event);\n    this.emit();\n  }\n  bind(bindFunction) {\n    const device = this.config.device;\n    bindFunction(device, 'start', this.pointerDown.bind(this));\n    if (this.config.pointerCapture) {\n      bindFunction(device, 'change', this.pointerMove.bind(this));\n      bindFunction(device, 'end', this.pointerUp.bind(this));\n      bindFunction(device, 'cancel', this.pointerUp.bind(this));\n      bindFunction('lostPointerCapture', '', this.pointerUp.bind(this));\n    }\n    if (this.config.keys) {\n      bindFunction('key', 'down', this.keyDown.bind(this));\n      bindFunction('key', 'up', this.keyUp.bind(this));\n    }\n    if (this.config.filterTaps) {\n      bindFunction('click', '', this.pointerClick.bind(this), {\n        capture: true,\n        passive: false\n      });\n    }\n  }\n}\nfunction persistEvent(event) {\n  'persist' in event && typeof event.persist === 'function' && event.persist();\n}\n\nconst isBrowser = typeof window !== 'undefined' && window.document && window.document.createElement;\nfunction supportsTouchEvents() {\n  return isBrowser && 'ontouchstart' in window;\n}\nfunction isTouchScreen() {\n  return supportsTouchEvents() || isBrowser && window.navigator.maxTouchPoints > 1;\n}\nfunction supportsPointerEvents() {\n  return isBrowser && 'onpointerdown' in window;\n}\nfunction supportsPointerLock() {\n  return isBrowser && 'exitPointerLock' in window.document;\n}\nfunction supportsGestureEvents() {\n  try {\n    return 'constructor' in GestureEvent;\n  } catch (e) {\n    return false;\n  }\n}\nconst SUPPORT = {\n  isBrowser,\n  gesture: supportsGestureEvents(),\n  touch: supportsTouchEvents(),\n  touchscreen: isTouchScreen(),\n  pointer: supportsPointerEvents(),\n  pointerLock: supportsPointerLock()\n};\n\nconst DEFAULT_PREVENT_SCROLL_DELAY = 250;\nconst DEFAULT_DRAG_DELAY = 180;\nconst DEFAULT_SWIPE_VELOCITY = 0.5;\nconst DEFAULT_SWIPE_DISTANCE = 50;\nconst DEFAULT_SWIPE_DURATION = 250;\nconst DEFAULT_KEYBOARD_DISPLACEMENT = 10;\nconst DEFAULT_DRAG_AXIS_THRESHOLD = {\n  mouse: 0,\n  touch: 0,\n  pen: 8\n};\nconst dragConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  device(_v, _k, {\n    pointer: {\n      touch = false,\n      lock = false,\n      mouse = false\n    } = {}\n  }) {\n    this.pointerLock = lock && SUPPORT.pointerLock;\n    if (SUPPORT.touch && touch) return 'touch';\n    if (this.pointerLock) return 'mouse';\n    if (SUPPORT.pointer && !mouse) return 'pointer';\n    if (SUPPORT.touch) return 'touch';\n    return 'mouse';\n  },\n  preventScrollAxis(value, _k, {\n    preventScroll\n  }) {\n    this.preventScrollDelay = typeof preventScroll === 'number' ? preventScroll : preventScroll || preventScroll === undefined && value ? DEFAULT_PREVENT_SCROLL_DELAY : undefined;\n    if (!SUPPORT.touchscreen || preventScroll === false) return undefined;\n    return value ? value : preventScroll !== undefined ? 'y' : undefined;\n  },\n  pointerCapture(_v, _k, {\n    pointer: {\n      capture = true,\n      buttons = 1,\n      keys = true\n    } = {}\n  }) {\n    this.pointerButtons = buttons;\n    this.keys = keys;\n    return !this.pointerLock && this.device === 'pointer' && capture;\n  },\n  threshold(value, _k, {\n    filterTaps = false,\n    tapsThreshold = 3,\n    axis = undefined\n  }) {\n    const threshold = V.toVector(value, filterTaps ? tapsThreshold : axis ? 1 : 0);\n    this.filterTaps = filterTaps;\n    this.tapsThreshold = tapsThreshold;\n    return threshold;\n  },\n  swipe({\n    velocity = DEFAULT_SWIPE_VELOCITY,\n    distance = DEFAULT_SWIPE_DISTANCE,\n    duration = DEFAULT_SWIPE_DURATION\n  } = {}) {\n    return {\n      velocity: this.transform(V.toVector(velocity)),\n      distance: this.transform(V.toVector(distance)),\n      duration\n    };\n  },\n  delay(value = 0) {\n    switch (value) {\n      case true:\n        return DEFAULT_DRAG_DELAY;\n      case false:\n        return 0;\n      default:\n        return value;\n    }\n  },\n  axisThreshold(value) {\n    if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;\n    return _objectSpread2(_objectSpread2({}, DEFAULT_DRAG_AXIS_THRESHOLD), value);\n  },\n  keyboardDisplacement(value = DEFAULT_KEYBOARD_DISPLACEMENT) {\n    return value;\n  }\n});\nif (process.env.NODE_ENV === 'development') {\n  Object.assign(dragConfigResolver, {\n    useTouch(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`useTouch\\` option has been renamed to \\`pointer.touch\\`. Use it as in \\`{ pointer: { touch: true } }\\`.`);\n      }\n      return NaN;\n    },\n    experimental_preventWindowScrollY(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`experimental_preventWindowScrollY\\` option has been renamed to \\`preventScroll\\`.`);\n      }\n      return NaN;\n    },\n    swipeVelocity(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeVelocity\\` option has been renamed to \\`swipe.velocity\\`. Use it as in \\`{ swipe: { velocity: 0.5 } }\\`.`);\n      }\n      return NaN;\n    },\n    swipeDistance(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeDistance\\` option has been renamed to \\`swipe.distance\\`. Use it as in \\`{ swipe: { distance: 50 } }\\`.`);\n      }\n      return NaN;\n    },\n    swipeDuration(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeDuration\\` option has been renamed to \\`swipe.duration\\`. Use it as in \\`{ swipe: { duration: 250 } }\\`.`);\n      }\n      return NaN;\n    }\n  });\n}\n\nfunction clampStateInternalMovementToBounds(state) {\n  const [ox, oy] = state.overflow;\n  const [dx, dy] = state._delta;\n  const [dirx, diry] = state._direction;\n  if (ox < 0 && dx > 0 && dirx < 0 || ox > 0 && dx < 0 && dirx > 0) {\n    state._movement[0] = state._movementBound[0];\n  }\n  if (oy < 0 && dy > 0 && diry < 0 || oy > 0 && dy < 0 && diry > 0) {\n    state._movement[1] = state._movementBound[1];\n  }\n}\n\nconst SCALE_ANGLE_RATIO_INTENT_DEG = 30;\nconst PINCH_WHEEL_RATIO = 100;\nclass PinchEngine extends Engine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'pinching');\n    _defineProperty(this, \"aliasKey\", 'da');\n  }\n  init() {\n    this.state.offset = [1, 0];\n    this.state.lastOffset = [1, 0];\n    this.state._pointerEvents = new Map();\n  }\n  reset() {\n    super.reset();\n    const state = this.state;\n    state._touchIds = [];\n    state.canceled = false;\n    state.cancel = this.cancel.bind(this);\n    state.turns = 0;\n  }\n  computeOffset() {\n    const {\n      type,\n      movement,\n      lastOffset\n    } = this.state;\n    if (type === 'wheel') {\n      this.state.offset = V.add(movement, lastOffset);\n    } else {\n      this.state.offset = [(1 + movement[0]) * lastOffset[0], movement[1] + lastOffset[1]];\n    }\n  }\n  computeMovement() {\n    const {\n      offset,\n      lastOffset\n    } = this.state;\n    this.state.movement = [offset[0] / lastOffset[0], offset[1] - lastOffset[1]];\n  }\n  axisIntent() {\n    const state = this.state;\n    const [_m0, _m1] = state._movement;\n    if (!state.axis) {\n      const axisMovementDifference = Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG - Math.abs(_m1);\n      if (axisMovementDifference < 0) state.axis = 'angle';else if (axisMovementDifference > 0) state.axis = 'scale';\n    }\n  }\n  restrictToAxis(v) {\n    if (this.config.lockDirection) {\n      if (this.state.axis === 'scale') v[1] = 0;else if (this.state.axis === 'angle') v[0] = 0;\n    }\n  }\n  cancel() {\n    const state = this.state;\n    if (state.canceled) return;\n    setTimeout(() => {\n      state.canceled = true;\n      state._active = false;\n      this.compute();\n      this.emit();\n    }, 0);\n  }\n  touchStart(event) {\n    this.ctrl.setEventIds(event);\n    const state = this.state;\n    const ctrlTouchIds = this.ctrl.touchIds;\n    if (state._active) {\n      if (state._touchIds.every(id => ctrlTouchIds.has(id))) return;\n    }\n    if (ctrlTouchIds.size < 2) return;\n    this.start(event);\n    state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);\n    const payload = touchDistanceAngle(event, state._touchIds);\n    if (!payload) return;\n    this.pinchStart(event, payload);\n  }\n  pointerStart(event) {\n    if (event.buttons != null && event.buttons % 2 !== 1) return;\n    this.ctrl.setEventIds(event);\n    event.target.setPointerCapture(event.pointerId);\n    const state = this.state;\n    const _pointerEvents = state._pointerEvents;\n    const ctrlPointerIds = this.ctrl.pointerIds;\n    if (state._active) {\n      if (Array.from(_pointerEvents.keys()).every(id => ctrlPointerIds.has(id))) return;\n    }\n    if (_pointerEvents.size < 2) {\n      _pointerEvents.set(event.pointerId, event);\n    }\n    if (state._pointerEvents.size < 2) return;\n    this.start(event);\n    const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n    if (!payload) return;\n    this.pinchStart(event, payload);\n  }\n  pinchStart(event, payload) {\n    const state = this.state;\n    state.origin = payload.origin;\n    this.computeValues([payload.distance, payload.angle]);\n    this.computeInitial();\n    this.compute(event);\n    this.emit();\n  }\n  touchMove(event) {\n    if (!this.state._active) return;\n    const payload = touchDistanceAngle(event, this.state._touchIds);\n    if (!payload) return;\n    this.pinchMove(event, payload);\n  }\n  pointerMove(event) {\n    const _pointerEvents = this.state._pointerEvents;\n    if (_pointerEvents.has(event.pointerId)) {\n      _pointerEvents.set(event.pointerId, event);\n    }\n    if (!this.state._active) return;\n    const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n    if (!payload) return;\n    this.pinchMove(event, payload);\n  }\n  pinchMove(event, payload) {\n    const state = this.state;\n    const prev_a = state._values[1];\n    const delta_a = payload.angle - prev_a;\n    let delta_turns = 0;\n    if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);\n    this.computeValues([payload.distance, payload.angle - 360 * delta_turns]);\n    state.origin = payload.origin;\n    state.turns = delta_turns;\n    state._movement = [state._values[0] / state._initial[0] - 1, state._values[1] - state._initial[1]];\n    this.compute(event);\n    this.emit();\n  }\n  touchEnd(event) {\n    this.ctrl.setEventIds(event);\n    if (!this.state._active) return;\n    if (this.state._touchIds.some(id => !this.ctrl.touchIds.has(id))) {\n      this.state._active = false;\n      this.compute(event);\n      this.emit();\n    }\n  }\n  pointerEnd(event) {\n    const state = this.state;\n    this.ctrl.setEventIds(event);\n    try {\n      event.target.releasePointerCapture(event.pointerId);\n    } catch (_unused) {}\n    if (state._pointerEvents.has(event.pointerId)) {\n      state._pointerEvents.delete(event.pointerId);\n    }\n    if (!state._active) return;\n    if (state._pointerEvents.size < 2) {\n      state._active = false;\n      this.compute(event);\n      this.emit();\n    }\n  }\n  gestureStart(event) {\n    if (event.cancelable) event.preventDefault();\n    const state = this.state;\n    if (state._active) return;\n    this.start(event);\n    this.computeValues([event.scale, event.rotation]);\n    state.origin = [event.clientX, event.clientY];\n    this.compute(event);\n    this.emit();\n  }\n  gestureMove(event) {\n    if (event.cancelable) event.preventDefault();\n    if (!this.state._active) return;\n    const state = this.state;\n    this.computeValues([event.scale, event.rotation]);\n    state.origin = [event.clientX, event.clientY];\n    const _previousMovement = state._movement;\n    state._movement = [event.scale - 1, event.rotation];\n    state._delta = V.sub(state._movement, _previousMovement);\n    this.compute(event);\n    this.emit();\n  }\n  gestureEnd(event) {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute(event);\n    this.emit();\n  }\n  wheel(event) {\n    const modifierKey = this.config.modifierKey;\n    if (modifierKey && (Array.isArray(modifierKey) ? !modifierKey.find(k => event[k]) : !event[modifierKey])) return;\n    if (!this.state._active) this.wheelStart(event);else this.wheelChange(event);\n    this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n  }\n  wheelStart(event) {\n    this.start(event);\n    this.wheelChange(event);\n  }\n  wheelChange(event) {\n    const isR3f = ('uv' in event);\n    if (!isR3f) {\n      if (event.cancelable) {\n        event.preventDefault();\n      }\n      if (process.env.NODE_ENV === 'development' && !event.defaultPrevented) {\n        console.warn(`[@use-gesture]: To properly support zoom on trackpads, try using the \\`target\\` option.\\n\\nThis message will only appear in development mode.`);\n      }\n    }\n    const state = this.state;\n    state._delta = [-wheelValues(event)[1] / PINCH_WHEEL_RATIO * state.offset[0], 0];\n    V.addTo(state._movement, state._delta);\n    clampStateInternalMovementToBounds(state);\n    this.state.origin = [event.clientX, event.clientY];\n    this.compute(event);\n    this.emit();\n  }\n  wheelEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    const device = this.config.device;\n    if (!!device) {\n      bindFunction(device, 'start', this[device + 'Start'].bind(this));\n      bindFunction(device, 'change', this[device + 'Move'].bind(this));\n      bindFunction(device, 'end', this[device + 'End'].bind(this));\n      bindFunction(device, 'cancel', this[device + 'End'].bind(this));\n      bindFunction('lostPointerCapture', '', this[device + 'End'].bind(this));\n    }\n    if (this.config.pinchOnWheel) {\n      bindFunction('wheel', '', this.wheel.bind(this), {\n        passive: false\n      });\n    }\n  }\n}\n\nconst pinchConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n  device(_v, _k, {\n    shared,\n    pointer: {\n      touch = false\n    } = {}\n  }) {\n    const sharedConfig = shared;\n    if (sharedConfig.target && !SUPPORT.touch && SUPPORT.gesture) return 'gesture';\n    if (SUPPORT.touch && touch) return 'touch';\n    if (SUPPORT.touchscreen) {\n      if (SUPPORT.pointer) return 'pointer';\n      if (SUPPORT.touch) return 'touch';\n    }\n  },\n  bounds(_v, _k, {\n    scaleBounds = {},\n    angleBounds = {}\n  }) {\n    const _scaleBounds = state => {\n      const D = assignDefault(call(scaleBounds, state), {\n        min: -Infinity,\n        max: Infinity\n      });\n      return [D.min, D.max];\n    };\n    const _angleBounds = state => {\n      const A = assignDefault(call(angleBounds, state), {\n        min: -Infinity,\n        max: Infinity\n      });\n      return [A.min, A.max];\n    };\n    if (typeof scaleBounds !== 'function' && typeof angleBounds !== 'function') return [_scaleBounds(), _angleBounds()];\n    return state => [_scaleBounds(state), _angleBounds(state)];\n  },\n  threshold(value, _k, config) {\n    this.lockDirection = config.axis === 'lock';\n    const threshold = V.toVector(value, this.lockDirection ? [0.1, 3] : 0);\n    return threshold;\n  },\n  modifierKey(value) {\n    if (value === undefined) return 'ctrlKey';\n    return value;\n  },\n  pinchOnWheel(value = true) {\n    return value;\n  }\n});\n\nclass MoveEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'moving');\n  }\n  move(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    if (!this.state._active) this.moveStart(event);else this.moveChange(event);\n    this.timeoutStore.add('moveEnd', this.moveEnd.bind(this));\n  }\n  moveStart(event) {\n    this.start(event);\n    this.computeValues(pointerValues(event));\n    this.compute(event);\n    this.computeInitial();\n    this.emit();\n  }\n  moveChange(event) {\n    if (!this.state._active) return;\n    const values = pointerValues(event);\n    const state = this.state;\n    state._delta = V.sub(values, state._values);\n    V.addTo(state._movement, state._delta);\n    this.computeValues(values);\n    this.compute(event);\n    this.emit();\n  }\n  moveEnd(event) {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute(event);\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('pointer', 'change', this.move.bind(this));\n    bindFunction('pointer', 'leave', this.moveEnd.bind(this));\n  }\n}\n\nconst moveConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  mouseOnly: (value = true) => value\n});\n\nclass ScrollEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'scrolling');\n  }\n  scroll(event) {\n    if (!this.state._active) this.start(event);\n    this.scrollChange(event);\n    this.timeoutStore.add('scrollEnd', this.scrollEnd.bind(this));\n  }\n  scrollChange(event) {\n    if (event.cancelable) event.preventDefault();\n    const state = this.state;\n    const values = scrollValues(event);\n    state._delta = V.sub(values, state._values);\n    V.addTo(state._movement, state._delta);\n    this.computeValues(values);\n    this.compute(event);\n    this.emit();\n  }\n  scrollEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('scroll', '', this.scroll.bind(this));\n  }\n}\n\nconst scrollConfigResolver = coordinatesConfigResolver;\n\nclass WheelEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'wheeling');\n  }\n  wheel(event) {\n    if (!this.state._active) this.start(event);\n    this.wheelChange(event);\n    this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n  }\n  wheelChange(event) {\n    const state = this.state;\n    state._delta = wheelValues(event);\n    V.addTo(state._movement, state._delta);\n    clampStateInternalMovementToBounds(state);\n    this.compute(event);\n    this.emit();\n  }\n  wheelEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('wheel', '', this.wheel.bind(this));\n  }\n}\n\nconst wheelConfigResolver = coordinatesConfigResolver;\n\nclass HoverEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'hovering');\n  }\n  enter(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    this.start(event);\n    this.computeValues(pointerValues(event));\n    this.compute(event);\n    this.emit();\n  }\n  leave(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    const state = this.state;\n    if (!state._active) return;\n    state._active = false;\n    const values = pointerValues(event);\n    state._movement = state._delta = V.sub(values, state._values);\n    this.computeValues(values);\n    this.compute(event);\n    state.delta = state.movement;\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('pointer', 'enter', this.enter.bind(this));\n    bindFunction('pointer', 'leave', this.leave.bind(this));\n  }\n}\n\nconst hoverConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  mouseOnly: (value = true) => value\n});\n\nconst EngineMap = new Map();\nconst ConfigResolverMap = new Map();\nfunction registerAction(action) {\n  EngineMap.set(action.key, action.engine);\n  ConfigResolverMap.set(action.key, action.resolver);\n}\nconst dragAction = {\n  key: 'drag',\n  engine: DragEngine,\n  resolver: dragConfigResolver\n};\nconst hoverAction = {\n  key: 'hover',\n  engine: HoverEngine,\n  resolver: hoverConfigResolver\n};\nconst moveAction = {\n  key: 'move',\n  engine: MoveEngine,\n  resolver: moveConfigResolver\n};\nconst pinchAction = {\n  key: 'pinch',\n  engine: PinchEngine,\n  resolver: pinchConfigResolver\n};\nconst scrollAction = {\n  key: 'scroll',\n  engine: ScrollEngine,\n  resolver: scrollConfigResolver\n};\nconst wheelAction = {\n  key: 'wheel',\n  engine: WheelEngine,\n  resolver: wheelConfigResolver\n};\n\nexport { ConfigResolverMap as C, EngineMap as E, SUPPORT as S, _objectSpread2 as _, _defineProperty as a, touchIds as b, chain as c, toHandlerProp as d, dragAction as e, pinchAction as f, hoverAction as h, isTouch as i, moveAction as m, parseProp as p, registerAction as r, scrollAction as s, toDomEventType as t, wheelAction as w };\n", "import { registerAction, dragAction, pinchAction, wheelAction, scrollAction, moveAction, hoverAction } from '@use-gesture/core/actions';\nexport * from '@use-gesture/core/actions';\nimport React from 'react';\nimport { Controller, parseMergedHandlers } from '@use-gesture/core';\nexport * from '@use-gesture/core/utils';\nexport * from '@use-gesture/core/types';\n\nfunction useRecognizers(handlers, config = {}, gestureKey, nativeHandlers) {\n  const ctrl = React.useMemo(() => new Controller(handlers), []);\n  ctrl.applyHandlers(handlers, nativeHandlers);\n  ctrl.applyConfig(config, gestureKey);\n  React.useEffect(ctrl.effect.bind(ctrl));\n  React.useEffect(() => {\n    return ctrl.clean.bind(ctrl);\n  }, []);\n  if (config.target === undefined) {\n    return ctrl.bind.bind(ctrl);\n  }\n  return undefined;\n}\n\nfunction useDrag(handler, config) {\n  registerAction(dragAction);\n  return useRecognizers({\n    drag: handler\n  }, config || {}, 'drag');\n}\n\nfunction usePinch(handler, config) {\n  registerAction(pinchAction);\n  return useRecognizers({\n    pinch: handler\n  }, config || {}, 'pinch');\n}\n\nfunction useWheel(handler, config) {\n  registerAction(wheelAction);\n  return useRecognizers({\n    wheel: handler\n  }, config || {}, 'wheel');\n}\n\nfunction useScroll(handler, config) {\n  registerAction(scrollAction);\n  return useRecognizers({\n    scroll: handler\n  }, config || {}, 'scroll');\n}\n\nfunction useMove(handler, config) {\n  registerAction(moveAction);\n  return useRecognizers({\n    move: handler\n  }, config || {}, 'move');\n}\n\nfunction useHover(handler, config) {\n  registerAction(hoverAction);\n  return useRecognizers({\n    hover: handler\n  }, config || {}, 'hover');\n}\n\nfunction createUseGesture(actions) {\n  actions.forEach(registerAction);\n  return function useGesture(_handlers, _config) {\n    const {\n      handlers,\n      nativeHandlers,\n      config\n    } = parseMergedHandlers(_handlers, _config || {});\n    return useRecognizers(handlers, config, undefined, nativeHandlers);\n  };\n}\n\nfunction useGesture(handlers, config) {\n  const hook = createUseGesture([dragAction, pinchAction, scrollAction, wheelAction, moveAction, hoverAction]);\n  return hook(handlers, config || {});\n}\n\nexport { createUseGesture, useDrag, useGesture, useHover, useMove, usePinch, useScroll, useWheel };\n", "import { S as SUPPORT, C as ConfigResolverMap, _ as _objectSpread2, a as _defineProperty, t as toDomEventType, i as isTouch, b as touchIds, E as EngineMap, c as chain, p as parseProp, d as toHandlerProp } from './actions-fe213e88.esm.js';\nimport './maths-0ab39ae9.esm.js';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n\nconst sharedConfigResolver = {\n  target(value) {\n    if (value) {\n      return () => 'current' in value ? value.current : value;\n    }\n    return undefined;\n  },\n  enabled(value = true) {\n    return value;\n  },\n  window(value = SUPPORT.isBrowser ? window : undefined) {\n    return value;\n  },\n  eventOptions({\n    passive = true,\n    capture = false\n  } = {}) {\n    return {\n      passive,\n      capture\n    };\n  },\n  transform(value) {\n    return value;\n  }\n};\n\nconst _excluded = [\"target\", \"eventOptions\", \"window\", \"enabled\", \"transform\"];\nfunction resolveWith(config = {}, resolvers) {\n  const result = {};\n  for (const [key, resolver] of Object.entries(resolvers)) {\n    switch (typeof resolver) {\n      case 'function':\n        if (process.env.NODE_ENV === 'development') {\n          const r = resolver.call(result, config[key], key, config);\n          if (!Number.isNaN(r)) result[key] = r;\n        } else {\n          result[key] = resolver.call(result, config[key], key, config);\n        }\n        break;\n      case 'object':\n        result[key] = resolveWith(config[key], resolver);\n        break;\n      case 'boolean':\n        if (resolver) result[key] = config[key];\n        break;\n    }\n  }\n  return result;\n}\nfunction parse(newConfig, gestureKey, _config = {}) {\n  const _ref = newConfig,\n    {\n      target,\n      eventOptions,\n      window,\n      enabled,\n      transform\n    } = _ref,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  _config.shared = resolveWith({\n    target,\n    eventOptions,\n    window,\n    enabled,\n    transform\n  }, sharedConfigResolver);\n  if (gestureKey) {\n    const resolver = ConfigResolverMap.get(gestureKey);\n    _config[gestureKey] = resolveWith(_objectSpread2({\n      shared: _config.shared\n    }, rest), resolver);\n  } else {\n    for (const key in rest) {\n      const resolver = ConfigResolverMap.get(key);\n      if (resolver) {\n        _config[key] = resolveWith(_objectSpread2({\n          shared: _config.shared\n        }, rest[key]), resolver);\n      } else if (process.env.NODE_ENV === 'development') {\n        if (!['drag', 'pinch', 'scroll', 'wheel', 'move', 'hover'].includes(key)) {\n          if (key === 'domTarget') {\n            throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n          }\n          console.warn(`[@use-gesture]: Unknown config key \\`${key}\\` was used. Please read the documentation for further information.`);\n        }\n      }\n    }\n  }\n  return _config;\n}\n\nclass EventStore {\n  constructor(ctrl, gestureKey) {\n    _defineProperty(this, \"_listeners\", new Set());\n    this._ctrl = ctrl;\n    this._gestureKey = gestureKey;\n  }\n  add(element, device, action, handler, options) {\n    const listeners = this._listeners;\n    const type = toDomEventType(device, action);\n    const _options = this._gestureKey ? this._ctrl.config[this._gestureKey].eventOptions : {};\n    const eventOptions = _objectSpread2(_objectSpread2({}, _options), options);\n    element.addEventListener(type, handler, eventOptions);\n    const remove = () => {\n      element.removeEventListener(type, handler, eventOptions);\n      listeners.delete(remove);\n    };\n    listeners.add(remove);\n    return remove;\n  }\n  clean() {\n    this._listeners.forEach(remove => remove());\n    this._listeners.clear();\n  }\n}\n\nclass TimeoutStore {\n  constructor() {\n    _defineProperty(this, \"_timeouts\", new Map());\n  }\n  add(key, callback, ms = 140, ...args) {\n    this.remove(key);\n    this._timeouts.set(key, window.setTimeout(callback, ms, ...args));\n  }\n  remove(key) {\n    const timeout = this._timeouts.get(key);\n    if (timeout) window.clearTimeout(timeout);\n  }\n  clean() {\n    this._timeouts.forEach(timeout => void window.clearTimeout(timeout));\n    this._timeouts.clear();\n  }\n}\n\nclass Controller {\n  constructor(handlers) {\n    _defineProperty(this, \"gestures\", new Set());\n    _defineProperty(this, \"_targetEventStore\", new EventStore(this));\n    _defineProperty(this, \"gestureEventStores\", {});\n    _defineProperty(this, \"gestureTimeoutStores\", {});\n    _defineProperty(this, \"handlers\", {});\n    _defineProperty(this, \"config\", {});\n    _defineProperty(this, \"pointerIds\", new Set());\n    _defineProperty(this, \"touchIds\", new Set());\n    _defineProperty(this, \"state\", {\n      shared: {\n        shiftKey: false,\n        metaKey: false,\n        ctrlKey: false,\n        altKey: false\n      }\n    });\n    resolveGestures(this, handlers);\n  }\n  setEventIds(event) {\n    if (isTouch(event)) {\n      this.touchIds = new Set(touchIds(event));\n      return this.touchIds;\n    } else if ('pointerId' in event) {\n      if (event.type === 'pointerup' || event.type === 'pointercancel') this.pointerIds.delete(event.pointerId);else if (event.type === 'pointerdown') this.pointerIds.add(event.pointerId);\n      return this.pointerIds;\n    }\n  }\n  applyHandlers(handlers, nativeHandlers) {\n    this.handlers = handlers;\n    this.nativeHandlers = nativeHandlers;\n  }\n  applyConfig(config, gestureKey) {\n    this.config = parse(config, gestureKey, this.config);\n  }\n  clean() {\n    this._targetEventStore.clean();\n    for (const key of this.gestures) {\n      this.gestureEventStores[key].clean();\n      this.gestureTimeoutStores[key].clean();\n    }\n  }\n  effect() {\n    if (this.config.shared.target) this.bind();\n    return () => this._targetEventStore.clean();\n  }\n  bind(...args) {\n    const sharedConfig = this.config.shared;\n    const props = {};\n    let target;\n    if (sharedConfig.target) {\n      target = sharedConfig.target();\n      if (!target) return;\n    }\n    if (sharedConfig.enabled) {\n      for (const gestureKey of this.gestures) {\n        const gestureConfig = this.config[gestureKey];\n        const bindFunction = bindToProps(props, gestureConfig.eventOptions, !!target);\n        if (gestureConfig.enabled) {\n          const Engine = EngineMap.get(gestureKey);\n          new Engine(this, args, gestureKey).bind(bindFunction);\n        }\n      }\n      const nativeBindFunction = bindToProps(props, sharedConfig.eventOptions, !!target);\n      for (const eventKey in this.nativeHandlers) {\n        nativeBindFunction(eventKey, '', event => this.nativeHandlers[eventKey](_objectSpread2(_objectSpread2({}, this.state.shared), {}, {\n          event,\n          args\n        })), undefined, true);\n      }\n    }\n    for (const handlerProp in props) {\n      props[handlerProp] = chain(...props[handlerProp]);\n    }\n    if (!target) return props;\n    for (const handlerProp in props) {\n      const {\n        device,\n        capture,\n        passive\n      } = parseProp(handlerProp);\n      this._targetEventStore.add(target, device, '', props[handlerProp], {\n        capture,\n        passive\n      });\n    }\n  }\n}\nfunction setupGesture(ctrl, gestureKey) {\n  ctrl.gestures.add(gestureKey);\n  ctrl.gestureEventStores[gestureKey] = new EventStore(ctrl, gestureKey);\n  ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();\n}\nfunction resolveGestures(ctrl, internalHandlers) {\n  if (internalHandlers.drag) setupGesture(ctrl, 'drag');\n  if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');\n  if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');\n  if (internalHandlers.move) setupGesture(ctrl, 'move');\n  if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');\n  if (internalHandlers.hover) setupGesture(ctrl, 'hover');\n}\nconst bindToProps = (props, eventOptions, withPassiveOption) => (device, action, handler, options = {}, isNative = false) => {\n  var _options$capture, _options$passive;\n  const capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : eventOptions.capture;\n  const passive = (_options$passive = options.passive) !== null && _options$passive !== void 0 ? _options$passive : eventOptions.passive;\n  let handlerProp = isNative ? device : toHandlerProp(device, action, capture);\n  if (withPassiveOption && passive) handlerProp += 'Passive';\n  props[handlerProp] = props[handlerProp] || [];\n  props[handlerProp].push(handler);\n};\n\nconst RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;\nfunction sortHandlers(_handlers) {\n  const native = {};\n  const handlers = {};\n  const actions = new Set();\n  for (let key in _handlers) {\n    if (RE_NOT_NATIVE.test(key)) {\n      actions.add(RegExp.lastMatch);\n      handlers[key] = _handlers[key];\n    } else {\n      native[key] = _handlers[key];\n    }\n  }\n  return [handlers, native, actions];\n}\nfunction registerGesture(actions, handlers, handlerKey, key, internalHandlers, config) {\n  if (!actions.has(handlerKey)) return;\n  if (!EngineMap.has(key)) {\n    if (process.env.NODE_ENV === 'development') {\n      console.warn(`[@use-gesture]: You've created a custom handler that that uses the \\`${key}\\` gesture but isn't properly configured.\\n\\nPlease add \\`${key}Action\\` when creating your handler.`);\n    }\n    return;\n  }\n  const startKey = handlerKey + 'Start';\n  const endKey = handlerKey + 'End';\n  const fn = state => {\n    let memo = undefined;\n    if (state.first && startKey in handlers) handlers[startKey](state);\n    if (handlerKey in handlers) memo = handlers[handlerKey](state);\n    if (state.last && endKey in handlers) handlers[endKey](state);\n    return memo;\n  };\n  internalHandlers[key] = fn;\n  config[key] = config[key] || {};\n}\nfunction parseMergedHandlers(mergedHandlers, mergedConfig) {\n  const [handlers, nativeHandlers, actions] = sortHandlers(mergedHandlers);\n  const internalHandlers = {};\n  registerGesture(actions, handlers, 'onDrag', 'drag', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onWheel', 'wheel', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onScroll', 'scroll', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onPinch', 'pinch', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onMove', 'move', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onHover', 'hover', internalHandlers, mergedConfig);\n  return {\n    handlers: internalHandlers,\n    config: mergedConfig,\n    nativeHandlers\n  };\n}\n\nexport { Controller, parseMergedHandlers };\n", "import { GridConfig, GridCoords, GridSpan, TableOf } from '../model';\n\nexport const newTable = <T>(rows: number, cols: number, value: T): TableOf<T> =>\n  new Array(rows).fill(null).map(_ => new Array(cols).fill(value));\n\nexport const copyTable = <T>(table: TableOf<T>): TableOf<T> =>\n  [...table].map(row => [...row]);\n\nexport const tableSize = <T>(table: TableOf<T>) => {\n  const rows = table.length;\n  const cols = rows ? table[0].length : 0;\n  return { rows, cols };\n};\n\nexport const isEmptyRow = <T>(row: Array<T>) => !row.find(cell => !!cell);\n\nexport const trimLocation = <T>(\n  table: TableOf<T>,\n  { col, row }: GridCoords\n) => {\n  const { cols, rows } = tableSize(table);\n  return {\n    col: col < 0 ? 0 : col >= cols ? cols - 1 : col,\n    row: row < 0 ? 0 : row >= rows ? rows - 1 : row,\n  };\n};\nexport const pointToLocation = <T>(\n  table: TableOf<T>,\n  x: number,\n  y: number,\n  { elementWidth, elementHeight }: GridConfig\n) => {\n  const col = Math.floor(x / elementWidth);\n  const row = Math.floor(y / elementHeight);\n  return trimLocation(table, { col, row });\n};\n\nexport const fitsInTable = <T>(\n  coords: GridCoords & GridSpan,\n  table: TableOf<T>\n) => {\n  const { rows, cols } = tableSize(table);\n  for (let row = coords.row; row < coords.row + coords.rowSpan; row++) {\n    for (let col = coords.col; col < coords.col + coords.colSpan; col++) {\n      if (row > rows || col > cols) return false;\n      if (table[row][col]) return false;\n    }\n  }\n  return true;\n};\n\nexport const placeInTable = <T>(\n  coords: GridCoords & GridSpan,\n  data: T,\n  table: TableOf<T>\n): TableOf<T> => {\n  const newTable = copyTable(table);\n  for (let row = coords.row; row < coords.row + coords.rowSpan; row++) {\n    for (let col = coords.col; col < coords.col + coords.colSpan; col++) {\n      newTable[row][col] = data;\n    }\n  }\n  return newTable;\n};\n\nexport const findFirstFittingPosition = <T>(\n  span: GridSpan,\n  table: TableOf<T>\n): GridCoords | undefined => {\n  const { rows, cols } = tableSize(table);\n  let free = true;\n  for (let tableRow = 0; tableRow <= rows - span.rowSpan; tableRow++) {\n    for (let tableCol = 0; tableCol <= cols - span.colSpan; tableCol++) {\n      //check if all cells are available\n      free = true;\n      for (let cellRow = 0; cellRow < span.rowSpan; cellRow++) {\n        for (let cellCol = 0; cellCol < span.colSpan; cellCol++) {\n          free = free && !table[tableRow + cellRow][tableCol + cellCol];\n        }\n      }\n      if (free) {\n        return { row: tableRow, col: tableCol };\n      }\n    }\n  }\n};\n", "import { TilesTable, TilePositionInfo, TileInfo } from '../model';\nimport {\n  findFirstFittingPosition,\n  isEmptyRow,\n  newTable,\n  placeInTable,\n  tableSize,\n} from './table';\n\nexport const interceptTiles = <T>(\n  table: TilesTable<T>,\n  startRow: number,\n  startCol: number,\n  rowSpan: number,\n  colSpan: number\n) => {\n  let interceptTiles: TilePositionInfo<T>[] = [];\n  const { rows, cols } = tableSize(table);\n\n  for (let row = startRow; row < startRow + rowSpan; row++) {\n    if (row >= rows) continue;\n    for (let col = startCol; col < startCol + colSpan; col++) {\n      if (col >= cols) continue;\n      const cell = table[row][col];\n      if (cell && !interceptTiles.find(t => t.data === cell.data)) {\n        interceptTiles.push(cell);\n      }\n    }\n  }\n\n  return interceptTiles.sort(\n    (a, b) => a.col + a.row * cols - (b.col + b.row * cols)\n  );\n};\n\nexport const tableToTilesList = <T>(table: TilesTable<T>) => {\n  const { rows, cols } = tableSize(table);\n  return interceptTiles(table, 0, 0, rows, cols);\n};\n\nexport const tilesListToTable = <T>(\n  tiles: TileInfo<T>[],\n  columns: number\n): TilesTable<T> => {\n  const maxRows = tiles.reduce((memo, tile) => memo + tile.rowSpan, 0);\n  let table = newTable<TilePositionInfo<T> | undefined>(\n    maxRows,\n    columns,\n    undefined\n  );\n  tiles.forEach(tile => {\n    let position = findFirstFittingPosition(tile, table);\n    if (position) {\n      const fittedTile: TilePositionInfo<T> = { ...tile, ...position };\n      table = placeInTable(fittedTile, fittedTile, table);\n    }\n  });\n\n  //trim the table\n\n  return table.filter(row => !isEmptyRow(row)) as TilesTable<T>;\n};\n", "import { GridConfig, TilePositionInfo } from '../model';\nimport { newTable } from './table';\n\nexport const positionedTilesMaxRows = <T>(\n  positionedTiles: TilePositionInfo<T>[]\n) => {\n  //calculate the max row\n  return positionedTiles.reduce<number>((memo, tile) => {\n    const maxTileRow = tile.row + tile.rowSpan;\n    return memo > maxTileRow ? memo : maxTileRow;\n  }, 0);\n};\n\n/**\n * Check if the elements are overlapping in the table\n *\n * @param positionedTiles\n */\nexport const checkOverlap = <T>(\n  positionedTiles: TilePositionInfo<T>[],\n  { columns }: GridConfig\n) => {\n  //calculate the max row\n  const maxRows = positionedTilesMaxRows(positionedTiles);\n\n  //create a new temporary table to support the overlap check\n  //the rows need to be filled with null  and then mapped,\n  //otherwise each row will be identical\n  const checkTable = newTable(maxRows, columns, false);\n\n  const overlaps = positionedTiles.find(tile => {\n    for (let col = tile.col; col <= tile.col + tile.colSpan - 1; col++) {\n      for (let row = tile.row; row <= tile.row + tile.rowSpan - 1; row++) {\n        console.log('checktable:', {\n          tile,\n          row,\n          col,\n          outcome: checkTable[row][col],\n        });\n        if (checkTable[row][col] === true) return true;\n        checkTable[row][col] = true;\n      }\n    }\n    return false;\n  });\n  console.log('OVERLAP', overlaps);\n  return !!overlaps;\n};\n\nexport const getTileTouchPoint = <T>(\n  draggingTile: TilePositionInfo<T>,\n  targetTile: TilePositionInfo<T>,\n  absolutePosition: { x: number; y: number },\n  { elementHeight, elementWidth, activeBorderSize }: GridConfig\n) => {\n  const position = {\n    x: absolutePosition.x - targetTile.col * elementWidth,\n    y: absolutePosition.y - targetTile.row * elementHeight,\n  };\n\n  if (draggingTile.col >= targetTile.col && position.x < activeBorderSize)\n    return 'left';\n  if (\n    draggingTile.col <= targetTile.col &&\n    position.x > elementWidth * targetTile.colSpan - activeBorderSize\n  )\n    return 'right';\n  if (\n    draggingTile.row <= targetTile.row &&\n    position.y > elementHeight * targetTile.rowSpan - activeBorderSize\n  )\n    return 'bottom';\n  if (draggingTile.row >= targetTile.row && position.y < activeBorderSize)\n    return 'top';\n  if (\n    position.x > activeBorderSize &&\n    position.y < elementWidth * targetTile.colSpan - activeBorderSize &&\n    position.y > activeBorderSize &&\n    position.y < elementHeight * targetTile.rowSpan - activeBorderSize\n  )\n    return 'center';\n};\n\nexport const tileIncludes = <T>(\n  tile: TilePositionInfo<T>,\n  point: { col: number; row: number; height: number }\n) => {\n  return (\n    tile.col >= point.col &&\n    point.col < tile.col + tile.colSpan &&\n    tile.row >= point.row &&\n    point.row < tile.row + tile.rowSpan\n  );\n};\n", "import { StrategyInterface, TilePositionInfo } from '../model';\nimport * as TilesTableUtils from '../table-utils/tiles-table';\nimport * as TableUtils from '../table-utils/table';\nimport * as TilesUtils from '../table-utils/tiles';\n\n/**\n * Calculates the new table configuration while the tiles are moving\n * @param offsetX\n * @param offsetY\n * @returns\n */\nconst dragMove: StrategyInterface = {\n  onDragMove: ({ offsetX, offsetY, config, state, table, canAcceptDrop }) => {\n    const { elementHeight, elementWidth, columns } = config;\n    const {\n      draggingTile,\n      dragPosition,\n      dropTargetTile,\n      droppable,\n      start,\n      tiles,\n    } = state;\n\n    if (!draggingTile || !dragPosition || !start || !tiles) return;\n\n    const x = start.col * elementWidth + offsetX + dragPosition.x;\n    const y = start.row * elementHeight + offsetY + dragPosition.y;\n\n    //find the position of the tile in the grid\n    const cell = TableUtils.pointToLocation(table, x, y, config);\n    const tsize = TableUtils.tableSize(table);\n\n    //console.log('data:', { x, y, cell, start, draggingTile });\n\n    //try to see if we're touching a hot point\n    if (cell.col <= tsize.cols && cell.row <= tsize.rows) {\n      //find the touched tile within the move\n\n      const touchedTile = table[cell.row][cell.col];\n      if (!touchedTile || touchedTile.data === draggingTile.data) return;\n\n      //get the touchpoint of the touched tile\n      const touchPoint = TilesUtils.getTileTouchPoint(\n        draggingTile,\n        touchedTile,\n        {\n          x,\n          y,\n        },\n        config\n      );\n      if (!touchPoint) return;\n\n      //console.log('HIT TOUCHPOINT', { table, tiles });\n\n      if (touchPoint === 'center') {\n        if (touchedTile === dropTargetTile)\n          return {\n            dropTargetTile,\n            droppable,\n          };\n        if (canAcceptDrop(draggingTile, touchedTile))\n          return { dropTargetTile: touchedTile, droppable: true };\n        return;\n      }\n\n      //a touchpoint has been identified\n\n      const rowDisplacement = Math.floor(dragPosition.y / elementHeight);\n      const colDisplacement = Math.floor(dragPosition.x / elementWidth);\n\n      //calculate the new dragged tile location. This depends on the touched side.\n      const newDragTileLocation = TableUtils.trimLocation(\n        table,\n        touchPoint === 'right'\n          ? {\n              col: cell.col - (draggingTile.colSpan - 1),\n              row: cell.row - rowDisplacement,\n            }\n          : touchPoint === 'left'\n          ? {\n              col: cell.col,\n              row: cell.row - rowDisplacement,\n            }\n          : touchPoint === 'top'\n          ? {\n              col: cell.col - colDisplacement,\n              row: cell.row,\n            }\n          : /*touchPoint === 'bottom'*/ {\n              col: cell.col - colDisplacement,\n              row: cell.row - (draggingTile.rowSpan - 1),\n            }\n      );\n\n      /*\n      console.log(\n        'Effective location:',\n        newDragTileLocation,\n        touchedTile,\n        touchPoint,\n        state\n      );\n      */\n\n      //identify all hover tiles (excluding ourselves)\n      const hoverTiles = TilesTableUtils.interceptTiles(\n        table,\n        newDragTileLocation.row,\n        newDragTileLocation.col,\n        draggingTile.rowSpan,\n        draggingTile.colSpan\n      ).filter(tiles => tiles.data !== draggingTile.data);\n\n      if (!hoverTiles.length) {\n        return;\n      }\n\n      //console.log('hover tiles:', hoverTiles);\n\n      //create a table with the remaining tiles\n      const otherTiles = tiles.filter(\n        tile =>\n          tile.data !== draggingTile.data &&\n          !hoverTiles.find(t => t.data === tile.data)\n      );\n      const newDraggingTile = {\n        ...draggingTile,\n        ...newDragTileLocation,\n      };\n\n      let checkTable = TableUtils.newTable(\n        tsize.rows + draggingTile.rowSpan - 1,\n        tsize.cols,\n        0\n      );\n      otherTiles.forEach(tile => {\n        checkTable = TableUtils.placeInTable(tile, 1, checkTable);\n      });\n\n      /*\n      console.log('checktable dump:');\n      checkTable.forEach(row => {\n        console.log(row.join(''));\n      });\n      */\n\n      //try to fit the dragging tile in the current location\n      if (!TableUtils.fitsInTable(newDraggingTile, checkTable)) {\n        //console.log('new drag tile does not fit');\n        return;\n      }\n      checkTable = TableUtils.placeInTable(newDraggingTile, 1, checkTable);\n\n      /*\n      console.log('checktable dump with drag tile:');\n      checkTable.forEach(row => {\n        console.log(row.join(''));\n      });\n      */\n\n      const repositionedHoverTiles: TilePositionInfo<any>[] = [];\n      if (\n        hoverTiles.find(tile => {\n          const newPosition = TableUtils.findFirstFittingPosition(\n            tile,\n            checkTable\n          );\n          //console.log('fitting', { tile, newPosition });\n          if (!newPosition) return true;\n          const repositionedTile = { ...tile, ...newPosition };\n          repositionedHoverTiles.push(repositionedTile);\n          checkTable = TableUtils.placeInTable(repositionedTile, 1, checkTable);\n          return false;\n        })\n      ) {\n        //console.log('repositioning failed');\n        return;\n      }\n\n      const reorderedTiles = [\n        ...repositionedHoverTiles,\n        ...otherTiles,\n        newDraggingTile,\n      ].sort((a, b) => a.col + a.row * columns - (b.col + b.row * columns));\n      return {\n        draggingTile: newDraggingTile,\n        tiles: reorderedTiles,\n      };\n    }\n  },\n  onDragEnd: () => undefined,\n};\n\nexport default dragMove;\n", "import { StrategyInterface, TilePositionInfo, DragState } from '../model';\nimport * as TilesTableUtils from '../table-utils/tiles-table';\nimport * as TableUtils from '../table-utils/table';\nimport * as TilesUtils from '../table-utils/tiles';\n\n/**\n * Calculates the new table configuration while the tiles are moving\n * @param offsetX\n * @param offsetY\n * @returns\n */\nconst reorder: StrategyInterface = {\n  onDragMove: ({ offsetX, offsetY, config, state, table, canAcceptDrop }) => {\n    const { elementHeight, elementWidth } = config;\n    const {\n      draggingTile,\n      dragPosition,\n      dropTargetTile,\n      droppable,\n      start,\n      tiles,\n    } = state;\n\n    console.log('DRAG MOVE');\n\n    if (!draggingTile || !dragPosition || !start || !tiles) return;\n\n    const getInsertionPoint = <T>(\n      tiles: TilePositionInfo<T>[],\n      touchPoint: 'left' | 'right',\n      touchedTile: TilePositionInfo<T>\n    ) => {\n      const tilePosition = tiles.findIndex(\n        tile => tile.data === touchedTile?.data\n      );\n      if (touchPoint === 'left') {\n        const leftTile =\n          tilePosition - 1 >= 0 ? tiles[tilePosition - 1] : undefined;\n        if (leftTile === draggingTile) return undefined;\n        return {\n          insertionPoint: {\n            right: touchedTile,\n            left: leftTile?.row === touchedTile.row ? leftTile : undefined,\n          },\n        };\n      } else {\n        const rightTile =\n          tilePosition + 1 < tiles.length ? tiles[tilePosition + 1] : undefined;\n        if (rightTile === draggingTile) return undefined;\n        return {\n          insertionPoint: {\n            left: touchedTile,\n            right: rightTile?.row === touchedTile.row ? rightTile : undefined,\n          },\n        };\n      }\n    };\n\n    const x = start.col * elementWidth + offsetX + dragPosition.x;\n    const y = start.row * elementHeight + offsetY + dragPosition.y;\n\n    //find the position of the tile in the grid\n    const cell = TableUtils.pointToLocation(table, x, y, config);\n    const tsize = TableUtils.tableSize(table);\n\n    //console.log('data:', { x, y, cell, start, draggingTile });\n\n    //try to see if we're touching a hot point\n    //find the touched tile within the move\n\n    const touchedTile = table[cell.row][cell.col];\n    if (!touchedTile || touchedTile.data === draggingTile.data) return;\n\n    //get the touchpoint of the touched tile\n    const touchPoint = TilesUtils.getTileTouchPoint(\n      touchedTile,\n      touchedTile,\n      {\n        x,\n        y,\n      },\n      config\n    );\n    if (!touchPoint) return;\n\n    //console.log('HIT TOUCHPOINT', { table, tiles });\n    console.log('touch point:', touchPoint);\n\n    if (touchPoint === 'center') {\n      if (touchedTile === dropTargetTile)\n        return {\n          dropTargetTile,\n          droppable,\n        };\n      if (canAcceptDrop(draggingTile, touchedTile))\n        return {\n          dropTargetTile: touchedTile,\n          droppable: true,\n        };\n      return;\n    }\n\n    //apply calculation only if touching left or right areas\n    if (touchPoint !== 'right' && touchPoint !== 'left') return;\n\n    //if the touch point is in the bottom of the cell, pick the adjacent cell\n    if (touchedTile.row !== cell.row) {\n      const adjacentCol =\n        touchPoint === 'left' ? cell.col - 1 : cell.col + touchedTile.colSpan;\n      if (adjacentCol < 0 || adjacentCol > tsize.cols) return;\n      const adjacentTile = table[cell.row][adjacentCol];\n      if (!adjacentTile) return;\n\n      const shiftedInsertionPoint = getInsertionPoint(\n        tiles,\n        touchPoint === 'left' ? 'right' : 'left',\n        adjacentTile\n      )?.insertionPoint;\n      console.log('SHIFTING: ', { shiftedInsertionPoint, touchPoint });\n\n      return {\n        insertionPoint: {\n          left:\n            touchPoint === 'left' ? shiftedInsertionPoint?.right : undefined,\n          right:\n            touchPoint === 'right' ? shiftedInsertionPoint?.left : undefined,\n        },\n      };\n    }\n\n    return getInsertionPoint(tiles, touchPoint, touchedTile);\n  },\n\n  onDragEnd: ({ state }) => {\n    const { insertionPoint, draggingTile, tiles } = state;\n    console.log('Drag end start:', {\n      insertionPoint,\n      draggingTile,\n      tiles,\n    });\n\n    if (!tiles || !draggingTile || !insertionPoint) return;\n    const newTiles = tiles.filter(tile => tile.data !== draggingTile.data);\n    const { left, right } = insertionPoint;\n\n    const insertionLeftIdx = left\n      ? newTiles.findIndex(tile => tile.data === left.data) + 1\n      : -1;\n    const insertionRightIdx = right\n      ? newTiles.findIndex(tile => tile.data === right.data)\n      : -1;\n\n    const insertionIndex =\n      insertionLeftIdx > 0 ? insertionLeftIdx : insertionRightIdx;\n    if (insertionIndex < 0) newTiles.push(draggingTile);\n    else {\n      newTiles.splice(insertionIndex, 0, draggingTile);\n    }\n    console.log('Drag end:', {\n      insertionPoint,\n      insertionLeftIdx,\n      insertionRightIdx,\n      draggingTile,\n      tiles,\n      newTiles,\n    });\n\n    return { tiles: newTiles };\n  },\n};\n\nexport default reorder;\n", "import { useMemo, useState } from 'react';\nimport { useDrag } from '@use-gesture/react';\nimport {\n  GridConfig,\n  TileInfo,\n  TilePositionInfo,\n  RenderTileProps,\n} from './model';\nimport * as TilesTableUtils from './table-utils/tiles-table';\nimport moveStrategy from './strategies/move';\nimport reorderStrategy from './strategies/reorder';\nimport { DragState } from './model';\nimport { reduceRight } from 'lodash';\n\ninterface TileTableDNDProps<T> {\n  strategy: 'reorder' | 'move';\n  enabled: boolean;\n  elementWidth: number;\n  elementHeight: number;\n  activeBorderSize: number;\n  columns: number;\n  currentTiles: TileInfo<T>[];\n  canAcceptDrop: (\n    draggingTile: TileInfo<T>,\n    targetTile: TileInfo<T>\n  ) => boolean;\n  didDrop: (draggingTile: TileInfo<T>, targetTile: TileInfo<T>) => void;\n  changeTilesOrder: (tiles: TileInfo<T>[]) => void;\n}\n\nexport const useTileTable = <T>({\n  enabled,\n  strategy,\n  elementWidth,\n  elementHeight,\n  activeBorderSize,\n  columns,\n  currentTiles,\n  canAcceptDrop,\n  changeTilesOrder,\n  didDrop,\n}: TileTableDNDProps<T>) => {\n  const strategyImpl = strategy === 'reorder' ? reorderStrategy : moveStrategy;\n  const [state, setState] = useState<DragState<T>>({\n    dragging: false,\n    droppable: false,\n  });\n\n  //the tile layout table\n  const { tiles: draggingTiles, dragging, insertionPoint } = state;\n\n  const effectiveTiles = (enabled && dragging && draggingTiles) || currentTiles;\n\n  const table = useMemo(\n    () => TilesTableUtils.tilesListToTable(effectiveTiles, columns),\n    [effectiveTiles, columns]\n  );\n\n  const positionedTiles = useMemo(\n    () => TilesTableUtils.tableToTilesList(table),\n    [table]\n  );\n\n  const config: GridConfig = {\n    elementHeight,\n    elementWidth,\n    activeBorderSize,\n    columns,\n  };\n\n  const bind = useDrag<React.PointerEvent<HTMLDivElement>>(\n    ({ args: [data], dragging, tap, xy, movement, event }) => {\n      if (dragging) {\n        if (!tap) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n\n        //if this is the first event, initialize the dragging\n        if (!state.dragging) {\n          const rect = event.currentTarget.getBoundingClientRect();\n\n          //identify the hit tile\n          const draggingTile = positionedTiles.find(tile => tile.data === data);\n          if (!draggingTile) return;\n\n          setState({\n            dragging: true,\n            droppable: false,\n            tiles: positionedTiles,\n            draggingTile,\n            dragPosition: { x: xy[0] - rect.x, y: xy[1] - rect.y },\n            offset: { x: movement[0], y: movement[1] },\n            start: { col: draggingTile.col, row: draggingTile.row },\n          });\n        } else {\n          const result =\n            strategyImpl.onDragMove({\n              offsetX: movement[0],\n              offsetY: movement[1],\n              canAcceptDrop,\n              config,\n              state,\n              table,\n            }) || {};\n          setState(state => ({\n            ...state,\n            offset: { x: movement[0], y: movement[1] },\n            dropTargetTile: undefined,\n            droppable: false,\n            insertionPoint: undefined,\n            ...result,\n          }));\n        }\n      } else {\n        if (state.draggingTile && state.dropTargetTile && state.droppable) {\n          didDrop(state.draggingTile, state.dropTargetTile);\n        } else {\n          const result =\n            strategyImpl.onDragEnd({\n              offsetX: movement[0],\n              offsetY: movement[1],\n              canAcceptDrop,\n              config,\n              state,\n              table,\n            }) || {};\n          const finalState = { ...state, ...result };\n          finalState.tiles && changeTilesOrder(finalState.tiles);\n        }\n\n        setState({\n          dragging: false,\n          droppable: false,\n        });\n      }\n    },\n    { filterTaps: true, enabled }\n  );\n\n  const renderTileProps = useMemo<\n    (RenderTileProps<T> & {\n      x: number;\n      y: number;\n      key: number;\n    })[]\n  >(() => {\n    if (!enabled) {\n      return positionedTiles\n        .map(tile => ({\n          ...tile,\n          tileWidth: elementWidth,\n          tileHeight: elementHeight,\n          isDragging: false,\n          isDropTarget: false,\n          isDroppable: false,\n          isDroppableAtInsertPosition: false,\n          insertAtLeft: false,\n          insertAtRight: false,\n          x: tile.col * elementWidth,\n          y: tile.row * elementHeight,\n        }))\n        .sort((a, b) => a.key - b.key);\n    } else\n      return positionedTiles\n        .map(tile => {\n          return {\n            ...tile,\n            tileWidth: elementWidth,\n            tileHeight: elementHeight,\n            isDragging: tile.data === state.draggingTile?.data,\n            isDropTarget: tile.data === state.dropTargetTile?.data,\n            insertAtLeft: tile.data === state.insertionPoint?.left?.data,\n            insertAtRight: tile.data === state.insertionPoint?.right?.data,\n            isDroppable:\n              tile.data === state.draggingTile?.data && state.droppable,\n            isDroppableAtInsertPosition: !!(\n              tile.data === state.draggingTile?.data && state.insertionPoint\n            ),\n            x:\n              tile.data === state.draggingTile?.data\n                ? (state.start?.col || 0) * elementWidth +\n                  (state.offset?.x || 0)\n                : tile.col * elementWidth,\n            y:\n              tile.data === state.draggingTile?.data\n                ? (state.start?.row || 0) * elementHeight +\n                  (state.offset?.y || 0)\n                : tile.row * elementHeight,\n          };\n        })\n        .sort((a, b) => a.key - b.key);\n  }, [state, positionedTiles, elementHeight, elementWidth, enabled]);\n\n  const { draggingTile } = state;\n  const insertIndicatorPosition = useMemo(() => {\n    const { left, right } = insertionPoint || {};\n    if (left)\n      return {\n        x: (left.col + left.colSpan) * elementWidth,\n        y: left.row * elementHeight,\n      };\n    if (right)\n      return {\n        x: right.col * elementWidth,\n        y: right.row * elementHeight,\n      };\n    if (draggingTile)\n      return {\n        x: draggingTile.col * elementWidth,\n        y: draggingTile.row * elementHeight,\n      };\n  }, [insertionPoint, elementHeight, elementWidth, draggingTile]);\n\n  return {\n    table,\n    tableHeight: table.length * elementHeight,\n    tiles: positionedTiles,\n    insertIndicatorPosition,\n    bind,\n    renderTileProps,\n  };\n};\n", "import { useMemo } from 'react';\nvar createMemo = function (fn) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return useMemo(function () { return fn.apply(void 0, args); }, args);\n    };\n};\nexport default createMemo;\n", "import { createContext, createElement, useContext, useReducer } from 'react';\nvar createReducerContext = function (reducer, defaultInitialState) {\n    var context = createContext(undefined);\n    var providerFactory = function (props, children) { return createElement(context.Provider, props, children); };\n    var ReducerProvider = function (_a) {\n        var children = _a.children, initialState = _a.initialState;\n        var state = useReducer(reducer, initialState !== undefined ? initialState : defaultInitialState);\n        return providerFactory({ value: state }, children);\n    };\n    var useReducerContext = function () {\n        var state = useContext(context);\n        if (state == null) {\n            throw new Error(\"useReducerContext must be used inside a ReducerProvider.\");\n        }\n        return state;\n    };\n    return [useReducerContext, ReducerProvider, context];\n};\nexport default createReducerContext;\n", "import { useCallback, useRef, useState } from 'react';\nimport useUpdateEffect from '../useUpdateEffect';\nfunction composeMiddleware(chain) {\n    return function (context, dispatch) {\n        return chain.reduceRight(function (res, middleware) {\n            return middleware(context)(res);\n        }, dispatch);\n    };\n}\nvar createReducer = function () {\n    var middlewares = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        middlewares[_i] = arguments[_i];\n    }\n    var composedMiddleware = composeMiddleware(middlewares);\n    return function (reducer, initialState, initializer) {\n        if (initializer === void 0) { initializer = function (value) { return value; }; }\n        var ref = useRef(initializer(initialState));\n        var _a = useState(ref.current), setState = _a[1];\n        var dispatch = useCallback(function (action) {\n            ref.current = reducer(ref.current, action);\n            setState(ref.current);\n            return action;\n        }, [reducer]);\n        var dispatchRef = useRef(composedMiddleware({\n            getState: function () { return ref.current; },\n            dispatch: function () {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i] = arguments[_i];\n                }\n                return dispatchRef.current.apply(dispatchRef, args);\n            },\n        }, dispatch));\n        useUpdateEffect(function () {\n            dispatchRef.current = composedMiddleware({\n                getState: function () { return ref.current; },\n                dispatch: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    return dispatchRef.current.apply(dispatchRef, args);\n                },\n            }, dispatch);\n        }, [dispatch]);\n        return [ref.current, dispatchRef.current];\n    };\n};\nexport default createReducer;\n", "import { useEffect } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nvar useUpdateEffect = function (effect, deps) {\n    var isFirstMount = useFirstMountState();\n    useEffect(function () {\n        if (!isFirstMount) {\n            return effect();\n        }\n    }, deps);\n};\nexport default useUpdateEffect;\n", "import { useRef } from 'react';\nexport function useFirstMountState() {\n    var isFirst = useRef(true);\n    if (isFirst.current) {\n        isFirst.current = false;\n        return true;\n    }\n    return isFirst.current;\n}\n", "import { createContext, createElement, useContext, useState } from 'react';\nvar createStateContext = function (defaultInitialValue) {\n    var context = createContext(undefined);\n    var providerFactory = function (props, children) { return createElement(context.Provider, props, children); };\n    var StateProvider = function (_a) {\n        var children = _a.children, initialValue = _a.initialValue;\n        var state = useState(initialValue !== undefined ? initialValue : defaultInitialValue);\n        return providerFactory({ value: state }, children);\n    };\n    var useStateContext = function () {\n        var state = useContext(context);\n        if (state == null) {\n            throw new Error(\"useStateContext must be used inside a StateProvider.\");\n        }\n        return state;\n    };\n    return [useStateContext, StateProvider, context];\n};\nexport default createStateContext;\n", "import { useEffect } from 'react';\nimport useAsyncFn from './useAsyncFn';\nexport default function useAsync(fn, deps) {\n    if (deps === void 0) { deps = []; }\n    var _a = useAsyncFn(fn, deps, {\n        loading: true,\n    }), state = _a[0], callback = _a[1];\n    useEffect(function () {\n        callback();\n    }, [callback]);\n    return state;\n}\n", "import { __assign } from \"tslib\";\nimport { useCallback, useRef, useState } from 'react';\nimport useMountedState from './useMountedState';\nexport default function useAsyncFn(fn, deps, initialState) {\n    if (deps === void 0) { deps = []; }\n    if (initialState === void 0) { initialState = { loading: false }; }\n    var lastCallId = useRef(0);\n    var isMounted = useMountedState();\n    var _a = useState(initialState), state = _a[0], set = _a[1];\n    var callback = useCallback(function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var callId = ++lastCallId.current;\n        if (!state.loading) {\n            set(function (prevState) { return (__assign(__assign({}, prevState), { loading: true })); });\n        }\n        return fn.apply(void 0, args).then(function (value) {\n            isMounted() && callId === lastCallId.current && set({ value: value, loading: false });\n            return value;\n        }, function (error) {\n            isMounted() && callId === lastCallId.current && set({ error: error, loading: false });\n            return error;\n        });\n    }, deps);\n    return [state, callback];\n}\n", "import { useCallback, useEffect, useRef } from 'react';\nexport default function useMountedState() {\n    var mountedRef = useRef(false);\n    var get = useCallback(function () { return mountedRef.current; }, []);\n    useEffect(function () {\n        mountedRef.current = true;\n        return function () {\n            mountedRef.current = false;\n        };\n    }, []);\n    return get;\n}\n", "import { __assign, __spreadArrays } from \"tslib\";\nimport { useCallback, useState } from 'react';\nimport useAsync from './useAsync';\nvar useAsyncRetry = function (fn, deps) {\n    if (deps === void 0) { deps = []; }\n    var _a = useState(0), attempt = _a[0], setAttempt = _a[1];\n    var state = useAsync(fn, __spreadArrays(deps, [attempt]));\n    var stateLoading = state.loading;\n    var retry = useCallback(function () {\n        if (stateLoading) {\n            if (process.env.NODE_ENV === 'development') {\n                console.log('You are calling useAsyncRetry hook retry() method while loading in progress, this is a no-op.');\n            }\n            return;\n        }\n        setAttempt(function (currentAttempt) { return currentAttempt + 1; });\n    }, __spreadArrays(deps, [stateLoading]));\n    return __assign(__assign({}, state), { retry: retry });\n};\nexport default useAsyncRetry;\n", "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport useSetState from '../useSetState';\nimport parseTimeRanges from '../misc/parseTimeRanges';\nexport default function createHTMLMediaHook(tag) {\n    return function (elOrProps) {\n        var element;\n        var props;\n        if (React.isValidElement(elOrProps)) {\n            element = elOrProps;\n            props = element.props;\n        }\n        else {\n            props = elOrProps;\n        }\n        var _a = useSetState({\n            buffered: [],\n            time: 0,\n            duration: 0,\n            paused: true,\n            muted: false,\n            volume: 1,\n            playing: false,\n        }), state = _a[0], setState = _a[1];\n        var ref = useRef(null);\n        var wrapEvent = function (userEvent, proxyEvent) {\n            return function (event) {\n                try {\n                    proxyEvent && proxyEvent(event);\n                }\n                finally {\n                    userEvent && userEvent(event);\n                }\n            };\n        };\n        var onPlay = function () { return setState({ paused: false }); };\n        var onPlaying = function () { return setState({ playing: true }); };\n        var onWaiting = function () { return setState({ playing: false }); };\n        var onPause = function () { return setState({ paused: true, playing: false }); };\n        var onVolumeChange = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            setState({\n                muted: el.muted,\n                volume: el.volume,\n            });\n        };\n        var onDurationChange = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            var duration = el.duration, buffered = el.buffered;\n            setState({\n                duration: duration,\n                buffered: parseTimeRanges(buffered),\n            });\n        };\n        var onTimeUpdate = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            setState({ time: el.currentTime });\n        };\n        var onProgress = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            setState({ buffered: parseTimeRanges(el.buffered) });\n        };\n        if (element) {\n            element = React.cloneElement(element, __assign(__assign({ controls: false }, props), { ref: ref, onPlay: wrapEvent(props.onPlay, onPlay), onPlaying: wrapEvent(props.onPlaying, onPlaying), onWaiting: wrapEvent(props.onWaiting, onWaiting), onPause: wrapEvent(props.onPause, onPause), onVolumeChange: wrapEvent(props.onVolumeChange, onVolumeChange), onDurationChange: wrapEvent(props.onDurationChange, onDurationChange), onTimeUpdate: wrapEvent(props.onTimeUpdate, onTimeUpdate), onProgress: wrapEvent(props.onProgress, onProgress) }));\n        }\n        else {\n            element = React.createElement(tag, __assign(__assign({ controls: false }, props), { ref: ref, onPlay: wrapEvent(props.onPlay, onPlay), onPlaying: wrapEvent(props.onPlaying, onPlaying), onWaiting: wrapEvent(props.onWaiting, onWaiting), onPause: wrapEvent(props.onPause, onPause), onVolumeChange: wrapEvent(props.onVolumeChange, onVolumeChange), onDurationChange: wrapEvent(props.onDurationChange, onDurationChange), onTimeUpdate: wrapEvent(props.onTimeUpdate, onTimeUpdate), onProgress: wrapEvent(props.onProgress, onProgress) })); // TODO: fix this typing.\n        }\n        // Some browsers return `Promise` on `.play()` and may throw errors\n        // if one tries to execute another `.play()` or `.pause()` while that\n        // promise is resolving. So we prevent that with this lock.\n        // See: https://bugs.chromium.org/p/chromium/issues/detail?id=593273\n        var lockPlay = false;\n        var controls = {\n            play: function () {\n                var el = ref.current;\n                if (!el) {\n                    return undefined;\n                }\n                if (!lockPlay) {\n                    var promise = el.play();\n                    var isPromise = typeof promise === 'object';\n                    if (isPromise) {\n                        lockPlay = true;\n                        var resetLock = function () {\n                            lockPlay = false;\n                        };\n                        promise.then(resetLock, resetLock);\n                    }\n                    return promise;\n                }\n                return undefined;\n            },\n            pause: function () {\n                var el = ref.current;\n                if (el && !lockPlay) {\n                    return el.pause();\n                }\n            },\n            seek: function (time) {\n                var el = ref.current;\n                if (!el || state.duration === undefined) {\n                    return;\n                }\n                time = Math.min(state.duration, Math.max(0, time));\n                el.currentTime = time;\n            },\n            volume: function (volume) {\n                var el = ref.current;\n                if (!el) {\n                    return;\n                }\n                volume = Math.min(1, Math.max(0, volume));\n                el.volume = volume;\n                setState({ volume: volume });\n            },\n            mute: function () {\n                var el = ref.current;\n                if (!el) {\n                    return;\n                }\n                el.muted = true;\n            },\n            unmute: function () {\n                var el = ref.current;\n                if (!el) {\n                    return;\n                }\n                el.muted = false;\n            },\n        };\n        useEffect(function () {\n            var el = ref.current;\n            if (!el) {\n                if (process.env.NODE_ENV !== 'production') {\n                    if (tag === 'audio') {\n                        console.error('useAudio() ref to <audio> element is empty at mount. ' +\n                            'It seem you have not rendered the audio element, which it ' +\n                            'returns as the first argument const [audio] = useAudio(...).');\n                    }\n                    else if (tag === 'video') {\n                        console.error('useVideo() ref to <video> element is empty at mount. ' +\n                            'It seem you have not rendered the video element, which it ' +\n                            'returns as the first argument const [video] = useVideo(...).');\n                    }\n                }\n                return;\n            }\n            setState({\n                volume: el.volume,\n                muted: el.muted,\n                paused: el.paused,\n            });\n            // Start media, if autoPlay requested.\n            if (props.autoPlay && el.paused) {\n                controls.play();\n            }\n        }, [props.src]);\n        return [element, state, controls, ref];\n    };\n}\n", "import { useCallback, useState } from 'react';\nvar useSetState = function (initialState) {\n    if (initialState === void 0) { initialState = {}; }\n    var _a = useState(initialState), state = _a[0], set = _a[1];\n    var setState = useCallback(function (patch) {\n        set(function (prevState) {\n            return Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch);\n        });\n    }, []);\n    return [state, setState];\n};\nexport default useSetState;\n", "export default function parseTimeRanges(ranges) {\n    var result = [];\n    for (var i = 0; i < ranges.length; i++) {\n        result.push({\n            start: ranges.start(i),\n            end: ranges.end(i),\n        });\n    }\n    return result;\n}\n", "import createHTMLMediaHook from './factory/createHTMLMediaHook';\nvar useAudio = createHTMLMediaHook('audio');\nexport default useAudio;\n", "import { useEffect, useState } from 'react';\nimport { isNavigator, off, on } from './misc/util';\nimport isDeepEqual from './misc/isDeepEqual';\nvar nav = isNavigator ? navigator : undefined;\nvar isBatteryApiSupported = nav && typeof nav.getBattery === 'function';\nfunction useBatteryMock() {\n    return { isSupported: false };\n}\nfunction useBattery() {\n    var _a = useState({ isSupported: true, fetched: false }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var isMounted = true;\n        var battery = null;\n        var handleChange = function () {\n            if (!isMounted || !battery) {\n                return;\n            }\n            var newState = {\n                isSupported: true,\n                fetched: true,\n                level: battery.level,\n                charging: battery.charging,\n                dischargingTime: battery.dischargingTime,\n                chargingTime: battery.chargingTime,\n            };\n            !isDeepEqual(state, newState) && setState(newState);\n        };\n        nav.getBattery().then(function (bat) {\n            if (!isMounted) {\n                return;\n            }\n            battery = bat;\n            on(battery, 'chargingchange', handleChange);\n            on(battery, 'chargingtimechange', handleChange);\n            on(battery, 'dischargingtimechange', handleChange);\n            on(battery, 'levelchange', handleChange);\n            handleChange();\n        });\n        return function () {\n            isMounted = false;\n            if (battery) {\n                off(battery, 'chargingchange', handleChange);\n                off(battery, 'chargingtimechange', handleChange);\n                off(battery, 'dischargingtimechange', handleChange);\n                off(battery, 'levelchange', handleChange);\n            }\n        };\n    }, []);\n    return state;\n}\nexport default isBatteryApiSupported ? useBattery : useBatteryMock;\n", "export var noop = function () { };\nexport function on(obj) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (obj && obj.addEventListener) {\n        obj.addEventListener.apply(obj, args);\n    }\n}\nexport function off(obj) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (obj && obj.removeEventListener) {\n        obj.removeEventListener.apply(obj, args);\n    }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n", "import isDeepEqualReact from 'fast-deep-equal/react';\nexport default isDeepEqualReact;\n", "import { useCallback, useEffect } from 'react';\nimport { off, on } from './misc/util';\nvar useBeforeUnload = function (enabled, message) {\n    if (enabled === void 0) { enabled = true; }\n    var handler = useCallback(function (event) {\n        var finalEnabled = typeof enabled === 'function' ? enabled() : true;\n        if (!finalEnabled) {\n            return;\n        }\n        event.preventDefault();\n        if (message) {\n            event.returnValue = message;\n        }\n        return message;\n    }, [enabled, message]);\n    useEffect(function () {\n        if (!enabled) {\n            return;\n        }\n        on(window, 'beforeunload', handler);\n        return function () { return off(window, 'beforeunload', handler); };\n    }, [enabled, handler]);\n};\nexport default useBeforeUnload;\n", "import { useReducer } from 'react';\nvar toggleReducer = function (state, nextValue) {\n    return typeof nextValue === 'boolean' ? nextValue : !state;\n};\nvar useToggle = function (initialValue) {\n    return useReducer(toggleReducer, initialValue);\n};\nexport default useToggle;\n", "import { useEffect, useRef } from 'react';\nimport { off, on } from './misc/util';\nvar defaultEvents = ['mousedown', 'touchstart'];\nvar useClickAway = function (ref, onClickAway, events) {\n    if (events === void 0) { events = defaultEvents; }\n    var savedCallback = useRef(onClickAway);\n    useEffect(function () {\n        savedCallback.current = onClickAway;\n    }, [onClickAway]);\n    useEffect(function () {\n        var handler = function (event) {\n            var el = ref.current;\n            el && !el.contains(event.target) && savedCallback.current(event);\n        };\n        for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n            var eventName = events_1[_i];\n            on(document, eventName, handler);\n        }\n        return function () {\n            for (var _i = 0, events_2 = events; _i < events_2.length; _i++) {\n                var eventName = events_2[_i];\n                off(document, eventName, handler);\n            }\n        };\n    }, [events, ref]);\n};\nexport default useClickAway;\n", "import { useCallback, useState } from 'react';\nimport Cookies from 'js-cookie';\nvar useCookie = function (cookieName) {\n    var _a = useState(function () { return Cookies.get(cookieName) || null; }), value = _a[0], setValue = _a[1];\n    var updateCookie = useCallback(function (newValue, options) {\n        Cookies.set(cookieName, newValue, options);\n        setValue(newValue);\n    }, [cookieName]);\n    var deleteCookie = useCallback(function () {\n        Cookies.remove(cookieName);\n        setValue(null);\n    }, [cookieName]);\n    return [value, updateCookie, deleteCookie];\n};\nexport default useCookie;\n", "import writeText from 'copy-to-clipboard';\nimport { useCallback } from 'react';\nimport useMountedState from './useMountedState';\nimport useSetState from './useSetState';\nvar useCopyToClipboard = function () {\n    var isMounted = useMountedState();\n    var _a = useSetState({\n        value: undefined,\n        error: undefined,\n        noUserInteraction: true,\n    }), state = _a[0], setState = _a[1];\n    var copyToClipboard = useCallback(function (value) {\n        if (!isMounted()) {\n            return;\n        }\n        var noUserInteraction;\n        var normalizedValue;\n        try {\n            // only strings and numbers casted to strings can be copied to clipboard\n            if (typeof value !== 'string' && typeof value !== 'number') {\n                var error = new Error(\"Cannot copy typeof \" + typeof value + \" to clipboard, must be a string\");\n                if (process.env.NODE_ENV === 'development')\n                    console.error(error);\n                setState({\n                    value: value,\n                    error: error,\n                    noUserInteraction: true,\n                });\n                return;\n            }\n            // empty strings are also considered invalid\n            else if (value === '') {\n                var error = new Error(\"Cannot copy empty string to clipboard.\");\n                if (process.env.NODE_ENV === 'development')\n                    console.error(error);\n                setState({\n                    value: value,\n                    error: error,\n                    noUserInteraction: true,\n                });\n                return;\n            }\n            normalizedValue = value.toString();\n            noUserInteraction = writeText(normalizedValue);\n            setState({\n                value: normalizedValue,\n                error: undefined,\n                noUserInteraction: noUserInteraction,\n            });\n        }\n        catch (error) {\n            setState({\n                value: normalizedValue,\n                error: error,\n                noUserInteraction: noUserInteraction,\n            });\n        }\n    }, []);\n    return [state, copyToClipboard];\n};\nexport default useCopyToClipboard;\n", "import { useMemo } from 'react';\nimport useGetSet from './useGetSet';\nimport { resolveHookState } from './misc/hookState';\nexport default function useCounter(initialValue, max, min) {\n    if (initialValue === void 0) { initialValue = 0; }\n    if (max === void 0) { max = null; }\n    if (min === void 0) { min = null; }\n    var init = resolveHookState(initialValue);\n    typeof init !== 'number' &&\n        console.error('initialValue has to be a number, got ' + typeof initialValue);\n    if (typeof min === 'number') {\n        init = Math.max(init, min);\n    }\n    else if (min !== null) {\n        console.error('min has to be a number, got ' + typeof min);\n    }\n    if (typeof max === 'number') {\n        init = Math.min(init, max);\n    }\n    else if (max !== null) {\n        console.error('max has to be a number, got ' + typeof max);\n    }\n    var _a = useGetSet(init), get = _a[0], setInternal = _a[1];\n    return [\n        get(),\n        useMemo(function () {\n            var set = function (newState) {\n                var prevState = get();\n                var rState = resolveHookState(newState, prevState);\n                if (prevState !== rState) {\n                    if (typeof min === 'number') {\n                        rState = Math.max(rState, min);\n                    }\n                    if (typeof max === 'number') {\n                        rState = Math.min(rState, max);\n                    }\n                    prevState !== rState && setInternal(rState);\n                }\n            };\n            return {\n                get: get,\n                set: set,\n                inc: function (delta) {\n                    if (delta === void 0) { delta = 1; }\n                    var rDelta = resolveHookState(delta, get());\n                    if (typeof rDelta !== 'number') {\n                        console.error('delta has to be a number or function returning a number, got ' + typeof rDelta);\n                    }\n                    set(function (num) { return num + rDelta; });\n                },\n                dec: function (delta) {\n                    if (delta === void 0) { delta = 1; }\n                    var rDelta = resolveHookState(delta, get());\n                    if (typeof rDelta !== 'number') {\n                        console.error('delta has to be a number or function returning a number, got ' + typeof rDelta);\n                    }\n                    set(function (num) { return num - rDelta; });\n                },\n                reset: function (value) {\n                    if (value === void 0) { value = init; }\n                    var rValue = resolveHookState(value, get());\n                    if (typeof rValue !== 'number') {\n                        console.error('value has to be a number or function returning a number, got ' + typeof rValue);\n                    }\n                    // eslint-disable-next-line react-hooks/exhaustive-deps\n                    init = rValue;\n                    set(rValue);\n                },\n            };\n        }, [init, min, max]),\n    ];\n}\n", "import { useMemo, useRef } from 'react';\nimport useUpdate from './useUpdate';\nimport { resolveHookState } from './misc/hookState';\nexport default function useGetSet(initialState) {\n    var state = useRef(resolveHookState(initialState));\n    var update = useUpdate();\n    return useMemo(function () { return [\n        function () { return state.current; },\n        function (newState) {\n            state.current = resolveHookState(newState, state.current);\n            update();\n        },\n    ]; }, []);\n}\n", "import { useReducer } from 'react';\nvar updateReducer = function (num) { return (num + 1) % 1000000; };\nexport default function useUpdate() {\n    var _a = useReducer(updateReducer, 0), update = _a[1];\n    return update;\n}\n", "import { create } from 'nano-css';\nimport { addon as addonCSSOM } from 'nano-css/addon/cssom';\nimport { addon as addonVCSSOM } from 'nano-css/addon/vcssom';\nimport { cssToTree } from 'nano-css/addon/vcssom/cssToTree';\nimport { useMemo } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nvar nano = create();\naddonCSSOM(nano);\naddonVCSSOM(nano);\nvar counter = 0;\nvar useCss = function (css) {\n    var className = useMemo(function () { return 'react-use-css-' + (counter++).toString(36); }, []);\n    var sheet = useMemo(function () { return new nano.VSheet(); }, []);\n    useIsomorphicLayoutEffect(function () {\n        var tree = {};\n        cssToTree(tree, css, '.' + className, '');\n        sheet.diff(tree);\n        return function () {\n            sheet.diff({});\n        };\n    });\n    return className;\n};\nexport default useCss;\n", "import { useEffect, useLayoutEffect } from 'react';\nimport { isBrowser } from './misc/util';\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n", "import { useEffect, useRef } from 'react';\nvar isPrimitive = function (val) { return val !== Object(val); };\nvar useCustomCompareEffect = function (effect, deps, depsEqual) {\n    if (process.env.NODE_ENV !== 'production') {\n        if (!(deps instanceof Array) || !deps.length) {\n            console.warn('`useCustomCompareEffect` should not be used with no dependencies. Use React.useEffect instead.');\n        }\n        if (deps.every(isPrimitive)) {\n            console.warn('`useCustomCompareEffect` should not be used with dependencies that are all primitive values. Use React.useEffect instead.');\n        }\n        if (typeof depsEqual !== 'function') {\n            console.warn('`useCustomCompareEffect` should be used with depsEqual callback for comparing deps list');\n        }\n    }\n    var ref = useRef(undefined);\n    if (!ref.current || !depsEqual(deps, ref.current)) {\n        ref.current = deps;\n    }\n    useEffect(effect, ref.current);\n};\nexport default useCustomCompareEffect;\n", "import { useEffect } from 'react';\nimport useTimeoutFn from './useTimeoutFn';\nexport default function useDebounce(fn, ms, deps) {\n    if (ms === void 0) { ms = 0; }\n    if (deps === void 0) { deps = []; }\n    var _a = useTimeoutFn(fn, ms), isReady = _a[0], cancel = _a[1], reset = _a[2];\n    useEffect(reset, deps);\n    return [isReady, cancel];\n}\n", "import { useCallback, useEffect, useRef } from 'react';\nexport default function useTimeoutFn(fn, ms) {\n    if (ms === void 0) { ms = 0; }\n    var ready = useRef(false);\n    var timeout = useRef();\n    var callback = useRef(fn);\n    var isReady = useCallback(function () { return ready.current; }, []);\n    var set = useCallback(function () {\n        ready.current = false;\n        timeout.current && clearTimeout(timeout.current);\n        timeout.current = setTimeout(function () {\n            ready.current = true;\n            callback.current();\n        }, ms);\n    }, [ms]);\n    var clear = useCallback(function () {\n        ready.current = null;\n        timeout.current && clearTimeout(timeout.current);\n    }, []);\n    // update ref when function changes\n    useEffect(function () {\n        callback.current = fn;\n    }, [fn]);\n    // set on mount, clear on unmount\n    useEffect(function () {\n        set();\n        return clear;\n    }, [ms]);\n    return [isReady, clear, set];\n}\n", "import { useState } from 'react';\nvar useDefault = function (defaultValue, initialValue) {\n    var _a = useState(initialValue), value = _a[0], setValue = _a[1];\n    if (value === undefined || value === null) {\n        return [defaultValue, setValue];\n    }\n    return [value, setValue];\n};\nexport default useDefault;\n", "import { __spreadArrays } from \"tslib\";\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { noop, off, on } from './misc/util';\nvar createProcess = function (options) { return function (dataTransfer, event) {\n    var uri = dataTransfer.getData('text/uri-list');\n    if (uri) {\n        (options.onUri || noop)(uri, event);\n        return;\n    }\n    if (dataTransfer.files && dataTransfer.files.length) {\n        (options.onFiles || noop)(Array.from(dataTransfer.files), event);\n        return;\n    }\n    if (event.clipboardData) {\n        var text = event.clipboardData.getData('text');\n        (options.onText || noop)(text, event);\n        return;\n    }\n}; };\nvar useDrop = function (options, args) {\n    if (options === void 0) { options = {}; }\n    if (args === void 0) { args = []; }\n    var onFiles = options.onFiles, onText = options.onText, onUri = options.onUri;\n    var _a = useState(false), over = _a[0], setOverRaw = _a[1];\n    var setOver = useCallback(setOverRaw, []);\n    var process = useMemo(function () { return createProcess(options); }, [onFiles, onText, onUri]);\n    useEffect(function () {\n        var onDragOver = function (event) {\n            event.preventDefault();\n            setOver(true);\n        };\n        var onDragEnter = function (event) {\n            event.preventDefault();\n            setOver(true);\n        };\n        var onDragLeave = function () {\n            setOver(false);\n        };\n        var onDragExit = function () {\n            setOver(false);\n        };\n        var onDrop = function (event) {\n            event.preventDefault();\n            setOver(false);\n            process(event.dataTransfer, event);\n        };\n        var onPaste = function (event) {\n            process(event.clipboardData, event);\n        };\n        on(document, 'dragover', onDragOver);\n        on(document, 'dragenter', onDragEnter);\n        on(document, 'dragleave', onDragLeave);\n        on(document, 'dragexit', onDragExit);\n        on(document, 'drop', onDrop);\n        if (onText) {\n            on(document, 'paste', onPaste);\n        }\n        return function () {\n            off(document, 'dragover', onDragOver);\n            off(document, 'dragenter', onDragEnter);\n            off(document, 'dragleave', onDragLeave);\n            off(document, 'dragexit', onDragExit);\n            off(document, 'drop', onDrop);\n            off(document, 'paste', onPaste);\n        };\n    }, __spreadArrays([process], args));\n    return { over: over };\n};\nexport default useDrop;\n", "import { useMemo, useState } from 'react';\nimport useMountedState from './useMountedState';\nimport { noop } from './misc/util';\n/*\nconst defaultState: DropAreaState = {\n  over: false,\n};\n*/\nvar createProcess = function (options, mounted) { return function (dataTransfer, event) {\n    var uri = dataTransfer.getData('text/uri-list');\n    if (uri) {\n        (options.onUri || noop)(uri, event);\n        return;\n    }\n    if (dataTransfer.files && dataTransfer.files.length) {\n        (options.onFiles || noop)(Array.from(dataTransfer.files), event);\n        return;\n    }\n    if (dataTransfer.items && dataTransfer.items.length) {\n        dataTransfer.items[0].getAsString(function (text) {\n            if (mounted) {\n                (options.onText || noop)(text, event);\n            }\n        });\n    }\n}; };\nvar createBond = function (process, setOver) { return ({\n    onDragOver: function (event) {\n        event.preventDefault();\n    },\n    onDragEnter: function (event) {\n        event.preventDefault();\n        setOver(true);\n    },\n    onDragLeave: function () {\n        setOver(false);\n    },\n    onDrop: function (event) {\n        event.preventDefault();\n        event.persist();\n        setOver(false);\n        process(event.dataTransfer, event);\n    },\n    onPaste: function (event) {\n        event.persist();\n        process(event.clipboardData, event);\n    },\n}); };\nvar useDropArea = function (options) {\n    if (options === void 0) { options = {}; }\n    var onFiles = options.onFiles, onText = options.onText, onUri = options.onUri;\n    var isMounted = useMountedState();\n    var _a = useState(false), over = _a[0], setOver = _a[1];\n    var process = useMemo(function () { return createProcess(options, isMounted()); }, [onFiles, onText, onUri]);\n    var bond = useMemo(function () { return createBond(process, setOver); }, [process, setOver]);\n    return [bond, { over: over }];\n};\nexport default useDropArea;\n", "import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n    useEffect(effect, []);\n};\nexport default useEffectOnce;\n", "import { forwardRef, useEffect, useRef, } from 'react';\nexport default function useEnsuredForwardedRef(forwardedRef) {\n    var ensuredRef = useRef(forwardedRef && forwardedRef.current);\n    useEffect(function () {\n        if (!forwardedRef) {\n            return;\n        }\n        forwardedRef.current = ensuredRef.current;\n    }, [forwardedRef]);\n    return ensuredRef;\n}\nexport function ensuredForwardRef(Component) {\n    return forwardRef(function (props, ref) {\n        var ensuredRef = useEnsuredForwardedRef(ref);\n        return Component(props, ensuredRef);\n    });\n}\n", "import { useEffect } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar defaultTarget = isBrowser ? window : null;\nvar isListenerType1 = function (target) {\n    return !!target.addEventListener;\n};\nvar isListenerType2 = function (target) {\n    return !!target.on;\n};\nvar useEvent = function (name, handler, target, options) {\n    if (target === void 0) { target = defaultTarget; }\n    useEffect(function () {\n        if (!handler) {\n            return;\n        }\n        if (!target) {\n            return;\n        }\n        if (isListenerType1(target)) {\n            on(target, name, handler, options);\n        }\n        else if (isListenerType2(target)) {\n            target.on(name, handler, options);\n        }\n        return function () {\n            if (isListenerType1(target)) {\n                off(target, name, handler, options);\n            }\n            else if (isListenerType2(target)) {\n                target.off(name, handler, options);\n            }\n        };\n    }, [name, handler, target, JSON.stringify(options)]);\n};\nexport default useEvent;\n", "import { useCallback, useEffect, useState } from 'react';\nvar useError = function () {\n    var _a = useState(null), error = _a[0], setError = _a[1];\n    useEffect(function () {\n        if (error) {\n            throw error;\n        }\n    }, [error]);\n    var dispatchError = useCallback(function (err) {\n        setError(err);\n    }, []);\n    return dispatchError;\n};\nexport default useError;\n", "import { useEffect } from 'react';\nvar useFavicon = function (href) {\n    useEffect(function () {\n        var link = document.querySelector(\"link[rel*='icon']\") || document.createElement('link');\n        link.type = 'image/x-icon';\n        link.rel = 'shortcut icon';\n        link.href = href;\n        document.getElementsByTagName('head')[0].appendChild(link);\n    }, [href]);\n};\nexport default useFavicon;\n", "import { useState } from 'react';\nimport screenfull from 'screenfull';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport { noop, off, on } from './misc/util';\nvar useFullscreen = function (ref, enabled, options) {\n    if (options === void 0) { options = {}; }\n    var video = options.video, _a = options.onClose, onClose = _a === void 0 ? noop : _a;\n    var _b = useState(enabled), isFullscreen = _b[0], setIsFullscreen = _b[1];\n    useIsomorphicLayoutEffect(function () {\n        if (!enabled) {\n            return;\n        }\n        if (!ref.current) {\n            return;\n        }\n        var onWebkitEndFullscreen = function () {\n            if (video === null || video === void 0 ? void 0 : video.current) {\n                off(video.current, 'webkitendfullscreen', onWebkitEndFullscreen);\n            }\n            onClose();\n        };\n        var onChange = function () {\n            if (screenfull.isEnabled) {\n                var isScreenfullFullscreen = screenfull.isFullscreen;\n                setIsFullscreen(isScreenfullFullscreen);\n                if (!isScreenfullFullscreen) {\n                    onClose();\n                }\n            }\n        };\n        if (screenfull.isEnabled) {\n            try {\n                screenfull.request(ref.current);\n                setIsFullscreen(true);\n            }\n            catch (error) {\n                onClose(error);\n                setIsFullscreen(false);\n            }\n            screenfull.on('change', onChange);\n        }\n        else if (video && video.current && video.current.webkitEnterFullscreen) {\n            video.current.webkitEnterFullscreen();\n            on(video.current, 'webkitendfullscreen', onWebkitEndFullscreen);\n            setIsFullscreen(true);\n        }\n        else {\n            onClose();\n            setIsFullscreen(false);\n        }\n        return function () {\n            setIsFullscreen(false);\n            if (screenfull.isEnabled) {\n                try {\n                    screenfull.off('change', onChange);\n                    screenfull.exit();\n                }\n                catch (_a) { }\n            }\n            else if (video && video.current && video.current.webkitExitFullscreen) {\n                off(video.current, 'webkitendfullscreen', onWebkitEndFullscreen);\n                video.current.webkitExitFullscreen();\n            }\n        };\n    }, [enabled, video, ref]);\n    return isFullscreen;\n};\nexport default useFullscreen;\n", "import { __assign } from \"tslib\";\nimport { useEffect, useState } from 'react';\nvar useGeolocation = function (options) {\n    var _a = useState({\n        loading: true,\n        accuracy: null,\n        altitude: null,\n        altitudeAccuracy: null,\n        heading: null,\n        latitude: null,\n        longitude: null,\n        speed: null,\n        timestamp: Date.now(),\n    }), state = _a[0], setState = _a[1];\n    var mounted = true;\n    var watchId;\n    var onEvent = function (event) {\n        if (mounted) {\n            setState({\n                loading: false,\n                accuracy: event.coords.accuracy,\n                altitude: event.coords.altitude,\n                altitudeAccuracy: event.coords.altitudeAccuracy,\n                heading: event.coords.heading,\n                latitude: event.coords.latitude,\n                longitude: event.coords.longitude,\n                speed: event.coords.speed,\n                timestamp: event.timestamp,\n            });\n        }\n    };\n    var onEventError = function (error) {\n        return mounted && setState(function (oldState) { return (__assign(__assign({}, oldState), { loading: false, error: error })); });\n    };\n    useEffect(function () {\n        navigator.geolocation.getCurrentPosition(onEvent, onEventError, options);\n        watchId = navigator.geolocation.watchPosition(onEvent, onEventError, options);\n        return function () {\n            mounted = false;\n            navigator.geolocation.clearWatch(watchId);\n        };\n    }, []);\n    return state;\n};\nexport default useGeolocation;\n", "import { __assign } from \"tslib\";\nimport { useCallback, useRef } from 'react';\nimport useUpdate from './useUpdate';\nvar useGetSetState = function (initialState) {\n    if (initialState === void 0) { initialState = {}; }\n    if (process.env.NODE_ENV !== 'production') {\n        if (typeof initialState !== 'object') {\n            console.error('useGetSetState initial state must be an object.');\n        }\n    }\n    var update = useUpdate();\n    var state = useRef(__assign({}, initialState));\n    var get = useCallback(function () { return state.current; }, []);\n    var set = useCallback(function (patch) {\n        if (!patch) {\n            return;\n        }\n        if (process.env.NODE_ENV !== 'production') {\n            if (typeof patch !== 'object') {\n                console.error('useGetSetState setter patch must be an object.');\n            }\n        }\n        Object.assign(state.current, patch);\n        update();\n    }, []);\n    return [get, set];\n};\nexport default useGetSetState;\n", "import { useEffect, useRef } from 'react';\nimport { clearHarmonicInterval, setHarmonicInterval } from 'set-harmonic-interval';\nvar useHarmonicIntervalFn = function (fn, delay) {\n    if (delay === void 0) { delay = 0; }\n    var latestCallback = useRef(function () { });\n    useEffect(function () {\n        latestCallback.current = fn;\n    });\n    useEffect(function () {\n        if (delay !== null) {\n            var interval_1 = setHarmonicInterval(function () { return latestCallback.current(); }, delay);\n            return function () { return clearHarmonicInterval(interval_1); };\n        }\n        return undefined;\n    }, [delay]);\n};\nexport default useHarmonicIntervalFn;\n", "import * as React from 'react';\nimport { noop } from './misc/util';\nvar useState = React.useState;\nvar useHover = function (element) {\n    var _a = useState(false), state = _a[0], setState = _a[1];\n    var onMouseEnter = function (originalOnMouseEnter) { return function (event) {\n        (originalOnMouseEnter || noop)(event);\n        setState(true);\n    }; };\n    var onMouseLeave = function (originalOnMouseLeave) { return function (event) {\n        (originalOnMouseLeave || noop)(event);\n        setState(false);\n    }; };\n    if (typeof element === 'function') {\n        element = element(state);\n    }\n    var el = React.cloneElement(element, {\n        onMouseEnter: onMouseEnter(element.props.onMouseEnter),\n        onMouseLeave: onMouseLeave(element.props.onMouseLeave),\n    });\n    return [el, state];\n};\nexport default useHover;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\n// kudos: https://usehooks.com/\nvar useHoverDirty = function (ref, enabled) {\n    if (enabled === void 0) { enabled = true; }\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.current === 'undefined') {\n            console.error('useHoverDirty expects a single ref argument.');\n        }\n    }\n    var _a = useState(false), value = _a[0], setValue = _a[1];\n    useEffect(function () {\n        var onMouseOver = function () { return setValue(true); };\n        var onMouseOut = function () { return setValue(false); };\n        if (enabled && ref && ref.current) {\n            on(ref.current, 'mouseover', onMouseOver);\n            on(ref.current, 'mouseout', onMouseOut);\n        }\n        // fixes react-hooks/exhaustive-deps warning about stale ref elements\n        var current = ref.current;\n        return function () {\n            if (enabled && current) {\n                off(current, 'mouseover', onMouseOver);\n                off(current, 'mouseout', onMouseOut);\n            }\n        };\n    }, [enabled, ref]);\n    return value;\n};\nexport default useHoverDirty;\n", "import { useEffect, useState } from 'react';\nimport { throttle } from 'throttle-debounce';\nimport { off, on } from './misc/util';\nvar defaultEvents = ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel'];\nvar oneMinute = 60e3;\nvar useIdle = function (ms, initialState, events) {\n    if (ms === void 0) { ms = oneMinute; }\n    if (initialState === void 0) { initialState = false; }\n    if (events === void 0) { events = defaultEvents; }\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var timeout;\n        var localState = state;\n        var set = function (newState) {\n            if (mounted) {\n                localState = newState;\n                setState(newState);\n            }\n        };\n        var onEvent = throttle(50, function () {\n            if (localState) {\n                set(false);\n            }\n            clearTimeout(timeout);\n            timeout = setTimeout(function () { return set(true); }, ms);\n        });\n        var onVisibility = function () {\n            if (!document.hidden) {\n                onEvent();\n            }\n        };\n        for (var i = 0; i < events.length; i++) {\n            on(window, events[i], onEvent);\n        }\n        on(document, 'visibilitychange', onVisibility);\n        timeout = setTimeout(function () { return set(true); }, ms);\n        return function () {\n            mounted = false;\n            for (var i = 0; i < events.length; i++) {\n                off(window, events[i], onEvent);\n            }\n            off(document, 'visibilitychange', onVisibility);\n        };\n    }, [ms, events]);\n    return state;\n};\nexport default useIdle;\n", "import { useEffect, useState } from 'react';\nvar useIntersection = function (ref, options) {\n    var _a = useState(null), intersectionObserverEntry = _a[0], setIntersectionObserverEntry = _a[1];\n    useEffect(function () {\n        if (ref.current && typeof IntersectionObserver === 'function') {\n            var handler = function (entries) {\n                setIntersectionObserverEntry(entries[0]);\n            };\n            var observer_1 = new IntersectionObserver(handler, options);\n            observer_1.observe(ref.current);\n            return function () {\n                setIntersectionObserverEntry(null);\n                observer_1.disconnect();\n            };\n        }\n        return function () { };\n    }, [ref.current, options.threshold, options.root, options.rootMargin]);\n    return intersectionObserverEntry;\n};\nexport default useIntersection;\n", "import { useEffect, useRef } from 'react';\nvar useInterval = function (callback, delay) {\n    var savedCallback = useRef(function () { });\n    useEffect(function () {\n        savedCallback.current = callback;\n    });\n    useEffect(function () {\n        if (delay !== null) {\n            var interval_1 = setInterval(function () { return savedCallback.current(); }, delay || 0);\n            return function () { return clearInterval(interval_1); };\n        }\n        return undefined;\n    }, [delay]);\n};\nexport default useInterval;\n", "import { useMemo } from 'react';\nimport useEvent from './useEvent';\nimport { noop } from './misc/util';\nvar createKeyPredicate = function (keyFilter) {\n    return typeof keyFilter === 'function'\n        ? keyFilter\n        : typeof keyFilter === 'string'\n            ? function (event) { return event.key === keyFilter; }\n            : keyFilter\n                ? function () { return true; }\n                : function () { return false; };\n};\nvar useKey = function (key, fn, opts, deps) {\n    if (fn === void 0) { fn = noop; }\n    if (opts === void 0) { opts = {}; }\n    if (deps === void 0) { deps = [key]; }\n    var _a = opts.event, event = _a === void 0 ? 'keydown' : _a, target = opts.target, options = opts.options;\n    var useMemoHandler = useMemo(function () {\n        var predicate = createKeyPredicate(key);\n        var handler = function (handlerEvent) {\n            if (predicate(handlerEvent)) {\n                return fn(handlerEvent);\n            }\n        };\n        return handler;\n    }, deps);\n    useEvent(event, useMemoHandler, target, options);\n};\nexport default useKey;\n", "import { useEffect, useMemo, useState } from 'react';\nimport { isBrowser, off, on } from '../misc/util';\nvar createBreakpoint = function (breakpoints) {\n    if (breakpoints === void 0) { breakpoints = { laptopL: 1440, laptop: 1024, tablet: 768 }; }\n    return function () {\n        var _a = useState(isBrowser ? window.innerWidth : 0), screen = _a[0], setScreen = _a[1];\n        useEffect(function () {\n            var setSideScreen = function () {\n                setScreen(window.innerWidth);\n            };\n            setSideScreen();\n            on(window, 'resize', setSideScreen);\n            return function () {\n                off(window, 'resize', setSideScreen);\n            };\n        });\n        var sortedBreakpoints = useMemo(function () { return Object.entries(breakpoints).sort(function (a, b) { return (a[1] >= b[1] ? 1 : -1); }); }, [breakpoints]);\n        var result = sortedBreakpoints.reduce(function (acc, _a) {\n            var name = _a[0], width = _a[1];\n            if (screen >= width) {\n                return name;\n            }\n            else {\n                return acc;\n            }\n        }, sortedBreakpoints[0][0]);\n        return result;\n    };\n};\nexport default createBreakpoint;\n", "import { useState } from 'react';\nimport useKey from './useKey';\nvar useKeyPress = function (keyFilter) {\n    var _a = useState([false, null]), state = _a[0], set = _a[1];\n    useKey(keyFilter, function (event) { return set([true, event]); }, { event: 'keydown' }, [state]);\n    useKey(keyFilter, function (event) { return set([false, event]); }, { event: 'keyup' }, [state]);\n    return state;\n};\nexport default useKeyPress;\n", "import { useRef } from 'react';\nvar useLatest = function (value) {\n    var ref = useRef(value);\n    ref.current = value;\n    return ref;\n};\nexport default useLatest;\n", "import { useEffect } from 'react';\nvar useLifecycles = function (mount, unmount) {\n    useEffect(function () {\n        if (mount) {\n            mount();\n        }\n        return function () {\n            if (unmount) {\n                unmount();\n            }\n        };\n    }, []);\n};\nexport default useLifecycles;\n", "import { useMemo, useRef } from 'react';\nimport useUpdate from './useUpdate';\nimport { resolveHookState } from './misc/hookState';\nfunction useList(initialList) {\n    if (initialList === void 0) { initialList = []; }\n    var list = useRef(resolveHookState(initialList));\n    var update = useUpdate();\n    var actions = useMemo(function () {\n        var a = {\n            set: function (newList) {\n                list.current = resolveHookState(newList, list.current);\n                update();\n            },\n            push: function () {\n                var items = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    items[_i] = arguments[_i];\n                }\n                items.length && actions.set(function (curr) { return curr.concat(items); });\n            },\n            updateAt: function (index, item) {\n                actions.set(function (curr) {\n                    var arr = curr.slice();\n                    arr[index] = item;\n                    return arr;\n                });\n            },\n            insertAt: function (index, item) {\n                actions.set(function (curr) {\n                    var arr = curr.slice();\n                    index > arr.length ? (arr[index] = item) : arr.splice(index, 0, item);\n                    return arr;\n                });\n            },\n            update: function (predicate, newItem) {\n                actions.set(function (curr) { return curr.map(function (item) { return (predicate(item, newItem) ? newItem : item); }); });\n            },\n            updateFirst: function (predicate, newItem) {\n                var index = list.current.findIndex(function (item) { return predicate(item, newItem); });\n                index >= 0 && actions.updateAt(index, newItem);\n            },\n            upsert: function (predicate, newItem) {\n                var index = list.current.findIndex(function (item) { return predicate(item, newItem); });\n                index >= 0 ? actions.updateAt(index, newItem) : actions.push(newItem);\n            },\n            sort: function (compareFn) {\n                actions.set(function (curr) { return curr.slice().sort(compareFn); });\n            },\n            filter: function (callbackFn, thisArg) {\n                actions.set(function (curr) { return curr.slice().filter(callbackFn, thisArg); });\n            },\n            removeAt: function (index) {\n                actions.set(function (curr) {\n                    var arr = curr.slice();\n                    arr.splice(index, 1);\n                    return arr;\n                });\n            },\n            clear: function () {\n                actions.set([]);\n            },\n            reset: function () {\n                actions.set(resolveHookState(initialList).slice());\n            },\n        };\n        /**\n         * @deprecated Use removeAt method instead\n         */\n        a.remove = a.removeAt;\n        return a;\n    }, []);\n    return [list.current, actions];\n}\nexport default useList;\n", "import { useCallback, useState, useRef, useLayoutEffect } from 'react';\nimport { isBrowser, noop } from './misc/util';\nvar useLocalStorage = function (key, initialValue, options) {\n    if (!isBrowser) {\n        return [initialValue, noop, noop];\n    }\n    if (!key) {\n        throw new Error('useLocalStorage key may not be falsy');\n    }\n    var deserializer = options\n        ? options.raw\n            ? function (value) { return value; }\n            : options.deserializer\n        : JSON.parse;\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var initializer = useRef(function (key) {\n        try {\n            var serializer = options ? (options.raw ? String : options.serializer) : JSON.stringify;\n            var localStorageValue = localStorage.getItem(key);\n            if (localStorageValue !== null) {\n                return deserializer(localStorageValue);\n            }\n            else {\n                initialValue && localStorage.setItem(key, serializer(initialValue));\n                return initialValue;\n            }\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw. JSON.parse and JSON.stringify\n            // can throw, too.\n            return initialValue;\n        }\n    });\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var _a = useState(function () { return initializer.current(key); }), state = _a[0], setState = _a[1];\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useLayoutEffect(function () { return setState(initializer.current(key)); }, [key]);\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var set = useCallback(function (valOrFunc) {\n        try {\n            var newState = typeof valOrFunc === 'function' ? valOrFunc(state) : valOrFunc;\n            if (typeof newState === 'undefined')\n                return;\n            var value = void 0;\n            if (options)\n                if (options.raw)\n                    if (typeof newState === 'string')\n                        value = newState;\n                    else\n                        value = JSON.stringify(newState);\n                else if (options.serializer)\n                    value = options.serializer(newState);\n                else\n                    value = JSON.stringify(newState);\n            else\n                value = JSON.stringify(newState);\n            localStorage.setItem(key, value);\n            setState(deserializer(value));\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw. Also JSON.stringify can throw.\n        }\n    }, [key, setState]);\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var remove = useCallback(function () {\n        try {\n            localStorage.removeItem(key);\n            setState(undefined);\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw.\n        }\n    }, [key, setState]);\n    return [state, set, remove];\n};\nexport default useLocalStorage;\n", "import { useEffect, useState } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar patchHistoryMethod = function (method) {\n    var history = window.history;\n    var original = history[method];\n    history[method] = function (state) {\n        var result = original.apply(this, arguments);\n        var event = new Event(method.toLowerCase());\n        event.state = state;\n        window.dispatchEvent(event);\n        return result;\n    };\n};\nif (isBrowser) {\n    patchHistoryMethod('pushState');\n    patchHistoryMethod('replaceState');\n}\nvar useLocationServer = function () { return ({\n    trigger: 'load',\n    length: 1,\n}); };\nvar buildState = function (trigger) {\n    var _a = window.history, state = _a.state, length = _a.length;\n    var _b = window.location, hash = _b.hash, host = _b.host, hostname = _b.hostname, href = _b.href, origin = _b.origin, pathname = _b.pathname, port = _b.port, protocol = _b.protocol, search = _b.search;\n    return {\n        trigger: trigger,\n        state: state,\n        length: length,\n        hash: hash,\n        host: host,\n        hostname: hostname,\n        href: href,\n        origin: origin,\n        pathname: pathname,\n        port: port,\n        protocol: protocol,\n        search: search,\n    };\n};\nvar useLocationBrowser = function () {\n    var _a = useState(buildState('load')), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var onPopstate = function () { return setState(buildState('popstate')); };\n        var onPushstate = function () { return setState(buildState('pushstate')); };\n        var onReplacestate = function () { return setState(buildState('replacestate')); };\n        on(window, 'popstate', onPopstate);\n        on(window, 'pushstate', onPushstate);\n        on(window, 'replacestate', onReplacestate);\n        return function () {\n            off(window, 'popstate', onPopstate);\n            off(window, 'pushstate', onPushstate);\n            off(window, 'replacestate', onReplacestate);\n        };\n    }, []);\n    return state;\n};\nvar hasEventConstructor = typeof Event === 'function';\nexport default isBrowser && hasEventConstructor ? useLocationBrowser : useLocationServer;\n", "import { useEffect, useRef } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nexport function getClosestBody(el) {\n    if (!el) {\n        return null;\n    }\n    else if (el.tagName === 'BODY') {\n        return el;\n    }\n    else if (el.tagName === 'IFRAME') {\n        var document_1 = el.contentDocument;\n        return document_1 ? document_1.body : null;\n    }\n    else if (!el.offsetParent) {\n        return null;\n    }\n    return getClosestBody(el.offsetParent);\n}\nfunction preventDefault(rawEvent) {\n    var e = rawEvent || window.event;\n    // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n    if (e.touches.length > 1)\n        return true;\n    if (e.preventDefault)\n        e.preventDefault();\n    return false;\n}\nvar isIosDevice = isBrowser &&\n    window.navigator &&\n    window.navigator.platform &&\n    /iP(ad|hone|od)/.test(window.navigator.platform);\nvar bodies = new Map();\nvar doc = typeof document === 'object' ? document : undefined;\nvar documentListenerAdded = false;\nexport default !doc\n    ? function useLockBodyMock(_locked, _elementRef) {\n        if (_locked === void 0) { _locked = true; }\n    }\n    : function useLockBody(locked, elementRef) {\n        if (locked === void 0) { locked = true; }\n        var bodyRef = useRef(doc.body);\n        elementRef = elementRef || bodyRef;\n        var lock = function (body) {\n            var bodyInfo = bodies.get(body);\n            if (!bodyInfo) {\n                bodies.set(body, { counter: 1, initialOverflow: body.style.overflow });\n                if (isIosDevice) {\n                    if (!documentListenerAdded) {\n                        on(document, 'touchmove', preventDefault, { passive: false });\n                        documentListenerAdded = true;\n                    }\n                }\n                else {\n                    body.style.overflow = 'hidden';\n                }\n            }\n            else {\n                bodies.set(body, {\n                    counter: bodyInfo.counter + 1,\n                    initialOverflow: bodyInfo.initialOverflow,\n                });\n            }\n        };\n        var unlock = function (body) {\n            var bodyInfo = bodies.get(body);\n            if (bodyInfo) {\n                if (bodyInfo.counter === 1) {\n                    bodies.delete(body);\n                    if (isIosDevice) {\n                        body.ontouchmove = null;\n                        if (documentListenerAdded) {\n                            off(document, 'touchmove', preventDefault);\n                            documentListenerAdded = false;\n                        }\n                    }\n                    else {\n                        body.style.overflow = bodyInfo.initialOverflow;\n                    }\n                }\n                else {\n                    bodies.set(body, {\n                        counter: bodyInfo.counter - 1,\n                        initialOverflow: bodyInfo.initialOverflow,\n                    });\n                }\n            }\n        };\n        useEffect(function () {\n            var body = getClosestBody(elementRef.current);\n            if (!body) {\n                return;\n            }\n            if (locked) {\n                lock(body);\n            }\n            else {\n                unlock(body);\n            }\n        }, [locked, elementRef.current]);\n        // clean up, on un-mount\n        useEffect(function () {\n            var body = getClosestBody(elementRef.current);\n            if (!body) {\n                return;\n            }\n            return function () {\n                unlock(body);\n            };\n        }, []);\n    };\n", "import { __spreadArrays } from \"tslib\";\nimport useEffectOnce from './useEffectOnce';\nimport useUpdateEffect from './useUpdateEffect';\nvar useLogger = function (componentName) {\n    var rest = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        rest[_i - 1] = arguments[_i];\n    }\n    useEffectOnce(function () {\n        console.log.apply(console, __spreadArrays([componentName + \" mounted\"], rest));\n        return function () { return console.log(componentName + \" unmounted\"); };\n    });\n    useUpdateEffect(function () {\n        console.log.apply(console, __spreadArrays([componentName + \" updated\"], rest));\n    });\n};\nexport default useLogger;\n", "import { useCallback, useRef } from 'react';\nimport { off, on } from './misc/util';\nvar isTouchEvent = function (ev) {\n    return 'touches' in ev;\n};\nvar preventDefault = function (ev) {\n    if (!isTouchEvent(ev))\n        return;\n    if (ev.touches.length < 2 && ev.preventDefault) {\n        ev.preventDefault();\n    }\n};\nvar useLongPress = function (callback, _a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.isPreventDefault, isPreventDefault = _c === void 0 ? true : _c, _d = _b.delay, delay = _d === void 0 ? 300 : _d;\n    var timeout = useRef();\n    var target = useRef();\n    var start = useCallback(function (event) {\n        // prevent ghost click on mobile devices\n        if (isPreventDefault && event.target) {\n            on(event.target, 'touchend', preventDefault, { passive: false });\n            target.current = event.target;\n        }\n        timeout.current = setTimeout(function () { return callback(event); }, delay);\n    }, [callback, delay, isPreventDefault]);\n    var clear = useCallback(function () {\n        // clearTimeout and removeEventListener\n        timeout.current && clearTimeout(timeout.current);\n        if (isPreventDefault && target.current) {\n            off(target.current, 'touchend', preventDefault);\n        }\n    }, [isPreventDefault]);\n    return {\n        onMouseDown: function (e) { return start(e); },\n        onTouchStart: function (e) { return start(e); },\n        onMouseUp: clear,\n        onMouseLeave: clear,\n        onTouchEnd: clear,\n    };\n};\nexport default useLongPress;\n", "import { __assign, __rest } from \"tslib\";\nimport { useCallback, useMemo, useState } from 'react';\nvar useMap = function (initialMap) {\n    if (initialMap === void 0) { initialMap = {}; }\n    var _a = useState(initialMap), map = _a[0], set = _a[1];\n    var stableActions = useMemo(function () { return ({\n        set: function (key, entry) {\n            set(function (prevMap) {\n                var _a;\n                return (__assign(__assign({}, prevMap), (_a = {}, _a[key] = entry, _a)));\n            });\n        },\n        setAll: function (newMap) {\n            set(newMap);\n        },\n        remove: function (key) {\n            set(function (prevMap) {\n                var _a = prevMap, _b = key, omit = _a[_b], rest = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n                return rest;\n            });\n        },\n        reset: function () { return set(initialMap); },\n    }); }, [set]);\n    var utils = __assign({ get: useCallback(function (key) { return map[key]; }, [map]) }, stableActions);\n    return [map, utils];\n};\nexport default useMap;\n", "import { useEffect, useState } from 'react';\nimport { isBrowser } from './misc/util';\nvar getInitialState = function (query, defaultState) {\n    // Prevent a React hydration mismatch when a default value is provided by not defaulting to window.matchMedia(query).matches.\n    if (defaultState !== undefined) {\n        return defaultState;\n    }\n    if (isBrowser) {\n        return window.matchMedia(query).matches;\n    }\n    // A default value has not been provided, and you are rendering on the server, warn of a possible hydration mismatch when defaulting to false.\n    if (process.env.NODE_ENV !== 'production') {\n        console.warn('`useMedia` When server side rendering, defaultState should be defined to prevent a hydration mismatches.');\n    }\n    return false;\n};\nvar useMedia = function (query, defaultState) {\n    var _a = useState(getInitialState(query, defaultState)), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var mql = window.matchMedia(query);\n        var onChange = function () {\n            if (!mounted) {\n                return;\n            }\n            setState(!!mql.matches);\n        };\n        mql.addEventListener('change', onChange);\n        setState(mql.matches);\n        return function () {\n            mounted = false;\n            mql.removeEventListener('change', onChange);\n        };\n    }, [query]);\n    return state;\n};\nexport default useMedia;\n", "import { useEffect, useState } from 'react';\nimport { isNavigator, noop, off, on } from './misc/util';\nvar useMediaDevices = function () {\n    var _a = useState({}), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var onChange = function () {\n            navigator.mediaDevices\n                .enumerateDevices()\n                .then(function (devices) {\n                if (mounted) {\n                    setState({\n                        devices: devices.map(function (_a) {\n                            var deviceId = _a.deviceId, groupId = _a.groupId, kind = _a.kind, label = _a.label;\n                            return ({\n                                deviceId: deviceId,\n                                groupId: groupId,\n                                kind: kind,\n                                label: label,\n                            });\n                        }),\n                    });\n                }\n            })\n                .catch(noop);\n        };\n        on(navigator.mediaDevices, 'devicechange', onChange);\n        onChange();\n        return function () {\n            mounted = false;\n            off(navigator.mediaDevices, 'devicechange', onChange);\n        };\n    }, []);\n    return state;\n};\nvar useMediaDevicesMock = function () { return ({}); };\nexport default isNavigator && !!navigator.mediaDevices ? useMediaDevices : useMediaDevicesMock;\n", "import { useCallback, useRef, useState } from 'react';\nexport function useMediatedState(mediator, initialState) {\n    var mediatorFn = useRef(mediator);\n    var _a = useState(initialState), state = _a[0], setMediatedState = _a[1];\n    var setState = useCallback(function (newState) {\n        if (mediatorFn.current.length === 2) {\n            mediatorFn.current(newState, setMediatedState);\n        }\n        else {\n            setMediatedState(mediatorFn.current(newState));\n        }\n    }, [state]);\n    return [state, setState];\n}\n", "import { useMemo, useReducer } from 'react';\nvar useMethods = function (createMethods, initialState) {\n    var reducer = useMemo(function () { return function (reducerState, action) {\n        var _a;\n        return (_a = createMethods(reducerState))[action.type].apply(_a, action.payload);\n    }; }, [createMethods]);\n    var _a = useReducer(reducer, initialState), state = _a[0], dispatch = _a[1];\n    var wrappedMethods = useMemo(function () {\n        var actionTypes = Object.keys(createMethods(initialState));\n        return actionTypes.reduce(function (acc, type) {\n            acc[type] = function () {\n                var payload = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    payload[_i] = arguments[_i];\n                }\n                return dispatch({ type: type, payload: payload });\n            };\n            return acc;\n        }, {});\n    }, [createMethods, initialState]);\n    return [state, wrappedMethods];\n};\nexport default useMethods;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nvar defaultState = {\n    acceleration: {\n        x: null,\n        y: null,\n        z: null,\n    },\n    accelerationIncludingGravity: {\n        x: null,\n        y: null,\n        z: null,\n    },\n    rotationRate: {\n        alpha: null,\n        beta: null,\n        gamma: null,\n    },\n    interval: 16,\n};\nvar useMotion = function (initialState) {\n    if (initialState === void 0) { initialState = defaultState; }\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handler = function (event) {\n            var acceleration = event.acceleration, accelerationIncludingGravity = event.accelerationIncludingGravity, rotationRate = event.rotationRate, interval = event.interval;\n            setState({\n                acceleration: {\n                    x: acceleration.x,\n                    y: acceleration.y,\n                    z: acceleration.z,\n                },\n                accelerationIncludingGravity: {\n                    x: accelerationIncludingGravity.x,\n                    y: accelerationIncludingGravity.y,\n                    z: accelerationIncludingGravity.z,\n                },\n                rotationRate: {\n                    alpha: rotationRate.alpha,\n                    beta: rotationRate.beta,\n                    gamma: rotationRate.gamma,\n                },\n                interval: interval,\n            });\n        };\n        on(window, 'devicemotion', handler);\n        return function () {\n            off(window, 'devicemotion', handler);\n        };\n    }, []);\n    return state;\n};\nexport default useMotion;\n", "import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { off, on } from './misc/util';\nvar useMouse = function (ref) {\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.current === 'undefined') {\n            console.error('useMouse expects a single ref argument.');\n        }\n    }\n    var _a = useRafState({\n        docX: 0,\n        docY: 0,\n        posX: 0,\n        posY: 0,\n        elX: 0,\n        elY: 0,\n        elH: 0,\n        elW: 0,\n    }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var moveHandler = function (event) {\n            if (ref && ref.current) {\n                var _a = ref.current.getBoundingClientRect(), left = _a.left, top_1 = _a.top, elW = _a.width, elH = _a.height;\n                var posX = left + window.pageXOffset;\n                var posY = top_1 + window.pageYOffset;\n                var elX = event.pageX - posX;\n                var elY = event.pageY - posY;\n                setState({\n                    docX: event.pageX,\n                    docY: event.pageY,\n                    posX: posX,\n                    posY: posY,\n                    elX: elX,\n                    elY: elY,\n                    elH: elH,\n                    elW: elW,\n                });\n            }\n        };\n        on(document, 'mousemove', moveHandler);\n        return function () {\n            off(document, 'mousemove', moveHandler);\n        };\n    }, [ref]);\n    return state;\n};\nexport default useMouse;\n", "import { useCallback, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useRafState = function (initialState) {\n    var frame = useRef(0);\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    var setRafState = useCallback(function (value) {\n        cancelAnimationFrame(frame.current);\n        frame.current = requestAnimationFrame(function () {\n            setState(value);\n        });\n    }, []);\n    useUnmount(function () {\n        cancelAnimationFrame(frame.current);\n    });\n    return [state, setRafState];\n};\nexport default useRafState;\n", "import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n    var fnRef = useRef(fn);\n    // update the ref each render so if it change the newest callback will be invoked\n    fnRef.current = fn;\n    useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nexport default (function () {\n    var _a = useState(0), mouseWheelScrolled = _a[0], setMouseWheelScrolled = _a[1];\n    useEffect(function () {\n        var updateScroll = function (e) {\n            setMouseWheelScrolled(e.deltaY + mouseWheelScrolled);\n        };\n        on(window, 'wheel', updateScroll, false);\n        return function () { return off(window, 'wheel', updateScroll); };\n    });\n    return mouseWheelScrolled;\n});\n", "import { useEffect, useState } from 'react';\nimport { isNavigator, off, on } from './misc/util';\nvar nav = isNavigator ? navigator : undefined;\nvar conn = nav && (nav.connection || nav.mozConnection || nav.webkitConnection);\nfunction getConnectionState(previousState) {\n    var online = nav === null || nav === void 0 ? void 0 : nav.onLine;\n    var previousOnline = previousState === null || previousState === void 0 ? void 0 : previousState.online;\n    return {\n        online: online,\n        previous: previousOnline,\n        since: online !== previousOnline ? new Date() : previousState === null || previousState === void 0 ? void 0 : previousState.since,\n        downlink: conn === null || conn === void 0 ? void 0 : conn.downlink,\n        downlinkMax: conn === null || conn === void 0 ? void 0 : conn.downlinkMax,\n        effectiveType: conn === null || conn === void 0 ? void 0 : conn.effectiveType,\n        rtt: conn === null || conn === void 0 ? void 0 : conn.rtt,\n        saveData: conn === null || conn === void 0 ? void 0 : conn.saveData,\n        type: conn === null || conn === void 0 ? void 0 : conn.type,\n    };\n}\nexport default function useNetworkState(initialState) {\n    var _a = useState(initialState !== null && initialState !== void 0 ? initialState : getConnectionState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handleStateChange = function () {\n            setState(getConnectionState);\n        };\n        on(window, 'online', handleStateChange, { passive: true });\n        on(window, 'offline', handleStateChange, { passive: true });\n        if (conn) {\n            on(conn, 'change', handleStateChange, { passive: true });\n        }\n        return function () {\n            off(window, 'online', handleStateChange);\n            off(window, 'offline', handleStateChange);\n            if (conn) {\n                off(conn, 'change', handleStateChange);\n            }\n        };\n    }, []);\n    return state;\n}\n", "import { useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nfunction useObservable(observable$, initialValue) {\n    var _a = useState(initialValue), value = _a[0], update = _a[1];\n    useIsomorphicLayoutEffect(function () {\n        var s = observable$.subscribe(update);\n        return function () { return s.unsubscribe(); };\n    }, [observable$]);\n    return value;\n}\nexport default useObservable;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nvar defaultState = {\n    angle: 0,\n    type: 'landscape-primary',\n};\nvar useOrientation = function (initialState) {\n    if (initialState === void 0) { initialState = defaultState; }\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var screen = window.screen;\n        var mounted = true;\n        var onChange = function () {\n            if (mounted) {\n                var orientation_1 = screen.orientation;\n                if (orientation_1) {\n                    var angle = orientation_1.angle, type = orientation_1.type;\n                    setState({ angle: angle, type: type });\n                }\n                else if (window.orientation !== undefined) {\n                    setState({\n                        angle: typeof window.orientation === 'number' ? window.orientation : 0,\n                        type: '',\n                    });\n                }\n                else {\n                    setState(initialState);\n                }\n            }\n        };\n        on(window, 'orientationchange', onChange);\n        onChange();\n        return function () {\n            mounted = false;\n            off(window, 'orientationchange', onChange);\n        };\n    }, []);\n    return state;\n};\nexport default useOrientation;\n", "import { useEffect } from 'react';\nimport { off, on } from './misc/util';\nvar usePageLeave = function (onPageLeave, args) {\n    if (args === void 0) { args = []; }\n    useEffect(function () {\n        if (!onPageLeave) {\n            return;\n        }\n        var handler = function (event) {\n            event = event ? event : window.event;\n            var from = event.relatedTarget || event.toElement;\n            if (!from || from.nodeName === 'HTML') {\n                onPageLeave();\n            }\n        };\n        on(document, 'mouseout', handler);\n        return function () {\n            off(document, 'mouseout', handler);\n        };\n    }, args);\n};\nexport default usePageLeave;\n", "import { useEffect, useState } from 'react';\nimport { noop, off, on } from './misc/util';\n// const usePermission = <T extends PermissionDescriptor>(permissionDesc: T): IState => {\nvar usePermission = function (permissionDesc) {\n    var _a = useState(''), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var permissionStatus = null;\n        var onChange = function () {\n            if (!mounted) {\n                return;\n            }\n            setState(function () { var _a; return (_a = permissionStatus === null || permissionStatus === void 0 ? void 0 : permissionStatus.state) !== null && _a !== void 0 ? _a : ''; });\n        };\n        navigator.permissions\n            .query(permissionDesc)\n            .then(function (status) {\n            permissionStatus = status;\n            on(permissionStatus, 'change', onChange);\n            onChange();\n        })\n            .catch(noop);\n        return function () {\n            permissionStatus && off(permissionStatus, 'change', onChange);\n            mounted = false;\n            permissionStatus = null;\n        };\n    }, [permissionDesc]);\n    return state;\n};\nexport default usePermission;\n", "import { useEffect, useRef } from 'react';\nexport default function usePrevious(state) {\n    var ref = useRef();\n    useEffect(function () {\n        ref.current = state;\n    });\n    return ref.current;\n}\n", "import { useRef } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nvar strictEquals = function (prev, next) { return prev === next; };\nexport default function usePreviousDistinct(value, compare) {\n    if (compare === void 0) { compare = strictEquals; }\n    var prevRef = useRef();\n    var curRef = useRef(value);\n    var isFirstMount = useFirstMountState();\n    if (!isFirstMount && !compare(curRef.current, value)) {\n        prevRef.current = curRef.current;\n        curRef.current = value;\n    }\n    return prevRef.current;\n}\n", "import { useCallback } from 'react';\nimport useMountedState from './useMountedState';\nvar usePromise = function () {\n    var isMounted = useMountedState();\n    return useCallback(function (promise) {\n        return new Promise(function (resolve, reject) {\n            var onValue = function (value) {\n                isMounted() && resolve(value);\n            };\n            var onError = function (error) {\n                isMounted() && reject(error);\n            };\n            promise.then(onValue, onError);\n        });\n    }, []);\n};\nexport default usePromise;\n", "import { __spreadArrays } from \"tslib\";\nimport { useState } from 'react';\nvar useQueue = function (initialValue) {\n    if (initialValue === void 0) { initialValue = []; }\n    var _a = useState(initialValue), state = _a[0], set = _a[1];\n    return {\n        add: function (value) {\n            set(function (queue) { return __spreadArrays(queue, [value]); });\n        },\n        remove: function () {\n            var result;\n            set(function (_a) {\n                var first = _a[0], rest = _a.slice(1);\n                result = first;\n                return rest;\n            });\n            return result;\n        },\n        get first() {\n            return state[0];\n        },\n        get last() {\n            return state[state.length - 1];\n        },\n        get size() {\n            return state.length;\n        },\n    };\n};\nexport default useQueue;\n", "import { useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nvar useRaf = function (ms, delay) {\n    if (ms === void 0) { ms = 1e12; }\n    if (delay === void 0) { delay = 0; }\n    var _a = useState(0), elapsed = _a[0], set = _a[1];\n    useIsomorphicLayoutEffect(function () {\n        var raf;\n        var timerStop;\n        var start;\n        var onFrame = function () {\n            var time = Math.min(1, (Date.now() - start) / ms);\n            set(time);\n            loop();\n        };\n        var loop = function () {\n            raf = requestAnimationFrame(onFrame);\n        };\n        var onStart = function () {\n            timerStop = setTimeout(function () {\n                cancelAnimationFrame(raf);\n                set(1);\n            }, ms);\n            start = Date.now();\n            loop();\n        };\n        var timerDelay = setTimeout(onStart, delay);\n        return function () {\n            clearTimeout(timerStop);\n            clearTimeout(timerDelay);\n            cancelAnimationFrame(raf);\n        };\n    }, [ms, delay]);\n    return elapsed;\n};\nexport default useRaf;\n", "import { useCallback, useEffect, useMemo, useRef } from 'react';\nexport default function useRafLoop(callback, initiallyActive) {\n    if (initiallyActive === void 0) { initiallyActive = true; }\n    var raf = useRef(null);\n    var rafActivity = useRef(false);\n    var rafCallback = useRef(callback);\n    rafCallback.current = callback;\n    var step = useCallback(function (time) {\n        if (rafActivity.current) {\n            rafCallback.current(time);\n            raf.current = requestAnimationFrame(step);\n        }\n    }, []);\n    var result = useMemo(function () {\n        return [\n            function () {\n                // stop\n                if (rafActivity.current) {\n                    rafActivity.current = false;\n                    raf.current && cancelAnimationFrame(raf.current);\n                }\n            },\n            function () {\n                // start\n                if (!rafActivity.current) {\n                    rafActivity.current = true;\n                    raf.current = requestAnimationFrame(step);\n                }\n            },\n            function () { return rafActivity.current; },\n        ];\n    }, []);\n    useEffect(function () {\n        if (initiallyActive) {\n            result[1]();\n        }\n        return result[0];\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    return result;\n}\n", "import { useEffect, useState } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar getValue = function (search, param) { return new URLSearchParams(search).get(param); };\nvar useSearchParam = function (param) {\n    var location = window.location;\n    var _a = useState(function () { return getValue(location.search, param); }), value = _a[0], setValue = _a[1];\n    useEffect(function () {\n        var onChange = function () {\n            setValue(getValue(location.search, param));\n        };\n        on(window, 'popstate', onChange);\n        on(window, 'pushstate', onChange);\n        on(window, 'replacestate', onChange);\n        return function () {\n            off(window, 'popstate', onChange);\n            off(window, 'pushstate', onChange);\n            off(window, 'replacestate', onChange);\n        };\n    }, []);\n    return value;\n};\nvar useSearchParamServer = function () { return null; };\nexport default isBrowser ? useSearchParam : useSearchParamServer;\n", "import { __assign, __rest } from \"tslib\";\nimport { cloneElement, useEffect, useRef, useState } from 'react';\nimport { render } from 'react-universal-interface';\nimport useLatest from './useLatest';\nimport { noop, off, on } from './misc/util';\nvar useScratch = function (params) {\n    if (params === void 0) { params = {}; }\n    var disabled = params.disabled;\n    var paramsRef = useLatest(params);\n    var _a = useState({ isScratching: false }), state = _a[0], setState = _a[1];\n    var refState = useRef(state);\n    var refScratching = useRef(false);\n    var refAnimationFrame = useRef(null);\n    var _b = useState(null), el = _b[0], setEl = _b[1];\n    useEffect(function () {\n        if (disabled)\n            return;\n        if (!el)\n            return;\n        var onMoveEvent = function (docX, docY) {\n            cancelAnimationFrame(refAnimationFrame.current);\n            refAnimationFrame.current = requestAnimationFrame(function () {\n                var _a = el.getBoundingClientRect(), left = _a.left, top = _a.top;\n                var elX = left + window.scrollX;\n                var elY = top + window.scrollY;\n                var x = docX - elX;\n                var y = docY - elY;\n                setState(function (oldState) {\n                    var newState = __assign(__assign({}, oldState), { dx: x - (oldState.x || 0), dy: y - (oldState.y || 0), end: Date.now(), isScratching: true });\n                    refState.current = newState;\n                    (paramsRef.current.onScratch || noop)(newState);\n                    return newState;\n                });\n            });\n        };\n        var onMouseMove = function (event) {\n            onMoveEvent(event.pageX, event.pageY);\n        };\n        var onTouchMove = function (event) {\n            onMoveEvent(event.changedTouches[0].pageX, event.changedTouches[0].pageY);\n        };\n        var onMouseUp;\n        var onTouchEnd;\n        var stopScratching = function () {\n            if (!refScratching.current)\n                return;\n            refScratching.current = false;\n            refState.current = __assign(__assign({}, refState.current), { isScratching: false });\n            (paramsRef.current.onScratchEnd || noop)(refState.current);\n            setState({ isScratching: false });\n            off(window, 'mousemove', onMouseMove);\n            off(window, 'touchmove', onTouchMove);\n            off(window, 'mouseup', onMouseUp);\n            off(window, 'touchend', onTouchEnd);\n        };\n        onMouseUp = stopScratching;\n        onTouchEnd = stopScratching;\n        var startScratching = function (docX, docY) {\n            if (!refScratching.current)\n                return;\n            var _a = el.getBoundingClientRect(), left = _a.left, top = _a.top;\n            var elX = left + window.scrollX;\n            var elY = top + window.scrollY;\n            var x = docX - elX;\n            var y = docY - elY;\n            var time = Date.now();\n            var newState = {\n                isScratching: true,\n                start: time,\n                end: time,\n                docX: docX,\n                docY: docY,\n                x: x,\n                y: y,\n                dx: 0,\n                dy: 0,\n                elH: el.offsetHeight,\n                elW: el.offsetWidth,\n                elX: elX,\n                elY: elY,\n            };\n            refState.current = newState;\n            (paramsRef.current.onScratchStart || noop)(newState);\n            setState(newState);\n            on(window, 'mousemove', onMouseMove);\n            on(window, 'touchmove', onTouchMove);\n            on(window, 'mouseup', onMouseUp);\n            on(window, 'touchend', onTouchEnd);\n        };\n        var onMouseDown = function (event) {\n            refScratching.current = true;\n            startScratching(event.pageX, event.pageY);\n        };\n        var onTouchStart = function (event) {\n            refScratching.current = true;\n            startScratching(event.changedTouches[0].pageX, event.changedTouches[0].pageY);\n        };\n        on(el, 'mousedown', onMouseDown);\n        on(el, 'touchstart', onTouchStart);\n        return function () {\n            off(el, 'mousedown', onMouseDown);\n            off(el, 'touchstart', onTouchStart);\n            off(window, 'mousemove', onMouseMove);\n            off(window, 'touchmove', onTouchMove);\n            off(window, 'mouseup', onMouseUp);\n            off(window, 'touchend', onTouchEnd);\n            if (refAnimationFrame.current)\n                cancelAnimationFrame(refAnimationFrame.current);\n            refAnimationFrame.current = null;\n            refScratching.current = false;\n            refState.current = { isScratching: false };\n            setState(refState.current);\n        };\n    }, [el, disabled, paramsRef]);\n    return [setEl, state];\n};\nexport var ScratchSensor = function (props) {\n    var children = props.children, params = __rest(props, [\"children\"]);\n    var _a = useScratch(params), ref = _a[0], state = _a[1];\n    var element = render(props, state);\n    return cloneElement(element, __assign(__assign({}, element.props), { ref: function (el) {\n            if (element.props.ref) {\n                if (typeof element.props.ref === 'object')\n                    element.props.ref.current = el;\n                if (typeof element.props.ref === 'function')\n                    element.props.ref(el);\n            }\n            ref(el);\n        } }));\n};\nexport default useScratch;\n", "import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { off, on } from './misc/util';\nvar useScroll = function (ref) {\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.current === 'undefined') {\n            console.error('`useScroll` expects a single ref argument.');\n        }\n    }\n    var _a = useRafState({\n        x: 0,\n        y: 0,\n    }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handler = function () {\n            if (ref.current) {\n                setState({\n                    x: ref.current.scrollLeft,\n                    y: ref.current.scrollTop,\n                });\n            }\n        };\n        if (ref.current) {\n            on(ref.current, 'scroll', handler, {\n                capture: false,\n                passive: true,\n            });\n        }\n        return function () {\n            if (ref.current) {\n                off(ref.current, 'scroll', handler);\n            }\n        };\n    }, [ref]);\n    return state;\n};\nexport default useScroll;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nvar useScrolling = function (ref) {\n    var _a = useState(false), scrolling = _a[0], setScrolling = _a[1];\n    useEffect(function () {\n        if (ref.current) {\n            var scrollingTimeout_1;\n            var handleScrollEnd_1 = function () {\n                setScrolling(false);\n            };\n            var handleScroll_1 = function () {\n                setScrolling(true);\n                clearTimeout(scrollingTimeout_1);\n                scrollingTimeout_1 = setTimeout(function () { return handleScrollEnd_1(); }, 150);\n            };\n            on(ref.current, 'scroll', handleScroll_1, false);\n            return function () {\n                if (ref.current) {\n                    off(ref.current, 'scroll', handleScroll_1, false);\n                }\n            };\n        }\n        return function () { };\n    }, [ref]);\n    return scrolling;\n};\nexport default useScrolling;\n", "import { useEffect, useState } from 'react';\nimport { isBrowser } from './misc/util';\nvar useSessionStorage = function (key, initialValue, raw) {\n    if (!isBrowser) {\n        return [initialValue, function () { }];\n    }\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var _a = useState(function () {\n        try {\n            var sessionStorageValue = sessionStorage.getItem(key);\n            if (typeof sessionStorageValue !== 'string') {\n                sessionStorage.setItem(key, raw ? String(initialValue) : JSON.stringify(initialValue));\n                return initialValue;\n            }\n            else {\n                return raw ? sessionStorageValue : JSON.parse(sessionStorageValue || 'null');\n            }\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // sessionStorage can throw. JSON.parse and JSON.stringify\n            // can throw, too.\n            return initialValue;\n        }\n    }), state = _a[0], setState = _a[1];\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useEffect(function () {\n        try {\n            var serializedState = raw ? String(state) : JSON.stringify(state);\n            sessionStorage.setItem(key, serializedState);\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // sessionStorage can throw. Also JSON.stringify can throw.\n        }\n    });\n    return [state, setState];\n};\nexport default useSessionStorage;\n", "import { equal as isShallowEqual } from 'fast-shallow-equal';\nimport useCustomCompareEffect from './useCustomCompareEffect';\nvar isPrimitive = function (val) { return val !== Object(val); };\nvar shallowEqualDepsList = function (prevDeps, nextDeps) {\n    return prevDeps.every(function (dep, index) { return isShallowEqual(dep, nextDeps[index]); });\n};\nvar useShallowCompareEffect = function (effect, deps) {\n    if (process.env.NODE_ENV !== 'production') {\n        if (!(deps instanceof Array) || !deps.length) {\n            console.warn('`useShallowCompareEffect` should not be used with no dependencies. Use React.useEffect instead.');\n        }\n        if (deps.every(isPrimitive)) {\n            console.warn('`useShallowCompareEffect` should not be used with dependencies that are all primitive values. Use React.useEffect instead.');\n        }\n    }\n    useCustomCompareEffect(effect, deps, shallowEqualDepsList);\n};\nexport default useShallowCompareEffect;\n", "import { __spreadArrays } from \"tslib\";\nimport * as React from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar useState = React.useState, useEffect = React.useEffect, useRef = React.useRef;\nvar DRAF = function (callback) { return setTimeout(callback, 35); };\nvar useSize = function (element, _a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.width, width = _c === void 0 ? Infinity : _c, _d = _b.height, height = _d === void 0 ? Infinity : _d;\n    if (!isBrowser) {\n        return [\n            typeof element === 'function' ? element({ width: width, height: height }) : element,\n            { width: width, height: height },\n        ];\n    }\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var _e = useState({ width: width, height: height }), state = _e[0], setState = _e[1];\n    if (typeof element === 'function') {\n        element = element(state);\n    }\n    var style = element.props.style || {};\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var ref = useRef(null);\n    var window = null;\n    var setSize = function () {\n        var iframe = ref.current;\n        var size = iframe\n            ? {\n                width: iframe.offsetWidth,\n                height: iframe.offsetHeight,\n            }\n            : { width: width, height: height };\n        setState(size);\n    };\n    var onWindow = function (windowToListenOn) {\n        on(windowToListenOn, 'resize', setSize);\n        DRAF(setSize);\n    };\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useEffect(function () {\n        var iframe = ref.current;\n        if (!iframe) {\n            // iframe will be undefined if component is already unmounted\n            return;\n        }\n        if (iframe.contentWindow) {\n            window = iframe.contentWindow;\n            onWindow(window);\n        }\n        else {\n            var onLoad_1 = function () {\n                on(iframe, 'load', onLoad_1);\n                window = iframe.contentWindow;\n                onWindow(window);\n            };\n            off(iframe, 'load', onLoad_1);\n        }\n        return function () {\n            if (window && window.removeEventListener) {\n                off(window, 'resize', setSize);\n            }\n        };\n    }, []);\n    style.position = 'relative';\n    var sized = React.cloneElement.apply(React, __spreadArrays([element, { style: style }], __spreadArrays([\n        React.createElement('iframe', {\n            ref: ref,\n            style: {\n                background: 'transparent',\n                border: 'none',\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n                zIndex: -1,\n            },\n        })\n    ], React.Children.toArray(element.props.children))));\n    return [sized, state];\n};\nexport default useSize;\n", "import { useEffect, useRef } from 'react';\nimport { isBrowser, noop, off, on } from './misc/util';\nimport useMountedState from './useMountedState';\nimport useSetState from './useSetState';\nvar useSlider = function (ref, options) {\n    if (options === void 0) { options = {}; }\n    var isMounted = useMountedState();\n    var isSliding = useRef(false);\n    var valueRef = useRef(0);\n    var frame = useRef(0);\n    var _a = useSetState({\n        isSliding: false,\n        value: 0,\n    }), state = _a[0], setState = _a[1];\n    valueRef.current = state.value;\n    useEffect(function () {\n        if (isBrowser) {\n            var styles = options.styles === undefined ? true : options.styles;\n            var reverse_1 = options.reverse === undefined ? false : options.reverse;\n            if (ref.current && styles) {\n                ref.current.style.userSelect = 'none';\n            }\n            var startScrubbing_1 = function () {\n                if (!isSliding.current && isMounted()) {\n                    (options.onScrubStart || noop)();\n                    isSliding.current = true;\n                    setState({ isSliding: true });\n                    bindEvents_1();\n                }\n            };\n            var stopScrubbing_1 = function () {\n                if (isSliding.current && isMounted()) {\n                    (options.onScrubStop || noop)(valueRef.current);\n                    isSliding.current = false;\n                    setState({ isSliding: false });\n                    unbindEvents_1();\n                }\n            };\n            var onMouseDown_1 = function (event) {\n                startScrubbing_1();\n                onMouseMove_1(event);\n            };\n            var onMouseMove_1 = options.vertical\n                ? function (event) { return onScrub_1(event.clientY); }\n                : function (event) { return onScrub_1(event.clientX); };\n            var onTouchStart_1 = function (event) {\n                startScrubbing_1();\n                onTouchMove_1(event);\n            };\n            var onTouchMove_1 = options.vertical\n                ? function (event) { return onScrub_1(event.changedTouches[0].clientY); }\n                : function (event) { return onScrub_1(event.changedTouches[0].clientX); };\n            var bindEvents_1 = function () {\n                on(document, 'mousemove', onMouseMove_1);\n                on(document, 'mouseup', stopScrubbing_1);\n                on(document, 'touchmove', onTouchMove_1);\n                on(document, 'touchend', stopScrubbing_1);\n            };\n            var unbindEvents_1 = function () {\n                off(document, 'mousemove', onMouseMove_1);\n                off(document, 'mouseup', stopScrubbing_1);\n                off(document, 'touchmove', onTouchMove_1);\n                off(document, 'touchend', stopScrubbing_1);\n            };\n            var onScrub_1 = function (clientXY) {\n                cancelAnimationFrame(frame.current);\n                frame.current = requestAnimationFrame(function () {\n                    if (isMounted() && ref.current) {\n                        var rect = ref.current.getBoundingClientRect();\n                        var pos = options.vertical ? rect.top : rect.left;\n                        var length_1 = options.vertical ? rect.height : rect.width;\n                        // Prevent returning 0 when element is hidden by CSS\n                        if (!length_1) {\n                            return;\n                        }\n                        var value = (clientXY - pos) / length_1;\n                        if (value > 1) {\n                            value = 1;\n                        }\n                        else if (value < 0) {\n                            value = 0;\n                        }\n                        if (reverse_1) {\n                            value = 1 - value;\n                        }\n                        setState({\n                            value: value,\n                        });\n                        (options.onScrub || noop)(value);\n                    }\n                });\n            };\n            on(ref.current, 'mousedown', onMouseDown_1);\n            on(ref.current, 'touchstart', onTouchStart_1);\n            return function () {\n                off(ref.current, 'mousedown', onMouseDown_1);\n                off(ref.current, 'touchstart', onTouchStart_1);\n            };\n        }\n        else {\n            return undefined;\n        }\n    }, [ref, options.vertical]);\n    return state;\n};\nexport default useSlider;\n", "import { __assign } from \"tslib\";\nimport { useCallback, useEffect, useRef, useState } from 'react';\nvar Status;\n(function (Status) {\n    Status[Status[\"init\"] = 0] = \"init\";\n    Status[Status[\"play\"] = 1] = \"play\";\n    Status[Status[\"pause\"] = 2] = \"pause\";\n    Status[Status[\"end\"] = 3] = \"end\";\n})(Status || (Status = {}));\nvar useSpeech = function (text, options) {\n    var mounted = useRef(false);\n    var _a = useState(function () {\n        var _a = options.voice || {}, _b = _a.lang, lang = _b === void 0 ? 'default' : _b, _c = _a.name, name = _c === void 0 ? '' : _c;\n        return {\n            isPlaying: false,\n            status: Status[Status.init],\n            lang: options.lang || 'default',\n            voiceInfo: { lang: lang, name: name },\n            rate: options.rate || 1,\n            pitch: options.pitch || 1,\n            volume: options.volume || 1,\n        };\n    }), state = _a[0], setState = _a[1];\n    var handlePlay = useCallback(function () {\n        if (!mounted.current) {\n            return;\n        }\n        setState(function (preState) {\n            return __assign(__assign({}, preState), { isPlaying: true, status: Status[Status.play] });\n        });\n    }, []);\n    var handlePause = useCallback(function () {\n        if (!mounted.current) {\n            return;\n        }\n        setState(function (preState) {\n            return __assign(__assign({}, preState), { isPlaying: false, status: Status[Status.pause] });\n        });\n    }, []);\n    var handleEnd = useCallback(function () {\n        if (!mounted.current) {\n            return;\n        }\n        setState(function (preState) {\n            return __assign(__assign({}, preState), { isPlaying: false, status: Status[Status.end] });\n        });\n    }, []);\n    useEffect(function () {\n        mounted.current = true;\n        var utterance = new SpeechSynthesisUtterance(text);\n        options.lang && (utterance.lang = options.lang);\n        options.voice && (utterance.voice = options.voice);\n        utterance.rate = options.rate || 1;\n        utterance.pitch = options.pitch || 1;\n        utterance.volume = options.volume || 1;\n        utterance.onstart = handlePlay;\n        utterance.onpause = handlePause;\n        utterance.onresume = handlePlay;\n        utterance.onend = handleEnd;\n        window.speechSynthesis.speak(utterance);\n        return function () {\n            mounted.current = false;\n        };\n    }, []);\n    return state;\n};\nexport default useSpeech;\n", "import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nimport { resolveHookState } from './misc/hookState';\nexport function useStateWithHistory(initialState, capacity, initialHistory) {\n    if (capacity === void 0) { capacity = 10; }\n    if (capacity < 1) {\n        throw new Error(\"Capacity has to be greater than 1, got '\" + capacity + \"'\");\n    }\n    var isFirstMount = useFirstMountState();\n    var _a = useState(initialState), state = _a[0], innerSetState = _a[1];\n    var history = useRef((initialHistory !== null && initialHistory !== void 0 ? initialHistory : []));\n    var historyPosition = useRef(0);\n    // do the states manipulation only on first mount, no sense to load re-renders with useless calculations\n    if (isFirstMount) {\n        if (history.current.length) {\n            // if last element of history !== initial - push initial to history\n            if (history.current[history.current.length - 1] !== initialState) {\n                history.current.push(initialState);\n            }\n            // if initial history bigger that capacity - crop the first elements out\n            if (history.current.length > capacity) {\n                history.current = history.current.slice(history.current.length - capacity);\n            }\n        }\n        else {\n            // initiate the history with initial state\n            history.current.push(initialState);\n        }\n        historyPosition.current = history.current.length && history.current.length - 1;\n    }\n    var setState = useCallback(function (newState) {\n        innerSetState(function (currentState) {\n            newState = resolveHookState(newState, currentState);\n            // is state has changed\n            if (newState !== currentState) {\n                // if current position is not the last - pop element to the right\n                if (historyPosition.current < history.current.length - 1) {\n                    history.current = history.current.slice(0, historyPosition.current + 1);\n                }\n                historyPosition.current = history.current.push(newState) - 1;\n                // if capacity is reached - shift first elements\n                if (history.current.length > capacity) {\n                    history.current = history.current.slice(history.current.length - capacity);\n                }\n            }\n            return newState;\n        });\n    }, [state, capacity]);\n    var historyState = useMemo(function () { return ({\n        history: history.current,\n        position: historyPosition.current,\n        capacity: capacity,\n        back: function (amount) {\n            if (amount === void 0) { amount = 1; }\n            // don't do anything if we already at the left border\n            if (!historyPosition.current) {\n                return;\n            }\n            innerSetState(function () {\n                historyPosition.current -= Math.min(amount, historyPosition.current);\n                return history.current[historyPosition.current];\n            });\n        },\n        forward: function (amount) {\n            if (amount === void 0) { amount = 1; }\n            // don't do anything if we already at the right border\n            if (historyPosition.current === history.current.length - 1) {\n                return;\n            }\n            innerSetState(function () {\n                historyPosition.current = Math.min(historyPosition.current + amount, history.current.length - 1);\n                return history.current[historyPosition.current];\n            });\n        },\n        go: function (position) {\n            if (position === historyPosition.current) {\n                return;\n            }\n            innerSetState(function () {\n                historyPosition.current =\n                    position < 0\n                        ? Math.max(history.current.length + position, 0)\n                        : Math.min(history.current.length - 1, position);\n                return history.current[historyPosition.current];\n            });\n        },\n    }); }, [state]);\n    return [state, setState, historyState];\n}\n", "import { __assign } from \"tslib\";\nimport { useMemo, useRef } from 'react';\nimport useMountedState from './useMountedState';\nimport useUpdate from './useUpdate';\nimport useUpdateEffect from './useUpdateEffect';\nexport default function useStateList(stateSet) {\n    if (stateSet === void 0) { stateSet = []; }\n    var isMounted = useMountedState();\n    var update = useUpdate();\n    var index = useRef(0);\n    // If new state list is shorter that before - switch to the last element\n    useUpdateEffect(function () {\n        if (stateSet.length <= index.current) {\n            index.current = stateSet.length - 1;\n            update();\n        }\n    }, [stateSet.length]);\n    var actions = useMemo(function () { return ({\n        next: function () { return actions.setStateAt(index.current + 1); },\n        prev: function () { return actions.setStateAt(index.current - 1); },\n        setStateAt: function (newIndex) {\n            // do nothing on unmounted component\n            if (!isMounted())\n                return;\n            // do nothing on empty states list\n            if (!stateSet.length)\n                return;\n            // in case new index is equal current - do nothing\n            if (newIndex === index.current)\n                return;\n            // it gives the ability to travel through the left and right borders.\n            // 4ex: if list contains 5 elements, attempt to set index 9 will bring use to 5th element\n            // in case of negative index it will start counting from the right, so -17 will bring us to 4th element\n            index.current =\n                newIndex >= 0\n                    ? newIndex % stateSet.length\n                    : stateSet.length + (newIndex % stateSet.length);\n            update();\n        },\n        setState: function (state) {\n            // do nothing on unmounted component\n            if (!isMounted())\n                return;\n            var newIndex = stateSet.length ? stateSet.indexOf(state) : -1;\n            if (newIndex === -1) {\n                throw new Error(\"State '\" + state + \"' is not a valid state (does not exist in state list)\");\n            }\n            index.current = newIndex;\n            update();\n        },\n    }); }, [stateSet]);\n    return __assign({ state: stateSet[index.current], currentIndex: index.current, isFirst: index.current === 0, isLast: index.current === stateSet.length - 1 }, actions);\n}\n", "import { useEffect, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useThrottle = function (value, ms) {\n    if (ms === void 0) { ms = 200; }\n    var _a = useState(value), state = _a[0], setState = _a[1];\n    var timeout = useRef();\n    var nextValue = useRef(null);\n    var hasNextValue = useRef(0);\n    useEffect(function () {\n        if (!timeout.current) {\n            setState(value);\n            var timeoutCallback_1 = function () {\n                if (hasNextValue.current) {\n                    hasNextValue.current = false;\n                    setState(nextValue.current);\n                    timeout.current = setTimeout(timeoutCallback_1, ms);\n                }\n                else {\n                    timeout.current = undefined;\n                }\n            };\n            timeout.current = setTimeout(timeoutCallback_1, ms);\n        }\n        else {\n            nextValue.current = value;\n            hasNextValue.current = true;\n        }\n    }, [value]);\n    useUnmount(function () {\n        timeout.current && clearTimeout(timeout.current);\n    });\n    return state;\n};\nexport default useThrottle;\n", "import { useEffect, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useThrottleFn = function (fn, ms, args) {\n    if (ms === void 0) { ms = 200; }\n    var _a = useState(null), state = _a[0], setState = _a[1];\n    var timeout = useRef();\n    var nextArgs = useRef();\n    useEffect(function () {\n        if (!timeout.current) {\n            setState(fn.apply(void 0, args));\n            var timeoutCallback_1 = function () {\n                if (nextArgs.current) {\n                    setState(fn.apply(void 0, nextArgs.current));\n                    nextArgs.current = undefined;\n                    timeout.current = setTimeout(timeoutCallback_1, ms);\n                }\n                else {\n                    timeout.current = undefined;\n                }\n            };\n            timeout.current = setTimeout(timeoutCallback_1, ms);\n        }\n        else {\n            nextArgs.current = args;\n        }\n    }, args);\n    useUnmount(function () {\n        timeout.current && clearTimeout(timeout.current);\n    });\n    return state;\n};\nexport default useThrottleFn;\n", "import { useEffect, useRef } from 'react';\nvar DEFAULT_USE_TITLE_OPTIONS = {\n    restoreOnUnmount: false,\n};\nfunction useTitle(title, options) {\n    if (options === void 0) { options = DEFAULT_USE_TITLE_OPTIONS; }\n    var prevTitleRef = useRef(document.title);\n    if (document.title !== title)\n        document.title = title;\n    useEffect(function () {\n        if (options && options.restoreOnUnmount) {\n            return function () {\n                document.title = prevTitleRef.current;\n            };\n        }\n        else {\n            return;\n        }\n    }, []);\n}\nexport default typeof document !== 'undefined' ? useTitle : function (_title) { };\n", "import { easing } from 'ts-easing';\nimport useRaf from './useRaf';\nvar useTween = function (easingName, ms, delay) {\n    if (easingName === void 0) { easingName = 'inCirc'; }\n    if (ms === void 0) { ms = 200; }\n    if (delay === void 0) { delay = 0; }\n    var fn = easing[easingName];\n    var t = useRaf(ms, delay);\n    if (process.env.NODE_ENV !== 'production') {\n        if (typeof fn !== 'function') {\n            console.error('useTween() expected \"easingName\" property to be a valid easing function name, like:' +\n                '\"' +\n                Object.keys(easing).join('\", \"') +\n                '\".');\n            console.trace();\n            return 0;\n        }\n    }\n    return fn(t);\n};\nexport default useTween;\n", "import { useMemo, useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmountPromise = function () {\n    var refUnmounted = useRef(false);\n    useEffectOnce(function () { return function () {\n        refUnmounted.current = true;\n    }; });\n    var wrapper = useMemo(function () {\n        var race = function (promise, onError) {\n            var newPromise = new Promise(function (resolve, reject) {\n                promise.then(function (result) {\n                    if (!refUnmounted.current)\n                        resolve(result);\n                }, function (error) {\n                    if (!refUnmounted.current)\n                        reject(error);\n                    else if (onError)\n                        onError(error);\n                    else\n                        console.error('useUnmountPromise', error);\n                });\n            });\n            return newPromise;\n        };\n        return race;\n    }, []);\n    return wrapper;\n};\nexport default useUnmountPromise;\n", "import { __assign } from \"tslib\";\nimport useList from './useList';\n/**\n * @deprecated Use `useList` hook's upsert action instead\n */\nexport default function useUpsert(predicate, initialList) {\n    if (initialList === void 0) { initialList = []; }\n    var _a = useList(initialList), list = _a[0], listActions = _a[1];\n    return [\n        list,\n        __assign(__assign({}, listActions), { upsert: function (newItem) {\n                listActions.upsert(predicate, newItem);\n            } }),\n    ];\n}\n", "import { useEffect } from 'react';\nimport { isNavigator, noop } from './misc/util';\nvar isVibrationApiSupported = isNavigator && 'vibrate' in navigator;\nfunction useVibrate(enabled, pattern, loop) {\n    if (enabled === void 0) { enabled = true; }\n    if (pattern === void 0) { pattern = [1000, 1000]; }\n    if (loop === void 0) { loop = true; }\n    useEffect(function () {\n        var interval;\n        if (enabled) {\n            navigator.vibrate(pattern);\n            if (loop) {\n                var duration = pattern instanceof Array ? pattern.reduce(function (a, b) { return a + b; }) : pattern;\n                interval = setInterval(function () {\n                    navigator.vibrate(pattern);\n                }, duration);\n            }\n        }\n        return function () {\n            if (enabled) {\n                navigator.vibrate(0);\n                if (loop) {\n                    clearInterval(interval);\n                }\n            }\n        };\n    }, [enabled]);\n}\nexport default isVibrationApiSupported ? useVibrate : noop;\n", "import createHTMLMediaHook from './factory/createHTMLMediaHook';\nvar useVideo = createHTMLMediaHook('video');\nexport default useVideo;\n", "import { useCallback, useEffect, useRef, useState } from 'react';\nexport default function useStateValidator(state, validator, initialState) {\n    if (initialState === void 0) { initialState = [undefined]; }\n    var validatorInner = useRef(validator);\n    var stateInner = useRef(state);\n    validatorInner.current = validator;\n    stateInner.current = state;\n    var _a = useState(initialState), validity = _a[0], setValidity = _a[1];\n    var validate = useCallback(function () {\n        if (validatorInner.current.length >= 2) {\n            validatorInner.current(stateInner.current, setValidity);\n        }\n        else {\n            setValidity(validatorInner.current(stateInner.current));\n        }\n    }, [setValidity]);\n    useEffect(function () {\n        validate();\n    }, [state]);\n    return [validity, validate];\n}\n", "import { scrollbarWidth } from '@xobotyi/scrollbar-width';\nimport { useEffect, useState } from 'react';\nexport function useScrollbarWidth() {\n    var _a = useState(scrollbarWidth()), sbw = _a[0], setSbw = _a[1];\n    // this needed to ensure the scrollbar width in case hook called before the DOM is ready\n    useEffect(function () {\n        if (typeof sbw !== 'undefined') {\n            return;\n        }\n        var raf = requestAnimationFrame(function () {\n            setSbw(scrollbarWidth());\n        });\n        return function () { return cancelAnimationFrame(raf); };\n    }, []);\n    return sbw;\n}\n", "import { useCallback, useEffect, useRef, useState } from 'react';\nexport function useMultiStateValidator(states, validator, initialValidity) {\n    if (initialValidity === void 0) { initialValidity = [undefined]; }\n    if (typeof states !== 'object') {\n        throw new Error('states expected to be an object or array, got ' + typeof states);\n    }\n    var validatorInner = useRef(validator);\n    var statesInner = useRef(states);\n    validatorInner.current = validator;\n    statesInner.current = states;\n    var _a = useState(initialValidity), validity = _a[0], setValidity = _a[1];\n    var validate = useCallback(function () {\n        if (validatorInner.current.length >= 2) {\n            validatorInner.current(statesInner.current, setValidity);\n        }\n        else {\n            setValidity(validatorInner.current(statesInner.current));\n        }\n    }, [setValidity]);\n    useEffect(function () {\n        validate();\n    }, Object.values(states));\n    return [validity, validate];\n}\n", "import { useEffect } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nimport useRafState from './useRafState';\nvar useWindowScroll = function () {\n    var _a = useRafState(function () { return ({\n        x: isBrowser ? window.pageXOffset : 0,\n        y: isBrowser ? window.pageYOffset : 0,\n    }); }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handler = function () {\n            setState(function (state) {\n                var pageXOffset = window.pageXOffset, pageYOffset = window.pageYOffset;\n                //Check state for change, return same state if no change happened to prevent rerender\n                //(see useState/setState documentation). useState/setState is used internally in useRafState/setState.\n                return state.x !== pageXOffset || state.y !== pageYOffset\n                    ? {\n                        x: pageXOffset,\n                        y: pageYOffset,\n                    }\n                    : state;\n            });\n        };\n        //We have to update window scroll at mount, before subscription.\n        //Window scroll may be changed between render and effect handler.\n        handler();\n        on(window, 'scroll', handler, {\n            capture: false,\n            passive: true,\n        });\n        return function () {\n            off(window, 'scroll', handler);\n        };\n    }, []);\n    return state;\n};\nexport default useWindowScroll;\n", "import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { isBrowser, off, on } from './misc/util';\nvar useWindowSize = function (initialWidth, initialHeight) {\n    if (initialWidth === void 0) { initialWidth = Infinity; }\n    if (initialHeight === void 0) { initialHeight = Infinity; }\n    var _a = useRafState({\n        width: isBrowser ? window.innerWidth : initialWidth,\n        height: isBrowser ? window.innerHeight : initialHeight,\n    }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        if (isBrowser) {\n            var handler_1 = function () {\n                setState({\n                    width: window.innerWidth,\n                    height: window.innerHeight,\n                });\n            };\n            on(window, 'resize', handler_1);\n            return function () {\n                off(window, 'resize', handler_1);\n            };\n        }\n    }, []);\n    return state;\n};\nexport default useWindowSize;\n", "import { useMemo, useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport { isBrowser, noop } from './misc/util';\nvar defaultState = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0,\n    bottom: 0,\n    right: 0,\n};\nfunction useMeasure() {\n    var _a = useState(null), element = _a[0], ref = _a[1];\n    var _b = useState(defaultState), rect = _b[0], setRect = _b[1];\n    var observer = useMemo(function () {\n        return new window.ResizeObserver(function (entries) {\n            if (entries[0]) {\n                var _a = entries[0].contentRect, x = _a.x, y = _a.y, width = _a.width, height = _a.height, top_1 = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n                setRect({ x: x, y: y, width: width, height: height, top: top_1, left: left, bottom: bottom, right: right });\n            }\n        });\n    }, []);\n    useIsomorphicLayoutEffect(function () {\n        if (!element)\n            return;\n        observer.observe(element);\n        return function () {\n            observer.disconnect();\n        };\n    }, [element]);\n    return [ref, rect];\n}\nexport default isBrowser && typeof window.ResizeObserver !== 'undefined'\n    ? useMeasure\n    : (function () { return [noop, defaultState]; });\n", "import { useEffect, useMemo, useState } from 'react';\nexport var ZoomState;\n(function (ZoomState) {\n    ZoomState[\"ZOOMING_IN\"] = \"ZOOMING_IN\";\n    ZoomState[\"ZOOMING_OUT\"] = \"ZOOMING_OUT\";\n})(ZoomState || (ZoomState = {}));\nvar usePinchZoom = function (ref) {\n    var cacheRef = useMemo(function () { return ({\n        evCache: [],\n        prevDiff: -1,\n    }); }, [ref.current]);\n    var _a = useState(), zoomingState = _a[0], setZoomingState = _a[1];\n    var pointermove_handler = function (ev) {\n        // This function implements a 2-pointer horizontal pinch/zoom gesture.\n        //\n        // If the distance between the two pointers has increased (zoom in),\n        // the target element's background is changed to 'pink' and if the\n        // distance is decreasing (zoom out), the color is changed to 'lightblue'.\n        //\n        // This function sets the target element's border to 'dashed' to visually\n        // indicate the pointer's target received a move event.\n        // Find this event in the cache and update its record with this event\n        for (var i = 0; i < cacheRef.evCache.length; i++) {\n            if (ev.pointerId == cacheRef.evCache[i].pointerId) {\n                cacheRef.evCache[i] = ev;\n                break;\n            }\n        }\n        // If two pointers are down, check for pinch gestures\n        if (cacheRef.evCache.length == 2) {\n            // console.log(prevDiff)\n            // Calculate the distance between the two pointers\n            var curDiff = Math.abs(cacheRef.evCache[0].clientX - cacheRef.evCache[1].clientX);\n            if (cacheRef.prevDiff > 0) {\n                if (curDiff > cacheRef.prevDiff) {\n                    // The distance between the two pointers has increased\n                    setZoomingState([ZoomState.ZOOMING_IN, curDiff]);\n                }\n                if (curDiff < cacheRef.prevDiff) {\n                    // The distance between the two pointers has decreased\n                    setZoomingState([ZoomState.ZOOMING_OUT, curDiff]);\n                }\n            }\n            // Cache the distance for the next move event\n            cacheRef.prevDiff = curDiff;\n        }\n    };\n    var pointerdown_handler = function (ev) {\n        // The pointerdown event signals the start of a touch interaction.\n        // This event is cached to support 2-finger gestures\n        cacheRef.evCache.push(ev);\n        // console.log('pointerDown', ev);\n    };\n    var pointerup_handler = function (ev) {\n        // Remove this pointer from the cache and reset the target's\n        // background and border\n        remove_event(ev);\n        // If the number of pointers down is less than two then reset diff tracker\n        if (cacheRef.evCache.length < 2) {\n            cacheRef.prevDiff = -1;\n        }\n    };\n    var remove_event = function (ev) {\n        // Remove this event from the target's cache\n        for (var i = 0; i < cacheRef.evCache.length; i++) {\n            if (cacheRef.evCache[i].pointerId == ev.pointerId) {\n                cacheRef.evCache.splice(i, 1);\n                break;\n            }\n        }\n    };\n    useEffect(function () {\n        if (ref === null || ref === void 0 ? void 0 : ref.current) {\n            ref.current.onpointerdown = pointerdown_handler;\n            ref.current.onpointermove = pointermove_handler;\n            ref.current.onpointerup = pointerup_handler;\n            ref.current.onpointercancel = pointerup_handler;\n            ref.current.onpointerout = pointerup_handler;\n            ref.current.onpointerleave = pointerup_handler;\n        }\n    }, [ref === null || ref === void 0 ? void 0 : ref.current]);\n    return zoomingState\n        ? { zoomingState: zoomingState[0], pinchState: zoomingState[1] }\n        : { zoomingState: null, pinchState: 0 };\n};\nexport default usePinchZoom;\n", "import { useRef } from 'react';\nexport function useRendersCount() {\n    return ++useRef(0).current;\n}\n", "import { __assign, __spreadArrays } from \"tslib\";\nimport { useCallback, useMemo, useState } from 'react';\nvar useSet = function (initialSet) {\n    if (initialSet === void 0) { initialSet = new Set(); }\n    var _a = useState(initialSet), set = _a[0], setSet = _a[1];\n    var stableActions = useMemo(function () {\n        var add = function (item) { return setSet(function (prevSet) { return new Set(__spreadArrays(Array.from(prevSet), [item])); }); };\n        var remove = function (item) {\n            return setSet(function (prevSet) { return new Set(Array.from(prevSet).filter(function (i) { return i !== item; })); });\n        };\n        var toggle = function (item) {\n            return setSet(function (prevSet) {\n                return prevSet.has(item)\n                    ? new Set(Array.from(prevSet).filter(function (i) { return i !== item; }))\n                    : new Set(__spreadArrays(Array.from(prevSet), [item]));\n            });\n        };\n        return { add: add, remove: remove, toggle: toggle, reset: function () { return setSet(initialSet); }, clear: function () { return setSet(new Set()); } };\n    }, [setSet]);\n    var utils = __assign({ has: useCallback(function (item) { return set.has(item); }, [set]) }, stableActions);\n    return [set, utils];\n};\nexport default useSet;\n", "import { useState } from 'react';\nimport { resolveHookState } from '../misc/hookState';\nimport useEffectOnce from '../useEffectOnce';\nimport useIsomorphicLayoutEffect from '../useIsomorphicLayoutEffect';\nexport function createGlobalState(initialState) {\n    var store = {\n        state: initialState instanceof Function ? initialState() : initialState,\n        setState: function (nextState) {\n            store.state = resolveHookState(nextState, store.state);\n            store.setters.forEach(function (setter) { return setter(store.state); });\n        },\n        setters: [],\n    };\n    return function () {\n        var _a = useState(store.state), globalState = _a[0], stateSetter = _a[1];\n        useEffectOnce(function () { return function () {\n            store.setters = store.setters.filter(function (setter) { return setter !== stateSetter; });\n        }; });\n        useIsomorphicLayoutEffect(function () {\n            if (!store.setters.includes(stateSetter)) {\n                store.setters.push(stateSetter);\n            }\n        });\n        return [globalState, store.setState];\n    };\n}\nexport default createGlobalState;\n", "import { useCallback, useState } from 'react';\nimport useLifecycles from './useLifecycles';\nimport { off, on } from './misc/util';\n/**\n * read and write url hash, response to url hash change\n */\nexport var useHash = function () {\n    var _a = useState(function () { return window.location.hash; }), hash = _a[0], setHash = _a[1];\n    var onHashChange = useCallback(function () {\n        setHash(window.location.hash);\n    }, []);\n    useLifecycles(function () {\n        on(window, 'hashchange', onHashChange);\n    }, function () {\n        off(window, 'hashchange', onHashChange);\n    });\n    var _setHash = useCallback(function (newHash) {\n        if (newHash !== hash) {\n            window.location.hash = newHash;\n        }\n    }, [hash]);\n    return [hash, _setHash];\n};\n", "var styles = {\"container\":\"TilesContainer-module_container__2hgud\",\"tile\":\"TilesContainer-module_tile__1R3DP\",\"dragging\":\"TilesContainer-module_dragging__2mUA2\",\"indicator\":\"TilesContainer-module_indicator__t_Y_b\"};\n\nexport default styles;\n//# sourceMappingURL=TilesContainer.module.css.js.map\n", "import { Ref, useCallback } from 'react';\n\n/**\n * returns a function that composes multiple refs together.\n * This can be very useful when you have more hooks that create a ref\n * that shall be given to a DOM component, but the component only accepts\n * one ref!\n *\n * Example:\n *\n * ```\n * import { useMeasure } from 'react-use';\n * import { useDrop } from 'react-dnd';\n *\n * const MyComponent = () => {\n *   const [measureRef, measure] = useMeasure<HTMLDivElement>();\n *   const [_, dropRef] = useDrop({accept: 'TILE'});\n *   const reactRef = useRef<HTMLDivElement>(null);\n *\n *   const composedRef = useComposeRef(measureRef, dropRef, reactRef)\n *\n *   return <div ref={composedRef}/>\n * }\n * ```\n * @param refs a list of refs that shall be composed together\n * @returns a new ref that shall be given to the component\n */\nexport const useComposeRef = <T extends HTMLElement>(...refs: Ref<T>[]) => {\n  return useCallback((el: T | null) => {\n    refs.forEach(ref => {\n      if (ref) {\n        if (typeof ref === 'function') ref(el);\n        //@ts-ignore\n        else ref.current = el;\n      }\n    });\n  }, refs);\n};\n", "export const jc = (...s: (string | null | undefined | false)[]) =>\n  s.filter(val => !!val).join(' ');\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\nfunction baseToNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  return +value;\n}\n\nexport default baseToNumber;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "import baseToNumber from './_baseToNumber.js';\nimport baseToString from './_baseToString.js';\n\n/**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\nfunction createMathOperation(operator, defaultValue) {\n  return function(value, other) {\n    var result;\n    if (value === undefined && other === undefined) {\n      return defaultValue;\n    }\n    if (value !== undefined) {\n      result = value;\n    }\n    if (other !== undefined) {\n      if (result === undefined) {\n        return other;\n      }\n      if (typeof value == 'string' || typeof other == 'string') {\n        value = baseToString(value);\n        other = baseToString(other);\n      } else {\n        value = baseToNumber(value);\n        other = baseToNumber(other);\n      }\n      result = operator(value, other);\n    }\n    return result;\n  };\n}\n\nexport default createMathOperation;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\nvar add = createMathOperation(function(augend, addend) {\n  return augend + addend;\n}, 0);\n\nexport default add;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nexport default toFinite;\n", "import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n", "import toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n *   console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n *   asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\nfunction after(n, func) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  n = toInteger(n);\n  return function() {\n    if (--n < 1) {\n      return func.apply(this, arguments);\n    }\n  };\n}\n\nexport default after;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import WeakMap from './_WeakMap.js';\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nexport default metaMap;\n", "import identity from './identity.js';\nimport metaMap from './_metaMap.js';\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n  metaMap.set(func, data);\n  return func;\n};\n\nexport default baseSetData;\n", "import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n", "import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n  return function() {\n    // Use a `switch` statement to work with class constructors. See\n    // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n    // for more details.\n    var args = arguments;\n    switch (args.length) {\n      case 0: return new Ctor;\n      case 1: return new Ctor(args[0]);\n      case 2: return new Ctor(args[0], args[1]);\n      case 3: return new Ctor(args[0], args[1], args[2]);\n      case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n      case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n      case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n      case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n    }\n    var thisBinding = baseCreate(Ctor.prototype),\n        result = Ctor.apply(thisBinding, args);\n\n    // Mimic the constructor's `return` behavior.\n    // See https://es5.github.io/#x13.2.2 for more details.\n    return isObject(result) ? result : thisBinding;\n  };\n}\n\nexport default createCtor;\n", "import createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n  var isBind = bitmask & WRAP_BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return fn.apply(isBind ? thisArg : this, arguments);\n  }\n  return wrapper;\n}\n\nexport default createBind;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersLength = holders.length,\n      leftIndex = -1,\n      leftLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(leftLength + rangeLength),\n      isUncurried = !isCurried;\n\n  while (++leftIndex < leftLength) {\n    result[leftIndex] = partials[leftIndex];\n  }\n  while (++argsIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[holders[argsIndex]] = args[argsIndex];\n    }\n  }\n  while (rangeLength--) {\n    result[leftIndex++] = args[argsIndex++];\n  }\n  return result;\n}\n\nexport default composeArgs;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersIndex = -1,\n      holdersLength = holders.length,\n      rightIndex = -1,\n      rightLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(rangeLength + rightLength),\n      isUncurried = !isCurried;\n\n  while (++argsIndex < rangeLength) {\n    result[argsIndex] = args[argsIndex];\n  }\n  var offset = argsIndex;\n  while (++rightIndex < rightLength) {\n    result[offset + rightIndex] = partials[rightIndex];\n  }\n  while (++holdersIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[offset + holders[holdersIndex]] = args[argsIndex++];\n    }\n  }\n  return result;\n}\n\nexport default composeArgsRight;\n", "/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n  var length = array.length,\n      result = 0;\n\n  while (length--) {\n    if (array[length] === placeholder) {\n      ++result;\n    }\n  }\n  return result;\n}\n\nexport default countHolders;\n", "/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n  // No operation performed.\n}\n\nexport default baseLodash;\n", "import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n  this.__wrapped__ = value;\n  this.__actions__ = [];\n  this.__dir__ = 1;\n  this.__filtered__ = false;\n  this.__iteratees__ = [];\n  this.__takeCount__ = MAX_ARRAY_LENGTH;\n  this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nexport default LazyWrapper;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nexport default noop;\n", "import metaMap from './_metaMap.js';\nimport noop from './noop.js';\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n  return metaMap.get(func);\n};\n\nexport default getData;\n", "/** Used to lookup unminified function names. */\nvar realNames = {};\n\nexport default realNames;\n", "import realNames from './_realNames.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n  var result = (func.name + ''),\n      array = realNames[result],\n      length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n  while (length--) {\n    var data = array[length],\n        otherFunc = data.func;\n    if (otherFunc == null || otherFunc == func) {\n      return data.name;\n    }\n  }\n  return result;\n}\n\nexport default getFuncName;\n", "import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n  this.__wrapped__ = value;\n  this.__actions__ = [];\n  this.__chain__ = !!chainAll;\n  this.__index__ = 0;\n  this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nexport default LodashWrapper;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport copyArray from './_copyArray.js';\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n  if (wrapper instanceof LazyWrapper) {\n    return wrapper.clone();\n  }\n  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n  result.__actions__ = copyArray(wrapper.__actions__);\n  result.__index__  = wrapper.__index__;\n  result.__values__ = wrapper.__values__;\n  return result;\n}\n\nexport default wrapperClone;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport baseLodash from './_baseLodash.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\nimport wrapperClone from './_wrapperClone.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n    if (value instanceof LodashWrapper) {\n      return value;\n    }\n    if (hasOwnProperty.call(value, '__wrapped__')) {\n      return wrapperClone(value);\n    }\n  }\n  return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nexport default lodash;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport lodash from './wrapperLodash.js';\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n *  else `false`.\n */\nfunction isLaziable(func) {\n  var funcName = getFuncName(func),\n      other = lodash[funcName];\n\n  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n    return false;\n  }\n  if (func === other) {\n    return true;\n  }\n  var data = getData(other);\n  return !!data && func === data[0];\n}\n\nexport default isLaziable;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n", "import baseSetData from './_baseSetData.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nexport default setData;\n", "/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n    reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n  var match = source.match(reWrapDetails);\n  return match ? match[1].split(reSplitDetails) : [];\n}\n\nexport default getWrapDetails;\n", "/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n  var length = details.length;\n  if (!length) {\n    return source;\n  }\n  var lastIndex = length - 1;\n  details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n  details = details.join(length > 2 ? ', ' : ' ');\n  return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nexport default insertWrapDetails;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n", "import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n", "import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nexport default baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default strictIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n", "import arrayEach from './_arrayEach.js';\nimport arrayIncludes from './_arrayIncludes.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_CURRY_RIGHT_FLAG = 16,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_PARTIAL_RIGHT_FLAG = 64,\n    WRAP_ARY_FLAG = 128,\n    WRAP_REARG_FLAG = 256,\n    WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n  ['ary', WRAP_ARY_FLAG],\n  ['bind', WRAP_BIND_FLAG],\n  ['bindKey', WRAP_BIND_KEY_FLAG],\n  ['curry', WRAP_CURRY_FLAG],\n  ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n  ['flip', WRAP_FLIP_FLAG],\n  ['partial', WRAP_PARTIAL_FLAG],\n  ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n  ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n  arrayEach(wrapFlags, function(pair) {\n    var value = '_.' + pair[0];\n    if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n      details.push(value);\n    }\n  });\n  return details.sort();\n}\n\nexport default updateWrapDetails;\n", "import getWrapDetails from './_getWrapDetails.js';\nimport insertWrapDetails from './_insertWrapDetails.js';\nimport setToString from './_setToString.js';\nimport updateWrapDetails from './_updateWrapDetails.js';\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n  var source = (reference + '');\n  return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nexport default setWrapToString;\n", "import isLaziable from './_isLaziable.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_BOUND_FLAG = 4,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n  var isCurry = bitmask & WRAP_CURRY_FLAG,\n      newHolders = isCurry ? holders : undefined,\n      newHoldersRight = isCurry ? undefined : holders,\n      newPartials = isCurry ? partials : undefined,\n      newPartialsRight = isCurry ? undefined : partials;\n\n  bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n  bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n  if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n    bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n  }\n  var newData = [\n    func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n    newHoldersRight, argPos, ary, arity\n  ];\n\n  var result = wrapFunc.apply(undefined, newData);\n  if (isLaziable(func)) {\n    setData(result, newData);\n  }\n  result.placeholder = placeholder;\n  return setWrapToString(result, func, bitmask);\n}\n\nexport default createRecurry;\n", "/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n  var object = func;\n  return object.placeholder;\n}\n\nexport default getHolder;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import copyArray from './_copyArray.js';\nimport isIndex from './_isIndex.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n  var arrLength = array.length,\n      length = nativeMin(indexes.length, arrLength),\n      oldArray = copyArray(array);\n\n  while (length--) {\n    var index = indexes[length];\n    array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n  }\n  return array;\n}\n\nexport default reorder;\n", "/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n  var index = -1,\n      length = array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (value === placeholder || value === PLACEHOLDER) {\n      array[index] = PLACEHOLDER;\n      result[resIndex++] = index;\n    }\n  }\n  return result;\n}\n\nexport default replaceHolders;\n", "import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport countHolders from './_countHolders.js';\nimport createCtor from './_createCtor.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport reorder from './_reorder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_CURRY_RIGHT_FLAG = 16,\n    WRAP_ARY_FLAG = 128,\n    WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n *  to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n  var isAry = bitmask & WRAP_ARY_FLAG,\n      isBind = bitmask & WRAP_BIND_FLAG,\n      isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n      isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n      isFlip = bitmask & WRAP_FLIP_FLAG,\n      Ctor = isBindKey ? undefined : createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length;\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    if (isCurried) {\n      var placeholder = getHolder(wrapper),\n          holdersCount = countHolders(args, placeholder);\n    }\n    if (partials) {\n      args = composeArgs(args, partials, holders, isCurried);\n    }\n    if (partialsRight) {\n      args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n    }\n    length -= holdersCount;\n    if (isCurried && length < arity) {\n      var newHolders = replaceHolders(args, placeholder);\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n        args, newHolders, argPos, ary, arity - length\n      );\n    }\n    var thisBinding = isBind ? thisArg : this,\n        fn = isBindKey ? thisBinding[func] : func;\n\n    length = args.length;\n    if (argPos) {\n      args = reorder(args, argPos);\n    } else if (isFlip && length > 1) {\n      args.reverse();\n    }\n    if (isAry && ary < length) {\n      args.length = ary;\n    }\n    if (this && this !== root && this instanceof wrapper) {\n      fn = Ctor || createCtor(fn);\n    }\n    return fn.apply(thisBinding, args);\n  }\n  return wrapper;\n}\n\nexport default createHybrid;\n", "import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport createHybrid from './_createHybrid.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n  var Ctor = createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length,\n        placeholder = getHolder(wrapper);\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n      ? []\n      : replaceHolders(args, placeholder);\n\n    length -= holders.length;\n    if (length < arity) {\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, undefined,\n        args, holders, undefined, undefined, arity - length);\n    }\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return apply(fn, this, args);\n  }\n  return wrapper;\n}\n\nexport default createCurry;\n", "import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n *  the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n  var isBind = bitmask & WRAP_BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var argsIndex = -1,\n        argsLength = arguments.length,\n        leftIndex = -1,\n        leftLength = partials.length,\n        args = Array(leftLength + argsLength),\n        fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n    while (++leftIndex < leftLength) {\n      args[leftIndex] = partials[leftIndex];\n    }\n    while (argsLength--) {\n      args[leftIndex++] = arguments[++argsIndex];\n    }\n    return apply(fn, isBind ? thisArg : this, args);\n  }\n  return wrapper;\n}\n\nexport default createPartial;\n", "import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_BOUND_FLAG = 4,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_ARY_FLAG = 128,\n    WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n  var bitmask = data[1],\n      srcBitmask = source[1],\n      newBitmask = bitmask | srcBitmask,\n      isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n  var isCombo =\n    ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n    ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n    ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n  // Exit early if metadata can't be merged.\n  if (!(isCommon || isCombo)) {\n    return data;\n  }\n  // Use source `thisArg` if available.\n  if (srcBitmask & WRAP_BIND_FLAG) {\n    data[2] = source[2];\n    // Set when currying a bound function.\n    newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n  }\n  // Compose partial arguments.\n  var value = source[3];\n  if (value) {\n    var partials = data[3];\n    data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n    data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n  }\n  // Compose partial right arguments.\n  value = source[5];\n  if (value) {\n    partials = data[5];\n    data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n    data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n  }\n  // Use source `argPos` if available.\n  value = source[7];\n  if (value) {\n    data[7] = value;\n  }\n  // Use source `ary` if it's smaller.\n  if (srcBitmask & WRAP_ARY_FLAG) {\n    data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n  }\n  // Use source `arity` if one is not provided.\n  if (data[9] == null) {\n    data[9] = source[9];\n  }\n  // Use source `func` and merge bitmasks.\n  data[0] = source[0];\n  data[1] = newBitmask;\n\n  return data;\n}\n\nexport default mergeData;\n", "import baseSetData from './_baseSetData.js';\nimport createBind from './_createBind.js';\nimport createCurry from './_createCurry.js';\nimport createHybrid from './_createHybrid.js';\nimport createPartial from './_createPartial.js';\nimport getData from './_getData.js';\nimport mergeData from './_mergeData.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_CURRY_RIGHT_FLAG = 16,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n *    1 - `_.bind`\n *    2 - `_.bindKey`\n *    4 - `_.curry` or `_.curryRight` of a bound function\n *    8 - `_.curry`\n *   16 - `_.curryRight`\n *   32 - `_.partial`\n *   64 - `_.partialRight`\n *  128 - `_.rearg`\n *  256 - `_.ary`\n *  512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n  var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n  if (!isBindKey && typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var length = partials ? partials.length : 0;\n  if (!length) {\n    bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n    partials = holders = undefined;\n  }\n  ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n  arity = arity === undefined ? arity : toInteger(arity);\n  length -= holders ? holders.length : 0;\n\n  if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n    var partialsRight = partials,\n        holdersRight = holders;\n\n    partials = holders = undefined;\n  }\n  var data = isBindKey ? undefined : getData(func);\n\n  var newData = [\n    func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n    argPos, ary, arity\n  ];\n\n  if (data) {\n    mergeData(newData, data);\n  }\n  func = newData[0];\n  bitmask = newData[1];\n  thisArg = newData[2];\n  partials = newData[3];\n  holders = newData[4];\n  arity = newData[9] = newData[9] === undefined\n    ? (isBindKey ? 0 : func.length)\n    : nativeMax(newData[9] - length, 0);\n\n  if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n    bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n  }\n  if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n    var result = createBind(func, bitmask, thisArg);\n  } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n    result = createCurry(func, bitmask, arity);\n  } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n    result = createPartial(func, bitmask, thisArg, partials);\n  } else {\n    result = createHybrid.apply(undefined, newData);\n  }\n  var setter = data ? baseSetData : setData;\n  return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nexport default createWrap;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n  n = guard ? undefined : n;\n  n = (func && n == null) ? func.length : n;\n  return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nexport default ary;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n", "import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n", "import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n", "import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\n", "import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "import assignValue from './_assignValue.js';\nimport copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport isArrayLike from './isArrayLike.js';\nimport isPrototype from './_isPrototype.js';\nimport keys from './keys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nexport default assign;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n  copyObject(source, keysIn(source), object);\n});\n\nexport default assignIn;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keysIn(source), object, customizer);\n});\n\nexport default assignInWith;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n/**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keys(source), object, customizer);\n});\n\nexport default assignWith;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nexport default stringToPath;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "import get from './get.js';\n\n/**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\nfunction baseAt(object, paths) {\n  var index = -1,\n      length = paths.length,\n      result = Array(length),\n      skip = object == null;\n\n  while (++index < length) {\n    result[index] = skip ? undefined : get(object, paths[index]);\n  }\n  return result;\n}\n\nexport default baseAt;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n", "import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n", "import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nexport default baseFlatten;\n", "import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n", "import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n", "import baseAt from './_baseAt.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\nvar at = flatRest(baseAt);\n\nexport default at;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n    errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n  if (!isObjectLike(value)) {\n    return false;\n  }\n  var tag = baseGetTag(value);\n  return tag == errorTag || tag == domExcTag ||\n    (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nexport default isError;\n", "import apply from './_apply.js';\nimport baseRest from './_baseRest.js';\nimport isError from './isError.js';\n\n/**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n *   return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n *   elements = [];\n * }\n */\nvar attempt = baseRest(function(func, args) {\n  try {\n    return apply(func, undefined, args);\n  } catch (e) {\n    return isError(e) ? e : new Error(e);\n  }\n});\n\nexport default attempt;\n", "import toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n  var result;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  n = toInteger(n);\n  return function() {\n    if (--n > 0) {\n      result = func.apply(this, arguments);\n    }\n    if (n <= 1) {\n      func = undefined;\n    }\n    return result;\n  };\n}\n\nexport default before;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n *   return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\nvar bind = baseRest(function(func, thisArg, partials) {\n  var bitmask = WRAP_BIND_FLAG;\n  if (partials.length) {\n    var holders = replaceHolders(partials, getHolder(bind));\n    bitmask |= WRAP_PARTIAL_FLAG;\n  }\n  return createWrap(func, bitmask, thisArg, partials, holders);\n});\n\n// Assign default placeholders.\nbind.placeholder = {};\n\nexport default bind;\n", "import arrayEach from './_arrayEach.js';\nimport baseAssignValue from './_baseAssignValue.js';\nimport bind from './bind.js';\nimport flatRest from './_flatRest.js';\nimport toKey from './_toKey.js';\n\n/**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n *   'label': 'docs',\n *   'click': function() {\n *     console.log('clicked ' + this.label);\n *   }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\nvar bindAll = flatRest(function(object, methodNames) {\n  arrayEach(methodNames, function(key) {\n    key = toKey(key);\n    baseAssignValue(object, key, bind(object[key], object));\n  });\n  return object;\n});\n\nexport default bindAll;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n *   'user': 'fred',\n *   'greet': function(greeting, punctuation) {\n *     return greeting + ' ' + this.user + punctuation;\n *   }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n *   return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\nvar bindKey = baseRest(function(object, key, partials) {\n  var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n  if (partials.length) {\n    var holders = replaceHolders(partials, getHolder(bindKey));\n    bitmask |= WRAP_PARTIAL_FLAG;\n  }\n  return createWrap(key, bitmask, object, partials, holders);\n});\n\n// Assign default placeholders.\nbindKey.placeholder = {};\n\nexport default bindKey;\n", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n", "import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n", "import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n", "import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n", "import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n", "/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n", "import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n", "/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n", "/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n", "import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n", "import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n", "import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n", "import isArray from './isArray.js';\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n  if (!arguments.length) {\n    return [];\n  }\n  var value = arguments[0];\n  return isArray(value) ? value : [value];\n}\n\nexport default castArray;\n", "import root from './_root.js';\nimport toInteger from './toInteger.js';\nimport toNumber from './toNumber.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n    nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n  var func = Math[methodName];\n  return function(number, precision) {\n    number = toNumber(number);\n    precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n    if (precision && nativeIsFinite(number)) {\n      // Shift with exponential notation to avoid floating-point issues.\n      // See [MDN](https://mdn.io/round#Examples) for more details.\n      var pair = (toString(number) + 'e').split('e'),\n          value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n      pair = (toString(value) + 'e').split('e');\n      return +(pair[0] + 'e' + (+pair[1] - precision));\n    }\n    return func(number);\n  };\n}\n\nexport default createRound;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\nvar ceil = createRound('ceil');\n\nexport default ceil;\n", "import lodash from './wrapperLodash.js';\n\n/**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36 },\n *   { 'user': 'fred',    'age': 40 },\n *   { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n *   .chain(users)\n *   .sortBy('age')\n *   .map(function(o) {\n *     return o.user + ' is ' + o.age;\n *   })\n *   .head()\n *   .value();\n * // => 'pebbles is 1'\n */\nfunction chain(value) {\n  var result = lodash(value);\n  result.__chain__ = true;\n  return result;\n}\n\nexport default chain;\n", "import baseSlice from './_baseSlice.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n  if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n    size = 1;\n  } else {\n    size = nativeMax(toInteger(size), 0);\n  }\n  var length = array == null ? 0 : array.length;\n  if (!length || size < 1) {\n    return [];\n  }\n  var index = 0,\n      resIndex = 0,\n      result = Array(nativeCeil(length / size));\n\n  while (index < length) {\n    result[resIndex++] = baseSlice(array, index, (index += size));\n  }\n  return result;\n}\n\nexport default chunk;\n", "/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n  if (number === number) {\n    if (upper !== undefined) {\n      number = number <= upper ? number : upper;\n    }\n    if (lower !== undefined) {\n      number = number >= lower ? number : lower;\n    }\n  }\n  return number;\n}\n\nexport default baseClamp;\n", "import baseClamp from './_baseClamp.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n  if (upper === undefined) {\n    upper = lower;\n    lower = undefined;\n  }\n  if (upper !== undefined) {\n    upper = toNumber(upper);\n    upper = upper === upper ? upper : 0;\n  }\n  if (lower !== undefined) {\n    lower = toNumber(lower);\n    lower = lower === lower ? lower : 0;\n  }\n  return baseClamp(toNumber(number), lower, upper);\n}\n\nexport default clamp;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n", "import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n", "import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n", "import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n", "import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n", "import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n", "import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n", "import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n", "import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n  return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n *   if (_.isElement(value)) {\n *     return value.cloneNode(true);\n *   }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n *   if (_.isElement(value)) {\n *     return value.cloneNode(false);\n *   }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\nfunction cloneWith(value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneWith;\n", "import LodashWrapper from './_LodashWrapper.js';\n\n/**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\nfunction wrapperCommit() {\n  return new LodashWrapper(this.value(), this.__chain__);\n}\n\nexport default wrapperCommit;\n", "/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (value) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default compact;\n", "import arrayPush from './_arrayPush.js';\nimport baseFlatten from './_baseFlatten.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n  var length = arguments.length;\n  if (!length) {\n    return [];\n  }\n  var args = Array(length - 1),\n      array = arguments[0],\n      index = length;\n\n  while (index--) {\n    args[index - 1] = arguments[index];\n  }\n  return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nexport default concat;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nexport default baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nexport default baseIteratee;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n *   [_.stubTrue,                      _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\nfunction cond(pairs) {\n  var length = pairs == null ? 0 : pairs.length,\n      toIteratee = baseIteratee;\n\n  pairs = !length ? [] : arrayMap(pairs, function(pair) {\n    if (typeof pair[1] != 'function') {\n      throw new TypeError(FUNC_ERROR_TEXT);\n    }\n    return [toIteratee(pair[0]), pair[1]];\n  });\n\n  return baseRest(function(args) {\n    var index = -1;\n    while (++index < length) {\n      var pair = pairs[index];\n      if (apply(pair[0], this, args)) {\n        return apply(pair[1], this, args);\n      }\n    }\n  });\n}\n\nexport default cond;\n", "/**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\nfunction baseConformsTo(object, source, props) {\n  var length = props.length;\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (length--) {\n    var key = props[length],\n        predicate = source[key],\n        value = object[key];\n\n    if ((value === undefined && !(key in object)) || !predicate(value)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default baseConformsTo;\n", "import baseConformsTo from './_baseConformsTo.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseConforms(source) {\n  var props = keys(source);\n  return function(object) {\n    return baseConformsTo(object, source, props);\n  };\n}\n\nexport default baseConforms;\n", "import baseClone from './_baseClone.js';\nimport baseConforms from './_baseConforms.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n *   { 'a': 2, 'b': 1 },\n *   { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\nfunction conforms(source) {\n  return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nexport default conforms;\n", "import baseConformsTo from './_baseConformsTo.js';\nimport keys from './keys.js';\n\n/**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\nfunction conformsTo(object, source) {\n  return source == null || baseConformsTo(object, source, keys(source));\n}\n\nexport default conformsTo;\n", "/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nexport default arrayAggregator;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nexport default createBaseEach;\n", "import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n", "import baseEach from './_baseEach.js';\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nexport default baseAggregator;\n", "import arrayAggregator from './_arrayAggregator.js';\nimport baseAggregator from './_baseAggregator.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nexport default createAggregator;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\nvar countBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    ++result[key];\n  } else {\n    baseAssignValue(result, key, 1);\n  }\n});\n\nexport default countBy;\n", "import baseAssign from './_baseAssign.js';\nimport baseCreate from './_baseCreate.js';\n\n/**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n *   this.x = 0;\n *   this.y = 0;\n * }\n *\n * function Circle() {\n *   Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n *   'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\nfunction create(prototype, properties) {\n  var result = baseCreate(prototype);\n  return properties == null ? result : baseAssign(result, properties);\n}\n\nexport default create;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n *   return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n  arity = guard ? undefined : arity;\n  var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n  result.placeholder = curry.placeholder;\n  return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nexport default curry;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_RIGHT_FLAG = 16;\n\n/**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n *   return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\nfunction curryRight(func, arity, guard) {\n  arity = guard ? undefined : arity;\n  var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n  result.placeholder = curryRight.placeholder;\n  return result;\n}\n\n// Assign default placeholders.\ncurryRight.placeholder = {};\n\nexport default curryRight;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n", "import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n", "/**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\nfunction defaultTo(value, defaultValue) {\n  return (value == null || value !== value) ? defaultValue : value;\n}\n\nexport default defaultTo;\n", "import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n  object = Object(object);\n\n  var index = -1;\n  var length = sources.length;\n  var guard = length > 2 ? sources[2] : undefined;\n\n  if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n    length = 1;\n  }\n\n  while (++index < length) {\n    var source = sources[index];\n    var props = keysIn(source);\n    var propsIndex = -1;\n    var propsLength = props.length;\n\n    while (++propsIndex < propsLength) {\n      var key = props[propsIndex];\n      var value = object[key];\n\n      if (value === undefined ||\n          (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        object[key] = source[key];\n      }\n    }\n  }\n\n  return object;\n});\n\nexport default defaults;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n", "import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n", "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n", "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n", "import baseMerge from './_baseMerge.js';\nimport isObject from './isObject.js';\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n  if (isObject(objValue) && isObject(srcValue)) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, objValue);\n    baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n    stack['delete'](srcValue);\n  }\n  return objValue;\n}\n\nexport default customDefaultsMerge;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   if (_.isArray(objValue)) {\n *     return objValue.concat(srcValue);\n *   }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n  baseMerge(object, source, srcIndex, customizer);\n});\n\nexport default mergeWith;\n", "import apply from './_apply.js';\nimport baseRest from './_baseRest.js';\nimport customDefaultsMerge from './_customDefaultsMerge.js';\nimport mergeWith from './mergeWith.js';\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n  args.push(undefined, customDefaultsMerge);\n  return apply(mergeWith, undefined, args);\n});\n\nexport default defaultsDeep;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nexport default baseDelay;\n", "import baseDelay from './_baseDelay.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n *   console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\nvar defer = baseRest(function(func, args) {\n  return baseDelay(func, 1, args);\n});\n\nexport default defer;\n", "import baseDelay from './_baseDelay.js';\nimport baseRest from './_baseRest.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n *   console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\nvar delay = baseRest(function(func, wait, args) {\n  return baseDelay(func, toNumber(wait) || 0, args);\n});\n\nexport default delay;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arrayIncludesWith;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseDifference;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\n});\n\nexport default difference;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n  var iteratee = last(values);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n    : [];\n});\n\nexport default differenceBy;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\nvar differenceWith = baseRest(function(array, values) {\n  var comparator = last(values);\n  if (isArrayLikeObject(comparator)) {\n    comparator = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n    : [];\n});\n\nexport default differenceWith;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\nvar divide = createMathOperation(function(dividend, divisor) {\n  return dividend / divisor;\n}, 1);\n\nexport default divide;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction drop(array, n, guard) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default drop;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  n = length - n;\n  return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default dropRight;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseWhile(array, predicate, isDrop, fromRight) {\n  var length = array.length,\n      index = fromRight ? length : -1;\n\n  while ((fromRight ? index-- : ++index < length) &&\n    predicate(array[index], index, array)) {}\n\n  return isDrop\n    ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n    : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n}\n\nexport default baseWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropRightWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3), true, true)\n    : [];\n}\n\nexport default dropRightWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3), true)\n    : [];\n}\n\nexport default dropWhile;\n", "import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n  return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n", "import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n *   console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n  var func = isArray(collection) ? arrayEach : baseEach;\n  return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n", "/**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEachRight(array, iteratee) {\n  var length = array == null ? 0 : array.length;\n\n  while (length--) {\n    if (iteratee(array[length], length, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEachRight;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseForRight = createBaseFor(true);\n\nexport default baseForRight;\n", "import baseForRight from './_baseForRight.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwnRight(object, iteratee) {\n  return object && baseForRight(object, iteratee, keys);\n}\n\nexport default baseForOwnRight;\n", "import baseForOwnRight from './_baseForOwnRight.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEachRight = createBaseEach(baseForOwnRight, true);\n\nexport default baseEachRight;\n", "import arrayEachRight from './_arrayEachRight.js';\nimport baseEachRight from './_baseEachRight.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n *   console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\nfunction forEachRight(collection, iteratee) {\n  var func = isArray(collection) ? arrayEachRight : baseEachRight;\n  return func(collection, castFunction(iteratee));\n}\n\nexport default forEachRight;\n", "import baseClamp from './_baseClamp.js';\nimport baseToString from './_baseToString.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n *  else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\nfunction endsWith(string, target, position) {\n  string = toString(string);\n  target = baseToString(target);\n\n  var length = string.length;\n  position = position === undefined\n    ? length\n    : baseClamp(toInteger(position), 0, length);\n\n  var end = position;\n  position -= target.length;\n  return position >= 0 && string.slice(position, end) == target;\n}\n\nexport default endsWith;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\nfunction baseToPairs(object, props) {\n  return arrayMap(props, function(key) {\n    return [key, object[key]];\n  });\n}\n\nexport default baseToPairs;\n", "/**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\nfunction setToPairs(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = [value, value];\n  });\n  return result;\n}\n\nexport default setToPairs;\n", "import baseToPairs from './_baseToPairs.js';\nimport getTag from './_getTag.js';\nimport mapToArray from './_mapToArray.js';\nimport setToPairs from './_setToPairs.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\nfunction createToPairs(keysFunc) {\n  return function(object) {\n    var tag = getTag(object);\n    if (tag == mapTag) {\n      return mapToArray(object);\n    }\n    if (tag == setTag) {\n      return setToPairs(object);\n    }\n    return baseToPairs(object, keysFunc(object));\n  };\n}\n\nexport default createToPairs;\n", "import createToPairs from './_createToPairs.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nvar toPairs = createToPairs(keys);\n\nexport default toPairs;\n", "import createToPairs from './_createToPairs.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\nvar toPairsIn = createToPairs(keysIn);\n\nexport default toPairsIn;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;'\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nexport default escapeHtmlChar;\n", "import escapeHtmlChar from './_escapeHtmlChar.js';\nimport toString from './toString.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n    reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\nfunction escape(string) {\n  string = toString(string);\n  return (string && reHasUnescapedHtml.test(string))\n    ? string.replace(reUnescapedHtml, escapeHtmlChar)\n    : string;\n}\n\nexport default escape;\n", "import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, '\\\\$&')\n    : string;\n}\n\nexport default escapeRegExp;\n", "/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`.\n */\nfunction arrayEvery(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (!predicate(array[index], index, array)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default arrayEvery;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`\n */\nfunction baseEvery(collection, predicate) {\n  var result = true;\n  baseEach(collection, function(value, index, collection) {\n    result = !!predicate(value, index, collection);\n    return result;\n  });\n  return result;\n}\n\nexport default baseEvery;\n", "import arrayEvery from './_arrayEvery.js';\nimport baseEvery from './_baseEvery.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': false },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n  var func = isArray(collection) ? arrayEvery : baseEvery;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default every;\n", "import baseClamp from './_baseClamp.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\nfunction toLength(value) {\n  return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n}\n\nexport default toLength;\n", "import toInteger from './toInteger.js';\nimport toLength from './toLength.js';\n\n/**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\nfunction baseFill(array, value, start, end) {\n  var length = array.length;\n\n  start = toInteger(start);\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = (end === undefined || end > length) ? length : toInteger(end);\n  if (end < 0) {\n    end += length;\n  }\n  end = start > end ? 0 : toLength(end);\n  while (start < end) {\n    array[start++] = value;\n  }\n  return array;\n}\n\nexport default baseFill;\n", "import baseFill from './_baseFill.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\nfunction fill(array, value, start, end) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n    start = 0;\n    end = length;\n  }\n  return baseFill(array, value, start, end);\n}\n\nexport default fill;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n  var result = [];\n  baseEach(collection, function(value, index, collection) {\n    if (predicate(value, index, collection)) {\n      result.push(value);\n    }\n  });\n  return result;\n}\n\nexport default baseFilter;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n", "import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n  return function(collection, predicate, fromIndex) {\n    var iterable = Object(collection);\n    if (!isArrayLike(collection)) {\n      var iteratee = baseIteratee(predicate, 3);\n      collection = keys(collection);\n      predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n    }\n    var index = findIndexFunc(collection, predicate, fromIndex);\n    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n  };\n}\n\nexport default createFind;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n", "import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': true },\n *   { 'user': 'fred',    'age': 40, 'active': false },\n *   { 'user': 'pebbles', 'age': 1,  'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n", "/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n  var result;\n  eachFunc(collection, function(value, key, collection) {\n    if (predicate(value, key, collection)) {\n      result = key;\n      return false;\n    }\n  });\n  return result;\n}\n\nexport default baseFindKey;\n", "import baseFindKey from './_baseFindKey.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n *  else `undefined`.\n * @example\n *\n * var users = {\n *   'barney':  { 'age': 36, 'active': true },\n *   'fred':    { 'age': 40, 'active': false },\n *   'pebbles': { 'age': 1,  'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\nfunction findKey(object, predicate) {\n  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);\n}\n\nexport default findKey;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = length - 1;\n  if (fromIndex !== undefined) {\n    index = toInteger(fromIndex);\n    index = fromIndex < 0\n      ? nativeMax(length + index, 0)\n      : nativeMin(index, length - 1);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nexport default findLastIndex;\n", "import createFind from './_createFind.js';\nimport findLastIndex from './findLastIndex.js';\n\n/**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n *   return n % 2 == 1;\n * });\n * // => 3\n */\nvar findLast = createFind(findLastIndex);\n\nexport default findLast;\n", "import baseFindKey from './_baseFindKey.js';\nimport baseForOwnRight from './_baseForOwnRight.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n *  else `undefined`.\n * @example\n *\n * var users = {\n *   'barney':  { 'age': 36, 'active': true },\n *   'fred':    { 'age': 40, 'active': false },\n *   'pebbles': { 'age': 1,  'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\nfunction findLastKey(object, predicate) {\n  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight);\n}\n\nexport default findLastKey;\n", "/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n  return (array && array.length) ? array[0] : undefined;\n}\n\nexport default head;\n", "import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nexport default baseMap;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n  return baseFlatten(map(collection, iteratee), 1);\n}\n\nexport default flatMap;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMapDeep(collection, iteratee) {\n  return baseFlatten(map(collection, iteratee), INFINITY);\n}\n\nexport default flatMapDeep;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\nimport toInteger from './toInteger.js';\n\n/**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\nfunction flatMapDepth(collection, iteratee, depth) {\n  depth = depth === undefined ? 1 : toInteger(depth);\n  return baseFlatten(map(collection, iteratee), depth);\n}\n\nexport default flatMapDepth;\n", "import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n", "import baseFlatten from './_baseFlatten.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\nfunction flattenDepth(array, depth) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  depth = depth === undefined ? 1 : toInteger(depth);\n  return baseFlatten(array, depth);\n}\n\nexport default flattenDepth;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n *   return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\nfunction flip(func) {\n  return createWrap(func, WRAP_FLIP_FLAG);\n}\n\nexport default flip;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\nvar floor = createRound('floor');\n\nexport default floor;\n", "import LodashWrapper from './_LodashWrapper.js';\nimport flatRest from './_flatRest.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport isArray from './isArray.js';\nimport isLaziable from './_isLaziable.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_ARY_FLAG = 128,\n    WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n  return flatRest(function(funcs) {\n    var length = funcs.length,\n        index = length,\n        prereq = LodashWrapper.prototype.thru;\n\n    if (fromRight) {\n      funcs.reverse();\n    }\n    while (index--) {\n      var func = funcs[index];\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n        var wrapper = new LodashWrapper([], true);\n      }\n    }\n    index = wrapper ? index : length;\n    while (++index < length) {\n      func = funcs[index];\n\n      var funcName = getFuncName(func),\n          data = funcName == 'wrapper' ? getData(func) : undefined;\n\n      if (data && isLaziable(data[0]) &&\n            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n            !data[4].length && data[9] == 1\n          ) {\n        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n      } else {\n        wrapper = (func.length == 1 && isLaziable(func))\n          ? wrapper[funcName]()\n          : wrapper.thru(func);\n      }\n    }\n    return function() {\n      var args = arguments,\n          value = args[0];\n\n      if (wrapper && args.length == 1 && isArray(value)) {\n        return wrapper.plant(value).value();\n      }\n      var index = 0,\n          result = length ? funcs[index].apply(this, args) : value;\n\n      while (++index < length) {\n        result = funcs[index].call(this, result);\n      }\n      return result;\n    };\n  });\n}\n\nexport default createFlow;\n", "import createFlow from './_createFlow.js';\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nexport default flow;\n", "import createFlow from './_createFlow.js';\n\n/**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flowRight = createFlow(true);\n\nexport default flowRight;\n", "import baseFor from './_baseFor.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n  return object == null\n    ? object\n    : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nexport default forIn;\n", "import baseForRight from './_baseForRight.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\nfunction forInRight(object, iteratee) {\n  return object == null\n    ? object\n    : baseForRight(object, castFunction(iteratee), keysIn);\n}\n\nexport default forInRight;\n", "import baseForOwn from './_baseForOwn.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n  return object && baseForOwn(object, castFunction(iteratee));\n}\n\nexport default forOwn;\n", "import baseForOwnRight from './_baseForOwnRight.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\nfunction forOwnRight(object, iteratee) {\n  return object && baseForOwnRight(object, castFunction(iteratee));\n}\n\nexport default forOwnRight;\n", "/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n  var index = -1,\n      length = pairs == null ? 0 : pairs.length,\n      result = {};\n\n  while (++index < length) {\n    var pair = pairs[index];\n    result[pair[0]] = pair[1];\n  }\n  return result;\n}\n\nexport default fromPairs;\n", "import arrayFilter from './_arrayFilter.js';\nimport isFunction from './isFunction.js';\n\n/**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\nfunction baseFunctions(object, props) {\n  return arrayFilter(props, function(key) {\n    return isFunction(object[key]);\n  });\n}\n\nexport default baseFunctions;\n", "import baseFunctions from './_baseFunctions.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n *   this.a = _.constant('a');\n *   this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\nfunction functions(object) {\n  return object == null ? [] : baseFunctions(object, keys(object));\n}\n\nexport default functions;\n", "import baseFunctions from './_baseFunctions.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n *   this.a = _.constant('a');\n *   this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\nfunction functionsIn(object) {\n  return object == null ? [] : baseFunctions(object, keysIn(object));\n}\n\nexport default functionsIn;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nexport default groupBy;\n", "/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n *  else `false`.\n */\nfunction baseGt(value, other) {\n  return value > other;\n}\n\nexport default baseGt;\n", "import toNumber from './toNumber.js';\n\n/**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\nfunction createRelationalOperation(operator) {\n  return function(value, other) {\n    if (!(typeof value == 'string' && typeof other == 'string')) {\n      value = toNumber(value);\n      other = toNumber(other);\n    }\n    return operator(value, other);\n  };\n}\n\nexport default createRelationalOperation;\n", "import baseGt from './_baseGt.js';\nimport createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n *  else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\nvar gt = createRelationalOperation(baseGt);\n\nexport default gt;\n", "import createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n *  `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\nvar gte = createRelationalOperation(function(value, other) {\n  return value >= other;\n});\n\nexport default gte;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n  return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n", "import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n  return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\nfunction baseInRange(number, start, end) {\n  return number >= nativeMin(start, end) && number < nativeMax(start, end);\n}\n\nexport default baseInRange;\n", "import baseInRange from './_baseInRange.js';\nimport toFinite from './toFinite.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\nfunction inRange(number, start, end) {\n  start = toFinite(start);\n  if (end === undefined) {\n    end = start;\n    start = 0;\n  } else {\n    end = toFinite(end);\n  }\n  number = toNumber(number);\n  return baseInRange(number, start, end);\n}\n\nexport default inRange;\n", "import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\nexport default baseValues;\n", "import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport toInteger from './toInteger.js';\nimport values from './values.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n  collection = isArrayLike(collection) ? collection : values(collection);\n  fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n  var length = collection.length;\n  if (fromIndex < 0) {\n    fromIndex = nativeMax(length + fromIndex, 0);\n  }\n  return isString(collection)\n    ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n    : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nexport default includes;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\nfunction indexOf(array, value, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseIndexOf(array, value, index);\n}\n\nexport default indexOf;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\nfunction initial(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseSlice(array, 0, -1) : [];\n}\n\nexport default initial;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseIntersection;\n", "import isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nexport default castArrayLikeObject;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n  var mapped = arrayMap(arrays, castArrayLikeObject);\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped)\n    : [];\n});\n\nexport default intersection;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\nvar intersectionBy = baseRest(function(arrays) {\n  var iteratee = last(arrays),\n      mapped = arrayMap(arrays, castArrayLikeObject);\n\n  if (iteratee === last(mapped)) {\n    iteratee = undefined;\n  } else {\n    mapped.pop();\n  }\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped, baseIteratee(iteratee, 2))\n    : [];\n});\n\nexport default intersectionBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\nvar intersectionWith = baseRest(function(arrays) {\n  var comparator = last(arrays),\n      mapped = arrayMap(arrays, castArrayLikeObject);\n\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  if (comparator) {\n    mapped.pop();\n  }\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped, undefined, comparator)\n    : [];\n});\n\nexport default intersectionWith;\n", "import baseForOwn from './_baseForOwn.js';\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n  baseForOwn(object, function(value, key, object) {\n    setter(accumulator, iteratee(value), key, object);\n  });\n  return accumulator;\n}\n\nexport default baseInverter;\n", "import baseInverter from './_baseInverter.js';\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n  return function(object, iteratee) {\n    return baseInverter(object, setter, toIteratee(iteratee), {});\n  };\n}\n\nexport default createInverter;\n", "import constant from './constant.js';\nimport createInverter from './_createInverter.js';\nimport identity from './identity.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  result[value] = key;\n}, constant(identity));\n\nexport default invert;\n", "import baseIteratee from './_baseIteratee.js';\nimport createInverter from './_createInverter.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n *   return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\nvar invertBy = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  if (hasOwnProperty.call(result, value)) {\n    result[value].push(key);\n  } else {\n    result[value] = [key];\n  }\n}, baseIteratee);\n\nexport default invertBy;\n", "import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n", "import apply from './_apply.js';\nimport castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\nfunction baseInvoke(object, path, args) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  var func = object == null ? object : object[toKey(last(path))];\n  return func == null ? undefined : apply(func, object, args);\n}\n\nexport default baseInvoke;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\nvar invoke = baseRest(baseInvoke);\n\nexport default invoke;\n", "import apply from './_apply.js';\nimport baseEach from './_baseEach.js';\nimport baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n *  the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\nvar invokeMap = baseRest(function(collection, path, args) {\n  var index = -1,\n      isFunc = typeof path == 'function',\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value) {\n    result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n  });\n  return result;\n});\n\nexport default invokeMap;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\n\n/**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\nfunction baseIsArrayBuffer(value) {\n  return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n}\n\nexport default baseIsArrayBuffer;\n", "import baseIsArrayBuffer from './_baseIsArrayBuffer.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer;\n\n/**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\nvar isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\nexport default isArrayBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nexport default isBoolean;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar dateTag = '[object Date]';\n\n/**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\nfunction baseIsDate(value) {\n  return isObjectLike(value) && baseGetTag(value) == dateTag;\n}\n\nexport default baseIsDate;\n", "import baseIsDate from './_baseIsDate.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsDate = nodeUtil && nodeUtil.isDate;\n\n/**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\nvar isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\nexport default isDate;\n", "import isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\nfunction isElement(value) {\n  return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nexport default isElement;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default isEmpty;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n *   return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n *   if (isGreeting(objValue) && isGreeting(othValue)) {\n *     return true;\n *   }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  var result = customizer ? customizer(value, other) : undefined;\n  return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n", "import root from './_root.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite;\n\n/**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\nfunction isFinite(value) {\n  return typeof value == 'number' && nativeIsFinite(value);\n}\n\nexport default isFinite;\n", "import toInteger from './toInteger.js';\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n  return typeof value == 'number' && value == toInteger(value);\n}\n\nexport default isInteger;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\n\n/**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\nfunction isMatch(object, source) {\n  return object === source || baseIsMatch(object, source, getMatchData(source));\n}\n\nexport default isMatch;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\n\n/**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n *   return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n *     return true;\n *   }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\nfunction isMatchWith(object, source, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseIsMatch(object, source, getMatchData(source), customizer);\n}\n\nexport default isMatchWith;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nexport default isNumber;\n", "import isNumber from './isNumber.js';\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n  // An `NaN` primitive is the only value that is not equal to itself.\n  // Perform the `toStringTag` check first to avoid errors with some\n  // ActiveX objects in IE.\n  return isNumber(value) && value != +value;\n}\n\nexport default isNaN;\n", "import coreJsData from './_coreJsData.js';\nimport isFunction from './isFunction.js';\nimport stubFalse from './stubFalse.js';\n\n/**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\nvar isMaskable = coreJsData ? isFunction : stubFalse;\n\nexport default isMaskable;\n", "import baseIsNative from './_baseIsNative.js';\nimport isMaskable from './_isMaskable.js';\n\n/** Error message constants. */\nvar CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.';\n\n/**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n  if (isMaskable(value)) {\n    throw new Error(CORE_ERROR_TEXT);\n  }\n  return baseIsNative(value);\n}\n\nexport default isNative;\n", "/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nexport default isNil;\n", "/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n  return value === null;\n}\n\nexport default isNull;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n  return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nexport default baseIsRegExp;\n", "import baseIsRegExp from './_baseIsRegExp.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nexport default isRegExp;\n", "import isInteger from './isInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\nfunction isSafeInteger(value) {\n  return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isSafeInteger;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nexport default isUndefined;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n  return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nexport default isWeakMap;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar weakSetTag = '[object WeakSet]';\n\n/**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\nfunction isWeakSet(value) {\n  return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n}\n\nexport default isWeakSet;\n", "import baseClone from './_baseClone.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n *     return func.test(string);\n *   };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n  return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nexport default iteratee;\n", "/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeJoin = arrayProto.join;\n\n/**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\nfunction join(array, separator) {\n  return array == null ? '' : nativeJoin.call(array, separator);\n}\n\nexport default join;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n  return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nexport default kebabCase;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n *   { 'dir': 'left', 'code': 97 },\n *   { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n *   return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n  baseAssignValue(result, key, value);\n});\n\nexport default keyBy;\n", "/**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictLastIndexOf(array, value, fromIndex) {\n  var index = fromIndex + 1;\n  while (index--) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return index;\n}\n\nexport default strictLastIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictLastIndexOf from './_strictLastIndexOf.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\nfunction lastIndexOf(array, value, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = length;\n  if (fromIndex !== undefined) {\n    index = toInteger(fromIndex);\n    index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n  }\n  return value === value\n    ? strictLastIndexOf(array, value, index)\n    : baseFindIndex(array, baseIsNaN, index, true);\n}\n\nexport default lastIndexOf;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\nvar lowerCase = createCompounder(function(result, word, index) {\n  return result + (index ? ' ' : '') + word.toLowerCase();\n});\n\nexport default lowerCase;\n", "import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\nvar lowerFirst = createCaseFirst('toLowerCase');\n\nexport default lowerFirst;\n", "/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n *  else `false`.\n */\nfunction baseLt(value, other) {\n  return value < other;\n}\n\nexport default baseLt;\n", "import baseLt from './_baseLt.js';\nimport createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n *  else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\nvar lt = createRelationalOperation(baseLt);\n\nexport default lt;\n", "import createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n *  `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\nvar lte = createRelationalOperation(function(value, other) {\n  return value <= other;\n});\n\nexport default lte;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n *   return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, iteratee(value, key, object), value);\n  });\n  return result;\n}\n\nexport default mapKeys;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n *   'fred':    { 'user': 'fred',    'age': 40 },\n *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, key, iteratee(value, key, object));\n  });\n  return result;\n}\n\nexport default mapValues;\n", "import baseClone from './_baseClone.js';\nimport baseMatches from './_baseMatches.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n *   { 'a': 1, 'b': 2, 'c': 3 },\n *   { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matches(source) {\n  return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nexport default matches;\n", "import baseClone from './_baseClone.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n *   { 'a': 1, 'b': 2, 'c': 3 },\n *   { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matchesProperty(path, srcValue) {\n  return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n}\n\nexport default matchesProperty;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n  var index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var value = array[index],\n        current = iteratee(value);\n\n    if (current != null && (computed === undefined\n          ? (current === current && !isSymbol(current))\n          : comparator(current, computed)\n        )) {\n      var computed = current,\n          result = value;\n    }\n  }\n  return result;\n}\n\nexport default baseExtremum;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseGt)\n    : undefined;\n}\n\nexport default max;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n    : undefined;\n}\n\nexport default maxBy;\n", "/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n  var result,\n      index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var current = iteratee(array[index]);\n    if (current !== undefined) {\n      result = result === undefined ? current : (result + current);\n    }\n  }\n  return result;\n}\n\nexport default baseSum;\n", "import baseSum from './_baseSum.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\nfunction baseMean(array, iteratee) {\n  var length = array == null ? 0 : array.length;\n  return length ? (baseSum(array, iteratee) / length) : NAN;\n}\n\nexport default baseMean;\n", "import baseMean from './_baseMean.js';\nimport identity from './identity.js';\n\n/**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\nfunction mean(array) {\n  return baseMean(array, identity);\n}\n\nexport default mean;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseMean from './_baseMean.js';\n\n/**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\nfunction meanBy(array, iteratee) {\n  return baseMean(array, baseIteratee(iteratee, 2));\n}\n\nexport default meanBy;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': _.constant(2) } },\n *   { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\nvar method = baseRest(function(path, args) {\n  return function(object) {\n    return baseInvoke(object, path, args);\n  };\n});\n\nexport default method;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n *     object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\nvar methodOf = baseRest(function(object, args) {\n  return function(path) {\n    return baseInvoke(object, path, args);\n  };\n});\n\nexport default methodOf;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseLt)\n    : undefined;\n}\n\nexport default min;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseLt from './_baseLt.js';\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n    : undefined;\n}\n\nexport default minBy;\n", "import arrayEach from './_arrayEach.js';\nimport arrayPush from './_arrayPush.js';\nimport baseFunctions from './_baseFunctions.js';\nimport copyArray from './_copyArray.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport keys from './keys.js';\n\n/**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n *   return _.filter(string, function(v) {\n *     return /[aeiou]/i.test(v);\n *   });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\nfunction mixin(object, source, options) {\n  var props = keys(source),\n      methodNames = baseFunctions(source, props);\n\n  var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n      isFunc = isFunction(object);\n\n  arrayEach(methodNames, function(methodName) {\n    var func = source[methodName];\n    object[methodName] = func;\n    if (isFunc) {\n      object.prototype[methodName] = function() {\n        var chainAll = this.__chain__;\n        if (chain || chainAll) {\n          var result = object(this.__wrapped__),\n              actions = result.__actions__ = copyArray(this.__actions__);\n\n          actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n          result.__chain__ = chainAll;\n          return result;\n        }\n        return func.apply(object, arrayPush([this.value()], arguments));\n      };\n    }\n  });\n\n  return object;\n}\n\nexport default mixin;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\nvar multiply = createMathOperation(function(multiplier, multiplicand) {\n  return multiplier * multiplicand;\n}, 1);\n\nexport default multiply;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n *   return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n  if (typeof predicate != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  return function() {\n    var args = arguments;\n    switch (args.length) {\n      case 0: return !predicate.call(this);\n      case 1: return !predicate.call(this, args[0]);\n      case 2: return !predicate.call(this, args[0], args[1]);\n      case 3: return !predicate.call(this, args[0], args[1], args[2]);\n    }\n    return !predicate.apply(this, args);\n  };\n}\n\nexport default negate;\n", "/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n  var data,\n      result = [];\n\n  while (!(data = iterator.next()).done) {\n    result.push(data.value);\n  }\n  return result;\n}\n\nexport default iteratorToArray;\n", "import Symbol from './_Symbol.js';\nimport copyArray from './_copyArray.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport iteratorToArray from './_iteratorToArray.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\nimport stringToArray from './_stringToArray.js';\nimport values from './values.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n  if (!value) {\n    return [];\n  }\n  if (isArrayLike(value)) {\n    return isString(value) ? stringToArray(value) : copyArray(value);\n  }\n  if (symIterator && value[symIterator]) {\n    return iteratorToArray(value[symIterator]());\n  }\n  var tag = getTag(value),\n      func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n  return func(value);\n}\n\nexport default toArray;\n", "import toArray from './toArray.js';\n\n/**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\nfunction wrapperNext() {\n  if (this.__values__ === undefined) {\n    this.__values__ = toArray(this.value());\n  }\n  var done = this.__index__ >= this.__values__.length,\n      value = done ? undefined : this.__values__[this.__index__++];\n\n  return { 'done': done, 'value': value };\n}\n\nexport default wrapperNext;\n", "import isIndex from './_isIndex.js';\n\n/**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\nfunction baseNth(array, n) {\n  var length = array.length;\n  if (!length) {\n    return;\n  }\n  n += n < 0 ? length : 0;\n  return isIndex(n, length) ? array[n] : undefined;\n}\n\nexport default baseNth;\n", "import baseNth from './_baseNth.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\nfunction nth(array, n) {\n  return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n}\n\nexport default nth;\n", "import baseNth from './_baseNth.js';\nimport baseRest from './_baseRest.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\nfunction nthArg(n) {\n  n = toInteger(n);\n  return baseRest(function(args) {\n    return baseNth(args, n);\n  });\n}\n\nexport default nthArg;\n", "import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n", "import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n", "import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nexport default omit;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nexport default basePickBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n  if (object == null) {\n    return {};\n  }\n  var props = arrayMap(getAllKeysIn(object), function(prop) {\n    return [prop];\n  });\n  predicate = baseIteratee(predicate);\n  return basePickBy(object, props, function(value, path) {\n    return predicate(value, path[0]);\n  });\n}\n\nexport default pickBy;\n", "import baseIteratee from './_baseIteratee.js';\nimport negate from './negate.js';\nimport pickBy from './pickBy.js';\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n  return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nexport default omitBy;\n", "import before from './before.js';\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n  return before(2, func);\n}\n\nexport default once;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nexport default baseSortBy;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nexport default compareAscending;\n", "import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nexport default compareMultiple;\n", "import arrayMap from './_arrayMap.js';\nimport baseGet from './_baseGet.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        }\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nexport default baseOrderBy;\n", "import baseOrderBy from './_baseOrderBy.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 34 },\n *   { 'user': 'fred',   'age': 40 },\n *   { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n  if (collection == null) {\n    return [];\n  }\n  if (!isArray(iteratees)) {\n    iteratees = iteratees == null ? [] : [iteratees];\n  }\n  orders = guard ? undefined : orders;\n  if (!isArray(orders)) {\n    orders = orders == null ? [] : [orders];\n  }\n  return baseOrderBy(collection, iteratees, orders);\n}\n\nexport default orderBy;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUnary from './_baseUnary.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\nfunction createOver(arrayFunc) {\n  return flatRest(function(iteratees) {\n    iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n    return baseRest(function(args) {\n      var thisArg = this;\n      return arrayFunc(iteratees, function(iteratee) {\n        return apply(iteratee, thisArg, args);\n      });\n    });\n  });\n}\n\nexport default createOver;\n", "import arrayMap from './_arrayMap.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\nvar over = createOver(arrayMap);\n\nexport default over;\n", "import baseRest from './_baseRest.js';\n\n/**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nvar castRest = baseRest;\n\nexport default castRest;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUnary from './_baseUnary.js';\nimport castRest from './_castRest.js';\nimport isArray from './isArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n *  The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n *   return n * 2;\n * }\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n *   return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\nvar overArgs = castRest(function(func, transforms) {\n  transforms = (transforms.length == 1 && isArray(transforms[0]))\n    ? arrayMap(transforms[0], baseUnary(baseIteratee))\n    : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee));\n\n  var funcsLength = transforms.length;\n  return baseRest(function(args) {\n    var index = -1,\n        length = nativeMin(args.length, funcsLength);\n\n    while (++index < length) {\n      args[index] = transforms[index].call(this, args[index]);\n    }\n    return apply(func, this, args);\n  });\n});\n\nexport default overArgs;\n", "import arrayEvery from './_arrayEvery.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n *  The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\nvar overEvery = createOver(arrayEvery);\n\nexport default overEvery;\n", "import arraySome from './_arraySome.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n *  The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\nvar overSome = createOver(arraySome);\n\nexport default overSome;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n  var result = '';\n  if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n    return result;\n  }\n  // Leverage the exponentiation by squaring algorithm for a faster repeat.\n  // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n  do {\n    if (n % 2) {\n      result += string;\n    }\n    n = nativeFloor(n / 2);\n    if (n) {\n      string += string;\n    }\n  } while (n);\n\n  return result;\n}\n\nexport default baseRepeat;\n", "import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n  var result = reUnicode.lastIndex = 0;\n  while (reUnicode.test(string)) {\n    ++result;\n  }\n  return result;\n}\n\nexport default unicodeSize;\n", "import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n  return hasUnicode(string)\n    ? unicodeSize(string)\n    : asciiSize(string);\n}\n\nexport default stringSize;\n", "import baseRepeat from './_baseRepeat.js';\nimport baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringSize from './_stringSize.js';\nimport stringToArray from './_stringToArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\n\n/**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\nfunction createPadding(length, chars) {\n  chars = chars === undefined ? ' ' : baseToString(chars);\n\n  var charsLength = chars.length;\n  if (charsLength < 2) {\n    return charsLength ? baseRepeat(chars, length) : chars;\n  }\n  var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n  return hasUnicode(chars)\n    ? castSlice(stringToArray(result), 0, length).join('')\n    : result.slice(0, length);\n}\n\nexport default createPadding;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeFloor = Math.floor;\n\n/**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => '  abc   '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\nfunction pad(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  if (!length || strLength >= length) {\n    return string;\n  }\n  var mid = (length - strLength) / 2;\n  return (\n    createPadding(nativeFloor(mid), chars) +\n    string +\n    createPadding(nativeCeil(mid), chars)\n  );\n}\n\nexport default pad;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc   '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\nfunction padEnd(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  return (length && strLength < length)\n    ? (string + createPadding(length - strLength, chars))\n    : string;\n}\n\nexport default padEnd;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => '   abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\nfunction padStart(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  return (length && strLength < length)\n    ? (createPadding(length - strLength, chars) + string)\n    : string;\n}\n\nexport default padStart;\n", "import root from './_root.js';\nimport toString from './toString.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeParseInt = root.parseInt;\n\n/**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\nfunction parseInt(string, radix, guard) {\n  if (guard || radix == null) {\n    radix = 0;\n  } else if (radix) {\n    radix = +radix;\n  }\n  return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n}\n\nexport default parseInt;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n *   return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\nvar partial = baseRest(function(func, partials) {\n  var holders = replaceHolders(partials, getHolder(partial));\n  return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartial.placeholder = {};\n\nexport default partial;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n *   return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\nvar partialRight = baseRest(function(func, partials) {\n  var holders = replaceHolders(partials, getHolder(partialRight));\n  return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartialRight.placeholder = {};\n\nexport default partialRight;\n", "import createAggregator from './_createAggregator.js';\n\n/**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': false },\n *   { 'user': 'fred',    'age': 40, 'active': true },\n *   { 'user': 'pebbles', 'age': 1,  'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\nvar partition = createAggregator(function(result, value, key) {\n  result[key ? 0 : 1].push(value);\n}, function() { return [[], []]; });\n\nexport default partition;\n", "import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nexport default basePick;\n", "import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n", "import baseLodash from './_baseLodash.js';\nimport wrapperClone from './_wrapperClone.js';\n\n/**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\nfunction wrapperPlant(value) {\n  var result,\n      parent = this;\n\n  while (parent instanceof baseLodash) {\n    var clone = wrapperClone(parent);\n    clone.__index__ = 0;\n    clone.__values__ = undefined;\n    if (result) {\n      previous.__wrapped__ = clone;\n    } else {\n      result = clone;\n    }\n    var previous = clone;\n    parent = parent.__wrapped__;\n  }\n  previous.__wrapped__ = value;\n  return result;\n}\n\nexport default wrapperPlant;\n", "import baseGet from './_baseGet.js';\n\n/**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n *     object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\nfunction propertyOf(object) {\n  return function(path) {\n    return object == null ? undefined : baseGet(object, path);\n  };\n}\n\nexport default propertyOf;\n", "/**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOfWith(array, value, fromIndex, comparator) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (comparator(array[index], value)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseIndexOfWith;\n", "import arrayMap from './_arrayMap.js';\nimport baseIndexOf from './_baseIndexOf.js';\nimport baseIndexOfWith from './_baseIndexOfWith.js';\nimport baseUnary from './_baseUnary.js';\nimport copyArray from './_copyArray.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAll(array, values, iteratee, comparator) {\n  var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n      index = -1,\n      length = values.length,\n      seen = array;\n\n  if (array === values) {\n    values = copyArray(values);\n  }\n  if (iteratee) {\n    seen = arrayMap(array, baseUnary(iteratee));\n  }\n  while (++index < length) {\n    var fromIndex = 0,\n        value = values[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n      if (seen !== array) {\n        splice.call(seen, fromIndex, 1);\n      }\n      splice.call(array, fromIndex, 1);\n    }\n  }\n  return array;\n}\n\nexport default basePullAll;\n", "import basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\nfunction pullAll(array, values) {\n  return (array && array.length && values && values.length)\n    ? basePullAll(array, values)\n    : array;\n}\n\nexport default pullAll;\n", "import baseRest from './_baseRest.js';\nimport pullAll from './pullAll.js';\n\n/**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\nvar pull = baseRest(pullAll);\n\nexport default pull;\n", "import baseIteratee from './_baseIteratee.js';\nimport basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\nfunction pullAllBy(array, values, iteratee) {\n  return (array && array.length && values && values.length)\n    ? basePullAll(array, values, baseIteratee(iteratee, 2))\n    : array;\n}\n\nexport default pullAllBy;\n", "import basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\nfunction pullAllWith(array, values, comparator) {\n  return (array && array.length && values && values.length)\n    ? basePullAll(array, values, undefined, comparator)\n    : array;\n}\n\nexport default pullAllWith;\n", "import baseUnset from './_baseUnset.js';\nimport isIndex from './_isIndex.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n  var length = array ? indexes.length : 0,\n      lastIndex = length - 1;\n\n  while (length--) {\n    var index = indexes[length];\n    if (length == lastIndex || index !== previous) {\n      var previous = index;\n      if (isIndex(index)) {\n        splice.call(array, index, 1);\n      } else {\n        baseUnset(array, index);\n      }\n    }\n  }\n  return array;\n}\n\nexport default basePullAt;\n", "import arrayMap from './_arrayMap.js';\nimport baseAt from './_baseAt.js';\nimport basePullAt from './_basePullAt.js';\nimport compareAscending from './_compareAscending.js';\nimport flatRest from './_flatRest.js';\nimport isIndex from './_isIndex.js';\n\n/**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\nvar pullAt = flatRest(function(array, indexes) {\n  var length = array == null ? 0 : array.length,\n      result = baseAt(array, indexes);\n\n  basePullAt(array, arrayMap(indexes, function(index) {\n    return isIndex(index, length) ? +index : index;\n  }).sort(compareAscending));\n\n  return result;\n});\n\nexport default pullAt;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n    nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n  return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nexport default baseRandom;\n", "import baseRandom from './_baseRandom.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseFloat = parseFloat;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min,\n    nativeRandom = Math.random;\n\n/**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\nfunction random(lower, upper, floating) {\n  if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n    upper = floating = undefined;\n  }\n  if (floating === undefined) {\n    if (typeof upper == 'boolean') {\n      floating = upper;\n      upper = undefined;\n    }\n    else if (typeof lower == 'boolean') {\n      floating = lower;\n      lower = undefined;\n    }\n  }\n  if (lower === undefined && upper === undefined) {\n    lower = 0;\n    upper = 1;\n  }\n  else {\n    lower = toFinite(lower);\n    if (upper === undefined) {\n      upper = lower;\n      lower = 0;\n    } else {\n      upper = toFinite(upper);\n    }\n  }\n  if (lower > upper) {\n    var temp = lower;\n    lower = upper;\n    upper = temp;\n  }\n  if (floating || lower % 1 || upper % 1) {\n    var rand = nativeRandom();\n    return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n  }\n  return baseRandom(lower, upper);\n}\n\nexport default random;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nexport default baseRange;\n", "import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nexport default createRange;\n", "import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n", "import createRange from './_createRange.js';\n\n/**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\nvar rangeRight = createRange(true);\n\nexport default rangeRight;\n", "import createWrap from './_createWrap.js';\nimport flatRest from './_flatRest.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n *   return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n  return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nexport default rearg;\n", "/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n *  `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n  eachFunc(collection, function(value, index, collection) {\n    accumulator = initAccum\n      ? (initAccum = false, value)\n      : iteratee(accumulator, value, index, collection);\n  });\n  return accumulator;\n}\n\nexport default baseReduce;\n", "import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n *   return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n *   return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduce : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n", "/**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduceRight(array, iteratee, accumulator, initAccum) {\n  var length = array == null ? 0 : array.length;\n  if (initAccum && length) {\n    accumulator = array[--length];\n  }\n  while (length--) {\n    accumulator = iteratee(accumulator, array[length], length, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduceRight;\n", "import arrayReduceRight from './_arrayReduceRight.js';\nimport baseEachRight from './_baseEachRight.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n *   return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\nfunction reduceRight(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduceRight : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n}\n\nexport default reduceRight;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport negate from './negate.js';\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': false },\n *   { 'user': 'fred',   'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nexport default reject;\n", "import baseIteratee from './_baseIteratee.js';\nimport basePullAt from './_basePullAt.js';\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n *   return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n  var result = [];\n  if (!(array && array.length)) {\n    return result;\n  }\n  var index = -1,\n      indexes = [],\n      length = array.length;\n\n  predicate = baseIteratee(predicate, 3);\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result.push(value);\n      indexes.push(index);\n    }\n  }\n  basePullAt(array, indexes);\n  return result;\n}\n\nexport default remove;\n", "import baseRepeat from './_baseRepeat.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\nfunction repeat(string, n, guard) {\n  if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n    n = 1;\n  } else {\n    n = toInteger(n);\n  }\n  return baseRepeat(toString(string), n);\n}\n\nexport default repeat;\n", "import toString from './toString.js';\n\n/**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\nfunction replace() {\n  var args = arguments,\n      string = toString(args[0]);\n\n  return args.length < 3 ? string : string.replace(args[1], args[2]);\n}\n\nexport default replace;\n", "import baseRest from './_baseRest.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n *   return what + ' ' + _.initial(names).join(', ') +\n *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  start = start === undefined ? start : toInteger(start);\n  return baseRest(func, start);\n}\n\nexport default rest;\n", "import castPath from './_castPath.js';\nimport isFunction from './isFunction.js';\nimport toKey from './_toKey.js';\n\n/**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\nfunction result(object, path, defaultValue) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length;\n\n  // Ensure the loop is entered when path is empty.\n  if (!length) {\n    length = 1;\n    object = undefined;\n  }\n  while (++index < length) {\n    var value = object == null ? undefined : object[toKey(path[index])];\n    if (value === undefined) {\n      index = length;\n      value = defaultValue;\n    }\n    object = isFunction(value) ? value.call(object) : value;\n  }\n  return object;\n}\n\nexport default result;\n", "/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeReverse = arrayProto.reverse;\n\n/**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\nfunction reverse(array) {\n  return array == null ? array : nativeReverse.call(array);\n}\n\nexport default reverse;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nexport default round;\n", "import baseRandom from './_baseRandom.js';\n\n/**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\nfunction arraySample(array) {\n  var length = array.length;\n  return length ? array[baseRandom(0, length - 1)] : undefined;\n}\n\nexport default arraySample;\n", "import arraySample from './_arraySample.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\nfunction baseSample(collection) {\n  return arraySample(values(collection));\n}\n\nexport default baseSample;\n", "import arraySample from './_arraySample.js';\nimport baseSample from './_baseSample.js';\nimport isArray from './isArray.js';\n\n/**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\nfunction sample(collection) {\n  var func = isArray(collection) ? arraySample : baseSample;\n  return func(collection);\n}\n\nexport default sample;\n", "import baseRandom from './_baseRandom.js';\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n  var index = -1,\n      length = array.length,\n      lastIndex = length - 1;\n\n  size = size === undefined ? length : size;\n  while (++index < size) {\n    var rand = baseRandom(index, lastIndex),\n        value = array[rand];\n\n    array[rand] = array[index];\n    array[index] = value;\n  }\n  array.length = size;\n  return array;\n}\n\nexport default shuffleSelf;\n", "import baseClamp from './_baseClamp.js';\nimport copyArray from './_copyArray.js';\nimport shuffleSelf from './_shuffleSelf.js';\n\n/**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\nfunction arraySampleSize(array, n) {\n  return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n}\n\nexport default arraySampleSize;\n", "import baseClamp from './_baseClamp.js';\nimport shuffleSelf from './_shuffleSelf.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\nfunction baseSampleSize(collection, n) {\n  var array = values(collection);\n  return shuffleSelf(array, baseClamp(n, 0, array.length));\n}\n\nexport default baseSampleSize;\n", "import arraySampleSize from './_arraySampleSize.js';\nimport baseSampleSize from './_baseSampleSize.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\nfunction sampleSize(collection, n, guard) {\n  if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n    n = 1;\n  } else {\n    n = toInteger(n);\n  }\n  var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n  return func(collection, n);\n}\n\nexport default sampleSize;\n", "import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n  return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n", "import baseSet from './_baseSet.js';\n\n/**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\nfunction setWith(object, path, value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return object == null ? object : baseSet(object, path, value, customizer);\n}\n\nexport default setWith;\n", "import copyArray from './_copyArray.js';\nimport shuffleSelf from './_shuffleSelf.js';\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n  return shuffleSelf(copyArray(array));\n}\n\nexport default arrayShuffle;\n", "import shuffleSelf from './_shuffleSelf.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n  return shuffleSelf(values(collection));\n}\n\nexport default baseShuffle;\n", "import arrayShuffle from './_arrayShuffle.js';\nimport baseShuffle from './_baseShuffle.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n  var func = isArray(collection) ? arrayShuffle : baseShuffle;\n  return func(collection);\n}\n\nexport default shuffle;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n  if (collection == null) {\n    return 0;\n  }\n  if (isArrayLike(collection)) {\n    return isString(collection) ? stringSize(collection) : collection.length;\n  }\n  var tag = getTag(collection);\n  if (tag == mapTag || tag == setTag) {\n    return collection.size;\n  }\n  return baseKeys(collection).length;\n}\n\nexport default size;\n", "import baseSlice from './_baseSlice.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n    start = 0;\n    end = length;\n  }\n  else {\n    start = start == null ? 0 : toInteger(start);\n    end = end === undefined ? length : toInteger(end);\n  }\n  return baseSlice(array, start, end);\n}\n\nexport default slice;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n  return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction baseSome(collection, predicate) {\n  var result;\n\n  baseEach(collection, function(value, index, collection) {\n    result = predicate(value, index, collection);\n    return !result;\n  });\n  return !!result;\n}\n\nexport default baseSome;\n", "import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n *   { 'user': 'barney', 'active': true },\n *   { 'user': 'fred',   'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n  var func = isArray(collection) ? arraySome : baseSome;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n    MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n    nativeMin = Math.min;\n\n/**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n */\nfunction baseSortedIndexBy(array, value, iteratee, retHighest) {\n  var low = 0,\n      high = array == null ? 0 : array.length;\n  if (high === 0) {\n    return 0;\n  }\n\n  value = iteratee(value);\n  var valIsNaN = value !== value,\n      valIsNull = value === null,\n      valIsSymbol = isSymbol(value),\n      valIsUndefined = value === undefined;\n\n  while (low < high) {\n    var mid = nativeFloor((low + high) / 2),\n        computed = iteratee(array[mid]),\n        othIsDefined = computed !== undefined,\n        othIsNull = computed === null,\n        othIsReflexive = computed === computed,\n        othIsSymbol = isSymbol(computed);\n\n    if (valIsNaN) {\n      var setLow = retHighest || othIsReflexive;\n    } else if (valIsUndefined) {\n      setLow = othIsReflexive && (retHighest || othIsDefined);\n    } else if (valIsNull) {\n      setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n    } else if (valIsSymbol) {\n      setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n    } else if (othIsNull || othIsSymbol) {\n      setLow = false;\n    } else {\n      setLow = retHighest ? (computed <= value) : (computed < value);\n    }\n    if (setLow) {\n      low = mid + 1;\n    } else {\n      high = mid;\n    }\n  }\n  return nativeMin(high, MAX_ARRAY_INDEX);\n}\n\nexport default baseSortedIndexBy;\n", "import baseSortedIndexBy from './_baseSortedIndexBy.js';\nimport identity from './identity.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n    HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n/**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n */\nfunction baseSortedIndex(array, value, retHighest) {\n  var low = 0,\n      high = array == null ? low : array.length;\n\n  if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n    while (low < high) {\n      var mid = (low + high) >>> 1,\n          computed = array[mid];\n\n      if (computed !== null && !isSymbol(computed) &&\n          (retHighest ? (computed <= value) : (computed < value))) {\n        low = mid + 1;\n      } else {\n        high = mid;\n      }\n    }\n    return high;\n  }\n  return baseSortedIndexBy(array, value, identity, retHighest);\n}\n\nexport default baseSortedIndex;\n", "import baseSortedIndex from './_baseSortedIndex.js';\n\n/**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\nfunction sortedIndex(array, value) {\n  return baseSortedIndex(array, value);\n}\n\nexport default sortedIndex;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedIndexBy from './_baseSortedIndexBy.js';\n\n/**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\nfunction sortedIndexBy(array, value, iteratee) {\n  return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2));\n}\n\nexport default sortedIndexBy;\n", "import baseSortedIndex from './_baseSortedIndex.js';\nimport eq from './eq.js';\n\n/**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\nfunction sortedIndexOf(array, value) {\n  var length = array == null ? 0 : array.length;\n  if (length) {\n    var index = baseSortedIndex(array, value);\n    if (index < length && eq(array[index], value)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default sortedIndexOf;\n", "import baseSortedIndex from './_baseSortedIndex.js';\n\n/**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\nfunction sortedLastIndex(array, value) {\n  return baseSortedIndex(array, value, true);\n}\n\nexport default sortedLastIndex;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedIndexBy from './_baseSortedIndexBy.js';\n\n/**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\nfunction sortedLastIndexBy(array, value, iteratee) {\n  return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2), true);\n}\n\nexport default sortedLastIndexBy;\n", "import baseSortedIndex from './_baseSortedIndex.js';\nimport eq from './eq.js';\n\n/**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\nfunction sortedLastIndexOf(array, value) {\n  var length = array == null ? 0 : array.length;\n  if (length) {\n    var index = baseSortedIndex(array, value, true) - 1;\n    if (eq(array[index], value)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default sortedLastIndexOf;\n", "import eq from './eq.js';\n\n/**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseSortedUniq(array, iteratee) {\n  var index = -1,\n      length = array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    if (!index || !eq(computed, seen)) {\n      var seen = computed;\n      result[resIndex++] = value === 0 ? 0 : value;\n    }\n  }\n  return result;\n}\n\nexport default baseSortedUniq;\n", "import baseSortedUniq from './_baseSortedUniq.js';\n\n/**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\nfunction sortedUniq(array) {\n  return (array && array.length)\n    ? baseSortedUniq(array)\n    : [];\n}\n\nexport default sortedUniq;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedUniq from './_baseSortedUniq.js';\n\n/**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\nfunction sortedUniqBy(array, iteratee) {\n  return (array && array.length)\n    ? baseSortedUniq(array, baseIteratee(iteratee, 2))\n    : [];\n}\n\nexport default sortedUniqBy;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport isRegExp from './isRegExp.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\nfunction split(string, separator, limit) {\n  if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n    separator = limit = undefined;\n  }\n  limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n  if (!limit) {\n    return [];\n  }\n  string = toString(string);\n  if (string && (\n        typeof separator == 'string' ||\n        (separator != null && !isRegExp(separator))\n      )) {\n    separator = baseToString(separator);\n    if (!separator && hasUnicode(string)) {\n      return castSlice(stringToArray(string), 0, limit);\n    }\n  }\n  return string.split(separator, limit);\n}\n\nexport default split;\n", "import apply from './_apply.js';\nimport arrayPush from './_arrayPush.js';\nimport baseRest from './_baseRest.js';\nimport castSlice from './_castSlice.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n *   return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n *   Promise.resolve(40),\n *   Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n *   return x + y;\n * }));\n * // => a Promise of 76\n */\nfunction spread(func, start) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  start = start == null ? 0 : nativeMax(toInteger(start), 0);\n  return baseRest(function(args) {\n    var array = args[start],\n        otherArgs = castSlice(args, 0, start);\n\n    if (array) {\n      arrayPush(otherArgs, array);\n    }\n    return apply(func, this, otherArgs);\n  });\n}\n\nexport default spread;\n", "import createCompounder from './_createCompounder.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\nvar startCase = createCompounder(function(result, word, index) {\n  return result + (index ? ' ' : '') + upperFirst(word);\n});\n\nexport default startCase;\n", "import baseClamp from './_baseClamp.js';\nimport baseToString from './_baseToString.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n *  else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\nfunction startsWith(string, target, position) {\n  string = toString(string);\n  position = position == null\n    ? 0\n    : baseClamp(toInteger(position), 0, string.length);\n\n  target = baseToString(target);\n  return string.slice(position, position + target.length) == target;\n}\n\nexport default startsWith;\n", "/**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\nfunction stubObject() {\n  return {};\n}\n\nexport default stubObject;\n", "/**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\nfunction stubString() {\n  return '';\n}\n\nexport default stubString;\n", "/**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\nfunction stubTrue() {\n  return true;\n}\n\nexport default stubTrue;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\nvar subtract = createMathOperation(function(minuend, subtrahend) {\n  return minuend - subtrahend;\n}, 0);\n\nexport default subtract;\n", "import baseSum from './_baseSum.js';\nimport identity from './identity.js';\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n  return (array && array.length)\n    ? baseSum(array, identity)\n    : 0;\n}\n\nexport default sum;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSum from './_baseSum.js';\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n  return (array && array.length)\n    ? baseSum(array, baseIteratee(iteratee, 2))\n    : 0;\n}\n\nexport default sumBy;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\nfunction tail(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseSlice(array, 1, length) : [];\n}\n\nexport default tail;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n  if (!(array && array.length)) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default take;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\nfunction takeRight(array, n, guard) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  n = length - n;\n  return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default takeRight;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\nfunction takeRightWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3), false, true)\n    : [];\n}\n\nexport default takeRightWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\nfunction takeWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3))\n    : [];\n}\n\nexport default takeWhile;\n", "/**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n *  .tap(function(array) {\n *    // Mutate input array.\n *    array.pop();\n *  })\n *  .reverse()\n *  .value();\n * // => [2, 1]\n */\nfunction tap(value, interceptor) {\n  interceptor(value);\n  return value;\n}\n\nexport default tap;\n", "import eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsAssignIn(objValue, srcValue, key, object) {\n  if (objValue === undefined ||\n      (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n    return srcValue;\n  }\n  return objValue;\n}\n\nexport default customDefaultsAssignIn;\n", "/** Used to escape characters for inclusion in compiled string literals. */\nvar stringEscapes = {\n  '\\\\': '\\\\',\n  \"'\": \"'\",\n  '\\n': 'n',\n  '\\r': 'r',\n  '\\u2028': 'u2028',\n  '\\u2029': 'u2029'\n};\n\n/**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nfunction escapeStringChar(chr) {\n  return '\\\\' + stringEscapes[chr];\n}\n\nexport default escapeStringChar;\n", "/** Used to match template delimiters. */\nvar reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\nexport default reInterpolate;\n", "/** Used to match template delimiters. */\nvar reEscape = /<%-([\\s\\S]+?)%>/g;\n\nexport default reEscape;\n", "/** Used to match template delimiters. */\nvar reEvaluate = /<%([\\s\\S]+?)%>/g;\n\nexport default reEvaluate;\n", "import escape from './escape.js';\nimport reEscape from './_reEscape.js';\nimport reEvaluate from './_reEvaluate.js';\nimport reInterpolate from './_reInterpolate.js';\n\n/**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\nvar templateSettings = {\n\n  /**\n   * Used to detect `data` property values to be HTML-escaped.\n   *\n   * @memberOf _.templateSettings\n   * @type {RegExp}\n   */\n  'escape': reEscape,\n\n  /**\n   * Used to detect code to be evaluated.\n   *\n   * @memberOf _.templateSettings\n   * @type {RegExp}\n   */\n  'evaluate': reEvaluate,\n\n  /**\n   * Used to detect `data` property values to inject.\n   *\n   * @memberOf _.templateSettings\n   * @type {RegExp}\n   */\n  'interpolate': reInterpolate,\n\n  /**\n   * Used to reference the data object in the template text.\n   *\n   * @memberOf _.templateSettings\n   * @type {string}\n   */\n  'variable': '',\n\n  /**\n   * Used to import variables into the compiled template.\n   *\n   * @memberOf _.templateSettings\n   * @type {Object}\n   */\n  'imports': {\n\n    /**\n     * A reference to the `lodash` function.\n     *\n     * @memberOf _.templateSettings.imports\n     * @type {Function}\n     */\n    '_': { 'escape': escape }\n  }\n};\n\nexport default templateSettings;\n", "import assignInWith from './assignInWith.js';\nimport attempt from './attempt.js';\nimport baseValues from './_baseValues.js';\nimport customDefaultsAssignIn from './_customDefaultsAssignIn.js';\nimport escapeStringChar from './_escapeStringChar.js';\nimport isError from './isError.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keys from './keys.js';\nimport reInterpolate from './_reInterpolate.js';\nimport templateSettings from './templateSettings.js';\nimport toString from './toString.js';\n\n/** Error message constants. */\nvar INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n/** Used to match empty string literals in compiled template source. */\nvar reEmptyStringLeading = /\\b__p \\+= '';/g,\n    reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n    reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n/**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\nvar reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n/**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\nvar reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n/** Used to ensure capturing order of template delimiters. */\nvar reNoMatch = /($^)/;\n\n/** Used to match unescaped characters in compiled string literals. */\nvar reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n *  The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n *  The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n *  An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n *  The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='templateSources[n]']\n *  The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n *  The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b>&lt;script&gt;</b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * //   var __t, __p = '';\n * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * //   return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n *   var JST = {\\\n *     \"main\": ' + _.template(mainText).source + '\\\n *   };\\\n * ');\n */\nfunction template(string, options, guard) {\n  // Based on John Resig's `tmpl` implementation\n  // (http://ejohn.org/blog/javascript-micro-templating/)\n  // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n  var settings = templateSettings.imports._.templateSettings || templateSettings;\n\n  if (guard && isIterateeCall(string, options, guard)) {\n    options = undefined;\n  }\n  string = toString(string);\n  options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n  var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n      importsKeys = keys(imports),\n      importsValues = baseValues(imports, importsKeys);\n\n  var isEscaping,\n      isEvaluating,\n      index = 0,\n      interpolate = options.interpolate || reNoMatch,\n      source = \"__p += '\";\n\n  // Compile the regexp to match each delimiter.\n  var reDelimiters = RegExp(\n    (options.escape || reNoMatch).source + '|' +\n    interpolate.source + '|' +\n    (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n    (options.evaluate || reNoMatch).source + '|$'\n  , 'g');\n\n  // Use a sourceURL for easier debugging.\n  // The sourceURL gets injected into the source that's eval-ed, so be careful\n  // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n  // and escape the comment, thus injecting code that gets evaled.\n  var sourceURL = hasOwnProperty.call(options, 'sourceURL')\n    ? ('//# sourceURL=' +\n       (options.sourceURL + '').replace(/\\s/g, ' ') +\n       '\\n')\n    : '';\n\n  string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n    interpolateValue || (interpolateValue = esTemplateValue);\n\n    // Escape characters that can't be included in string literals.\n    source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n    // Replace delimiters with snippets.\n    if (escapeValue) {\n      isEscaping = true;\n      source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n    }\n    if (evaluateValue) {\n      isEvaluating = true;\n      source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n    }\n    if (interpolateValue) {\n      source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n    }\n    index = offset + match.length;\n\n    // The JS engine embedded in Adobe products needs `match` returned in\n    // order to produce the correct `offset` value.\n    return match;\n  });\n\n  source += \"';\\n\";\n\n  // If `variable` is not specified wrap a with-statement around the generated\n  // code to add the data object to the top of the scope chain.\n  var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n  if (!variable) {\n    source = 'with (obj) {\\n' + source + '\\n}\\n';\n  }\n  // Throw an error if a forbidden character was found in `variable`, to prevent\n  // potential command injection attacks.\n  else if (reForbiddenIdentifierChars.test(variable)) {\n    throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n  }\n\n  // Cleanup code by stripping empty strings.\n  source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n    .replace(reEmptyStringMiddle, '$1')\n    .replace(reEmptyStringTrailing, '$1;');\n\n  // Frame code as the function body.\n  source = 'function(' + (variable || 'obj') + ') {\\n' +\n    (variable\n      ? ''\n      : 'obj || (obj = {});\\n'\n    ) +\n    \"var __t, __p = ''\" +\n    (isEscaping\n       ? ', __e = _.escape'\n       : ''\n    ) +\n    (isEvaluating\n      ? ', __j = Array.prototype.join;\\n' +\n        \"function print() { __p += __j.call(arguments, '') }\\n\"\n      : ';\\n'\n    ) +\n    source +\n    'return __p\\n}';\n\n  var result = attempt(function() {\n    return Function(importsKeys, sourceURL + 'return ' + source)\n      .apply(undefined, importsValues);\n  });\n\n  // Provide the compiled function's source by its `toString` method or\n  // the `source` property as a convenience for inlining compiled templates.\n  result.source = source;\n  if (isError(result)) {\n    throw result;\n  }\n  return result;\n}\n\nexport default template;\n", "import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nexport default throttle;\n", "/**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _('  abc  ')\n *  .chain()\n *  .trim()\n *  .thru(function(value) {\n *    return [value];\n *  })\n *  .value();\n * // => ['abc']\n */\nfunction thru(value, interceptor) {\n  return interceptor(value);\n}\n\nexport default thru;\n", "import baseTimes from './_baseTimes.js';\nimport castFunction from './_castFunction.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n *  _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\nfunction times(n, iteratee) {\n  n = toInteger(n);\n  if (n < 1 || n > MAX_SAFE_INTEGER) {\n    return [];\n  }\n  var index = MAX_ARRAY_LENGTH,\n      length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n  iteratee = castFunction(iteratee);\n  n -= MAX_ARRAY_LENGTH;\n\n  var result = baseTimes(length, iteratee);\n  while (++index < n) {\n    iteratee(index);\n  }\n  return result;\n}\n\nexport default times;\n", "/**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\nfunction wrapperToIterator() {\n  return this;\n}\n\nexport default wrapperToIterator;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport arrayPush from './_arrayPush.js';\nimport arrayReduce from './_arrayReduce.js';\n\n/**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\nfunction baseWrapperValue(value, actions) {\n  var result = value;\n  if (result instanceof LazyWrapper) {\n    result = result.value();\n  }\n  return arrayReduce(actions, function(result, action) {\n    return action.func.apply(action.thisArg, arrayPush([result], action.args));\n  }, result);\n}\n\nexport default baseWrapperValue;\n", "import baseWrapperValue from './_baseWrapperValue.js';\n\n/**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\nfunction wrapperValue() {\n  return baseWrapperValue(this.__wrapped__, this.__actions__);\n}\n\nexport default wrapperValue;\n", "import toString from './toString.js';\n\n/**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\nfunction toLower(value) {\n  return toString(value).toLowerCase();\n}\n\nexport default toLower;\n", "import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n  if (isArray(value)) {\n    return arrayMap(value, toKey);\n  }\n  return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n", "import baseClamp from './_baseClamp.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\nfunction toSafeInteger(value) {\n  return value\n    ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n    : (value === 0 ? value : 0);\n}\n\nexport default toSafeInteger;\n", "import toString from './toString.js';\n\n/**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\nfunction toUpper(value) {\n  return toString(value).toUpperCase();\n}\n\nexport default toUpper;\n", "import arrayEach from './_arrayEach.js';\nimport baseCreate from './_baseCreate.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\nimport getPrototype from './_getPrototype.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isTypedArray from './isTypedArray.js';\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n *   result.push(n *= n);\n *   return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n  var isArr = isArray(object),\n      isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n  iteratee = baseIteratee(iteratee, 4);\n  if (accumulator == null) {\n    var Ctor = object && object.constructor;\n    if (isArrLike) {\n      accumulator = isArr ? new Ctor : [];\n    }\n    else if (isObject(object)) {\n      accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n    }\n    else {\n      accumulator = {};\n    }\n  }\n  (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n    return iteratee(accumulator, value, index, object);\n  });\n  return accumulator;\n}\n\nexport default transform;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n  var index = strSymbols.length;\n\n  while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n  return index;\n}\n\nexport default charsEndIndex;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n  var index = -1,\n      length = strSymbols.length;\n\n  while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n  return index;\n}\n\nexport default charsStartIndex;\n", "import baseToString from './_baseToString.js';\nimport baseTrim from './_baseTrim.js';\nimport castSlice from './_castSlice.js';\nimport charsEndIndex from './_charsEndIndex.js';\nimport charsStartIndex from './_charsStartIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim('  abc  ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map(['  foo  ', '  bar  '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === undefined)) {\n    return baseTrim(string);\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string),\n      chrSymbols = stringToArray(chars),\n      start = charsStartIndex(strSymbols, chrSymbols),\n      end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n  return castSlice(strSymbols, start, end).join('');\n}\n\nexport default trim;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport charsEndIndex from './_charsEndIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\nimport trimmedEndIndex from './_trimmedEndIndex.js';\n\n/**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd('  abc  ');\n * // => '  abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\nfunction trimEnd(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === undefined)) {\n    return string.slice(0, trimmedEndIndex(string) + 1);\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string),\n      end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n  return castSlice(strSymbols, 0, end).join('');\n}\n\nexport default trimEnd;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport charsStartIndex from './_charsStartIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart('  abc  ');\n * // => 'abc  '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\nfunction trimStart(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === undefined)) {\n    return string.replace(reTrimStart, '');\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string),\n      start = charsStartIndex(strSymbols, stringToArray(chars));\n\n  return castSlice(strSymbols, start).join('');\n}\n\nexport default trimStart;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport isObject from './isObject.js';\nimport isRegExp from './isRegExp.js';\nimport stringSize from './_stringSize.js';\nimport stringToArray from './_stringToArray.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n    DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n  var length = DEFAULT_TRUNC_LENGTH,\n      omission = DEFAULT_TRUNC_OMISSION;\n\n  if (isObject(options)) {\n    var separator = 'separator' in options ? options.separator : separator;\n    length = 'length' in options ? toInteger(options.length) : length;\n    omission = 'omission' in options ? baseToString(options.omission) : omission;\n  }\n  string = toString(string);\n\n  var strLength = string.length;\n  if (hasUnicode(string)) {\n    var strSymbols = stringToArray(string);\n    strLength = strSymbols.length;\n  }\n  if (length >= strLength) {\n    return string;\n  }\n  var end = length - stringSize(omission);\n  if (end < 1) {\n    return omission;\n  }\n  var result = strSymbols\n    ? castSlice(strSymbols, 0, end).join('')\n    : string.slice(0, end);\n\n  if (separator === undefined) {\n    return result + omission;\n  }\n  if (strSymbols) {\n    end += (result.length - end);\n  }\n  if (isRegExp(separator)) {\n    if (string.slice(end).search(separator)) {\n      var match,\n          substring = result;\n\n      if (!separator.global) {\n        separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n      }\n      separator.lastIndex = 0;\n      while ((match = separator.exec(substring))) {\n        var newEnd = match.index;\n      }\n      result = result.slice(0, newEnd === undefined ? end : newEnd);\n    }\n  } else if (string.indexOf(baseToString(separator), end) != end) {\n    var index = result.lastIndexOf(separator);\n    if (index > -1) {\n      result = result.slice(0, index);\n    }\n  }\n  return result + omission;\n}\n\nexport default truncate;\n", "import ary from './ary.js';\n\n/**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\nfunction unary(func) {\n  return ary(func, 1);\n}\n\nexport default unary;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n  '&amp;': '&',\n  '&lt;': '<',\n  '&gt;': '>',\n  '&quot;': '\"',\n  '&#39;': \"'\"\n};\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\nexport default unescapeHtmlChar;\n", "import toString from './toString.js';\nimport unescapeHtmlChar from './_unescapeHtmlChar.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n    reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n  string = toString(string);\n  return (string && reHasEscapedHtml.test(string))\n    ? string.replace(reEscapedHtml, unescapeHtmlChar)\n    : string;\n}\n\nexport default unescape;\n", "import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nexport default createSet;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseUniq;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nvar unionBy = baseRest(function(arrays) {\n  var iteratee = last(arrays);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));\n});\n\nexport default unionBy;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\nvar unionWith = baseRest(function(arrays) {\n  var comparator = last(arrays);\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n});\n\nexport default unionWith;\n", "import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n", "import baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nexport default uniqWith;\n", "import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n  var id = ++idCounter;\n  return toString(prefix) + id;\n}\n\nexport default uniqueId;\n", "import baseUnset from './_baseUnset.js';\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n  return object == null ? true : baseUnset(object, path);\n}\n\nexport default unset;\n", "import arrayFilter from './_arrayFilter.js';\nimport arrayMap from './_arrayMap.js';\nimport baseProperty from './_baseProperty.js';\nimport baseTimes from './_baseTimes.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nfunction unzip(array) {\n  if (!(array && array.length)) {\n    return [];\n  }\n  var length = 0;\n  array = arrayFilter(array, function(group) {\n    if (isArrayLikeObject(group)) {\n      length = nativeMax(group.length, length);\n      return true;\n    }\n  });\n  return baseTimes(length, function(index) {\n    return arrayMap(array, baseProperty(index));\n  });\n}\n\nexport default unzip;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport unzip from './unzip.js';\n\n/**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n *  regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\nfunction unzipWith(array, iteratee) {\n  if (!(array && array.length)) {\n    return [];\n  }\n  var result = unzip(array);\n  if (iteratee == null) {\n    return result;\n  }\n  return arrayMap(result, function(group) {\n    return apply(iteratee, undefined, group);\n  });\n}\n\nexport default unzipWith;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\n\n/**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseUpdate(object, path, updater, customizer) {\n  return baseSet(object, path, updater(baseGet(object, path)), customizer);\n}\n\nexport default baseUpdate;\n", "import baseUpdate from './_baseUpdate.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\nfunction update(object, path, updater) {\n  return object == null ? object : baseUpdate(object, path, castFunction(updater));\n}\n\nexport default update;\n", "import baseUpdate from './_baseUpdate.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\nfunction updateWith(object, path, updater, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n}\n\nexport default updateWith;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\nvar upperCase = createCompounder(function(result, word, index) {\n  return result + (index ? ' ' : '') + word.toUpperCase();\n});\n\nexport default upperCase;\n", "import baseValues from './_baseValues.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\nfunction valuesIn(object) {\n  return object == null ? [] : baseValues(object, keysIn(object));\n}\n\nexport default valuesIn;\n", "import baseDifference from './_baseDifference.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, values)\n    : [];\n});\n\nexport default without;\n", "import castFunction from './_castFunction.js';\nimport partial from './partial.js';\n\n/**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n *   return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, &amp; pebbles</p>'\n */\nfunction wrap(value, wrapper) {\n  return partial(castFunction(wrapper), value);\n}\n\nexport default wrap;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport baseAt from './_baseAt.js';\nimport flatRest from './_flatRest.js';\nimport isIndex from './_isIndex.js';\nimport thru from './thru.js';\n\n/**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\nvar wrapperAt = flatRest(function(paths) {\n  var length = paths.length,\n      start = length ? paths[0] : 0,\n      value = this.__wrapped__,\n      interceptor = function(object) { return baseAt(object, paths); };\n\n  if (length > 1 || this.__actions__.length ||\n      !(value instanceof LazyWrapper) || !isIndex(start)) {\n    return this.thru(interceptor);\n  }\n  value = value.slice(start, +start + (length ? 1 : 0));\n  value.__actions__.push({\n    'func': thru,\n    'args': [interceptor],\n    'thisArg': undefined\n  });\n  return new LodashWrapper(value, this.__chain__).thru(function(array) {\n    if (length && !array.length) {\n      array.push(undefined);\n    }\n    return array;\n  });\n});\n\nexport default wrapperAt;\n", "import chain from './chain.js';\n\n/**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n *   .chain()\n *   .head()\n *   .pick('user')\n *   .value();\n * // => { 'user': 'barney' }\n */\nfunction wrapperChain() {\n  return chain(this);\n}\n\nexport default wrapperChain;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport reverse from './reverse.js';\nimport thru from './thru.js';\n\n/**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\nfunction wrapperReverse() {\n  var value = this.__wrapped__;\n  if (value instanceof LazyWrapper) {\n    var wrapped = value;\n    if (this.__actions__.length) {\n      wrapped = new LazyWrapper(this);\n    }\n    wrapped = wrapped.reverse();\n    wrapped.__actions__.push({\n      'func': thru,\n      'args': [reverse],\n      'thisArg': undefined\n    });\n    return new LodashWrapper(wrapped, this.__chain__);\n  }\n  return this.thru(reverse);\n}\n\nexport default wrapperReverse;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n  var length = arrays.length;\n  if (length < 2) {\n    return length ? baseUniq(arrays[0]) : [];\n  }\n  var index = -1,\n      result = Array(length);\n\n  while (++index < length) {\n    var array = arrays[index],\n        othIndex = -1;\n\n    while (++othIndex < length) {\n      if (othIndex != index) {\n        result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n      }\n    }\n  }\n  return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n}\n\nexport default baseXor;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseRest from './_baseRest.js';\nimport baseXor from './_baseXor.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = baseRest(function(arrays) {\n  return baseXor(arrayFilter(arrays, isArrayLikeObject));\n});\n\nexport default xor;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseXor from './_baseXor.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar xorBy = baseRest(function(arrays) {\n  var iteratee = last(arrays);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return baseXor(arrayFilter(arrays, isArrayLikeObject), baseIteratee(iteratee, 2));\n});\n\nexport default xorBy;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseRest from './_baseRest.js';\nimport baseXor from './_baseXor.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\nvar xorWith = baseRest(function(arrays) {\n  var comparator = last(arrays);\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n});\n\nexport default xorWith;\n", "import baseRest from './_baseRest.js';\nimport unzip from './unzip.js';\n\n/**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nvar zip = baseRest(unzip);\n\nexport default zip;\n", "/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n  var index = -1,\n      length = props.length,\n      valsLength = values.length,\n      result = {};\n\n  while (++index < length) {\n    var value = index < valsLength ? values[index] : undefined;\n    assignFunc(result, props[index], value);\n  }\n  return result;\n}\n\nexport default baseZipObject;\n", "import assignValue from './_assignValue.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n  return baseZipObject(props || [], values || [], assignValue);\n}\n\nexport default zipObject;\n", "import baseSet from './_baseSet.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\nfunction zipObjectDeep(props, values) {\n  return baseZipObject(props || [], values || [], baseSet);\n}\n\nexport default zipObjectDeep;\n", "import baseRest from './_baseRest.js';\nimport unzipWith from './unzipWith.js';\n\n/**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n *  grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n *   return a + b + c;\n * });\n * // => [111, 222]\n */\nvar zipWith = baseRest(function(arrays) {\n  var length = arrays.length,\n      iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n  iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n  return unzipWith(arrays, iteratee);\n});\n\nexport default zipWith;\n", "import chunk from './chunk.js';\nimport compact from './compact.js';\nimport concat from './concat.js';\nimport difference from './difference.js';\nimport differenceBy from './differenceBy.js';\nimport differenceWith from './differenceWith.js';\nimport drop from './drop.js';\nimport dropRight from './dropRight.js';\nimport dropRightWhile from './dropRightWhile.js';\nimport dropWhile from './dropWhile.js';\nimport fill from './fill.js';\nimport findIndex from './findIndex.js';\nimport findLastIndex from './findLastIndex.js';\nimport first from './first.js';\nimport flatten from './flatten.js';\nimport flattenDeep from './flattenDeep.js';\nimport flattenDepth from './flattenDepth.js';\nimport fromPairs from './fromPairs.js';\nimport head from './head.js';\nimport indexOf from './indexOf.js';\nimport initial from './initial.js';\nimport intersection from './intersection.js';\nimport intersectionBy from './intersectionBy.js';\nimport intersectionWith from './intersectionWith.js';\nimport join from './join.js';\nimport last from './last.js';\nimport lastIndexOf from './lastIndexOf.js';\nimport nth from './nth.js';\nimport pull from './pull.js';\nimport pullAll from './pullAll.js';\nimport pullAllBy from './pullAllBy.js';\nimport pullAllWith from './pullAllWith.js';\nimport pullAt from './pullAt.js';\nimport remove from './remove.js';\nimport reverse from './reverse.js';\nimport slice from './slice.js';\nimport sortedIndex from './sortedIndex.js';\nimport sortedIndexBy from './sortedIndexBy.js';\nimport sortedIndexOf from './sortedIndexOf.js';\nimport sortedLastIndex from './sortedLastIndex.js';\nimport sortedLastIndexBy from './sortedLastIndexBy.js';\nimport sortedLastIndexOf from './sortedLastIndexOf.js';\nimport sortedUniq from './sortedUniq.js';\nimport sortedUniqBy from './sortedUniqBy.js';\nimport tail from './tail.js';\nimport take from './take.js';\nimport takeRight from './takeRight.js';\nimport takeRightWhile from './takeRightWhile.js';\nimport takeWhile from './takeWhile.js';\nimport union from './union.js';\nimport unionBy from './unionBy.js';\nimport unionWith from './unionWith.js';\nimport uniq from './uniq.js';\nimport uniqBy from './uniqBy.js';\nimport uniqWith from './uniqWith.js';\nimport unzip from './unzip.js';\nimport unzipWith from './unzipWith.js';\nimport without from './without.js';\nimport xor from './xor.js';\nimport xorBy from './xorBy.js';\nimport xorWith from './xorWith.js';\nimport zip from './zip.js';\nimport zipObject from './zipObject.js';\nimport zipObjectDeep from './zipObjectDeep.js';\nimport zipWith from './zipWith.js';\n\nexport default {\n  chunk, compact, concat, difference, differenceBy,\n  differenceWith, drop, dropRight, dropRightWhile, dropWhile,\n  fill, findIndex, findLastIndex, first, flatten,\n  flattenDeep, flattenDepth, fromPairs, head, indexOf,\n  initial, intersection, intersectionBy, intersectionWith, join,\n  last, lastIndexOf, nth, pull, pullAll,\n  pullAllBy, pullAllWith, pullAt, remove, reverse,\n  slice, sortedIndex, sortedIndexBy, sortedIndexOf, sortedLastIndex,\n  sortedLastIndexBy, sortedLastIndexOf, sortedUniq, sortedUniqBy, tail,\n  take, takeRight, takeRightWhile, takeWhile, union,\n  unionBy, unionWith, uniq, uniqBy, uniqWith,\n  unzip, unzipWith, without, xor, xorBy,\n  xorWith, zip, zipObject, zipObjectDeep, zipWith\n};\n", "import countBy from './countBy.js';\nimport each from './each.js';\nimport eachRight from './eachRight.js';\nimport every from './every.js';\nimport filter from './filter.js';\nimport find from './find.js';\nimport findLast from './findLast.js';\nimport flatMap from './flatMap.js';\nimport flatMapDeep from './flatMapDeep.js';\nimport flatMapDepth from './flatMapDepth.js';\nimport forEach from './forEach.js';\nimport forEachRight from './forEachRight.js';\nimport groupBy from './groupBy.js';\nimport includes from './includes.js';\nimport invokeMap from './invokeMap.js';\nimport keyBy from './keyBy.js';\nimport map from './map.js';\nimport orderBy from './orderBy.js';\nimport partition from './partition.js';\nimport reduce from './reduce.js';\nimport reduceRight from './reduceRight.js';\nimport reject from './reject.js';\nimport sample from './sample.js';\nimport sampleSize from './sampleSize.js';\nimport shuffle from './shuffle.js';\nimport size from './size.js';\nimport some from './some.js';\nimport sortBy from './sortBy.js';\n\nexport default {\n  countBy, each, eachRight, every, filter,\n  find, findLast, flatMap, flatMapDeep, flatMapDepth,\n  forEach, forEachRight, groupBy, includes, invokeMap,\n  keyBy, map, orderBy, partition, reduce,\n  reduceRight, reject, sample, sampleSize, shuffle,\n  size, some, sortBy\n};\n", "import now from './now.js';\n\nexport default {\n  now\n};\n", "import after from './after.js';\nimport ary from './ary.js';\nimport before from './before.js';\nimport bind from './bind.js';\nimport bindKey from './bindKey.js';\nimport curry from './curry.js';\nimport curryRight from './curryRight.js';\nimport debounce from './debounce.js';\nimport defer from './defer.js';\nimport delay from './delay.js';\nimport flip from './flip.js';\nimport memoize from './memoize.js';\nimport negate from './negate.js';\nimport once from './once.js';\nimport overArgs from './overArgs.js';\nimport partial from './partial.js';\nimport partialRight from './partialRight.js';\nimport rearg from './rearg.js';\nimport rest from './rest.js';\nimport spread from './spread.js';\nimport throttle from './throttle.js';\nimport unary from './unary.js';\nimport wrap from './wrap.js';\n\nexport default {\n  after, ary, before, bind, bindKey,\n  curry, curryRight, debounce, defer, delay,\n  flip, memoize, negate, once, overArgs,\n  partial, partialRight, rearg, rest, spread,\n  throttle, unary, wrap\n};\n", "import castArray from './castArray.js';\nimport clone from './clone.js';\nimport cloneDeep from './cloneDeep.js';\nimport cloneDeepWith from './cloneDeepWith.js';\nimport cloneWith from './cloneWith.js';\nimport conformsTo from './conformsTo.js';\nimport eq from './eq.js';\nimport gt from './gt.js';\nimport gte from './gte.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport isArrayLike from './isArrayLike.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBoolean from './isBoolean.js';\nimport isBuffer from './isBuffer.js';\nimport isDate from './isDate.js';\nimport isElement from './isElement.js';\nimport isEmpty from './isEmpty.js';\nimport isEqual from './isEqual.js';\nimport isEqualWith from './isEqualWith.js';\nimport isError from './isError.js';\nimport isFinite from './isFinite.js';\nimport isFunction from './isFunction.js';\nimport isInteger from './isInteger.js';\nimport isLength from './isLength.js';\nimport isMap from './isMap.js';\nimport isMatch from './isMatch.js';\nimport isMatchWith from './isMatchWith.js';\nimport isNaN from './isNaN.js';\nimport isNative from './isNative.js';\nimport isNil from './isNil.js';\nimport isNull from './isNull.js';\nimport isNumber from './isNumber.js';\nimport isObject from './isObject.js';\nimport isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\nimport isRegExp from './isRegExp.js';\nimport isSafeInteger from './isSafeInteger.js';\nimport isSet from './isSet.js';\nimport isString from './isString.js';\nimport isSymbol from './isSymbol.js';\nimport isTypedArray from './isTypedArray.js';\nimport isUndefined from './isUndefined.js';\nimport isWeakMap from './isWeakMap.js';\nimport isWeakSet from './isWeakSet.js';\nimport lt from './lt.js';\nimport lte from './lte.js';\nimport toArray from './toArray.js';\nimport toFinite from './toFinite.js';\nimport toInteger from './toInteger.js';\nimport toLength from './toLength.js';\nimport toNumber from './toNumber.js';\nimport toPlainObject from './toPlainObject.js';\nimport toSafeInteger from './toSafeInteger.js';\nimport toString from './toString.js';\n\nexport default {\n  castArray, clone, cloneDeep, cloneDeepWith, cloneWith,\n  conformsTo, eq, gt, gte, isArguments,\n  isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean,\n  isBuffer, isDate, isElement, isEmpty, isEqual,\n  isEqualWith, isError, isFinite, isFunction, isInteger,\n  isLength, isMap, isMatch, isMatchWith, isNaN,\n  isNative, isNil, isNull, isNumber, isObject,\n  isObjectLike, isPlainObject, isRegExp, isSafeInteger, isSet,\n  isString, isSymbol, isTypedArray, isUndefined, isWeakMap,\n  isWeakSet, lt, lte, toArray, toFinite,\n  toInteger, toLength, toNumber, toPlainObject, toSafeInteger,\n  toString\n};\n", "import add from './add.js';\nimport ceil from './ceil.js';\nimport divide from './divide.js';\nimport floor from './floor.js';\nimport max from './max.js';\nimport maxBy from './maxBy.js';\nimport mean from './mean.js';\nimport meanBy from './meanBy.js';\nimport min from './min.js';\nimport minBy from './minBy.js';\nimport multiply from './multiply.js';\nimport round from './round.js';\nimport subtract from './subtract.js';\nimport sum from './sum.js';\nimport sumBy from './sumBy.js';\n\nexport default {\n  add, ceil, divide, floor, max,\n  maxBy, mean, meanBy, min, minBy,\n  multiply, round, subtract, sum, sumBy\n};\n", "import clamp from './clamp.js';\nimport inRange from './inRange.js';\nimport random from './random.js';\n\nexport default {\n  clamp, inRange, random\n};\n", "import assign from './assign.js';\nimport assignIn from './assignIn.js';\nimport assignInWith from './assignInWith.js';\nimport assignWith from './assignWith.js';\nimport at from './at.js';\nimport create from './create.js';\nimport defaults from './defaults.js';\nimport defaultsDeep from './defaultsDeep.js';\nimport entries from './entries.js';\nimport entriesIn from './entriesIn.js';\nimport extend from './extend.js';\nimport extendWith from './extendWith.js';\nimport findKey from './findKey.js';\nimport findLastKey from './findLastKey.js';\nimport forIn from './forIn.js';\nimport forInRight from './forInRight.js';\nimport forOwn from './forOwn.js';\nimport forOwnRight from './forOwnRight.js';\nimport functions from './functions.js';\nimport functionsIn from './functionsIn.js';\nimport get from './get.js';\nimport has from './has.js';\nimport hasIn from './hasIn.js';\nimport invert from './invert.js';\nimport invertBy from './invertBy.js';\nimport invoke from './invoke.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\nimport mapKeys from './mapKeys.js';\nimport mapValues from './mapValues.js';\nimport merge from './merge.js';\nimport mergeWith from './mergeWith.js';\nimport omit from './omit.js';\nimport omitBy from './omitBy.js';\nimport pick from './pick.js';\nimport pickBy from './pickBy.js';\nimport result from './result.js';\nimport set from './set.js';\nimport setWith from './setWith.js';\nimport toPairs from './toPairs.js';\nimport toPairsIn from './toPairsIn.js';\nimport transform from './transform.js';\nimport unset from './unset.js';\nimport update from './update.js';\nimport updateWith from './updateWith.js';\nimport values from './values.js';\nimport valuesIn from './valuesIn.js';\n\nexport default {\n  assign, assignIn, assignInWith, assignWith, at,\n  create, defaults, defaultsDeep, entries, entriesIn,\n  extend, extendWith, findKey, findLastKey, forIn,\n  forInRight, forOwn, forOwnRight, functions, functionsIn,\n  get, has, hasIn, invert, invertBy,\n  invoke, keys, keysIn, mapKeys, mapValues,\n  merge, mergeWith, omit, omitBy, pick,\n  pickBy, result, set, setWith, toPairs,\n  toPairsIn, transform, unset, update, updateWith,\n  values, valuesIn\n};\n", "import at from './wrapperAt.js';\nimport chain from './chain.js';\nimport commit from './commit.js';\nimport lodash from './wrapperLodash.js';\nimport next from './next.js';\nimport plant from './plant.js';\nimport reverse from './wrapperReverse.js';\nimport tap from './tap.js';\nimport thru from './thru.js';\nimport toIterator from './toIterator.js';\nimport toJSON from './toJSON.js';\nimport value from './wrapperValue.js';\nimport valueOf from './valueOf.js';\nimport wrapperChain from './wrapperChain.js';\n\nexport default {\n  at, chain, commit, lodash, next,\n  plant, reverse, tap, thru, toIterator,\n  toJSON, value, valueOf, wrapperChain\n};\n", "import camelCase from './camelCase.js';\nimport capitalize from './capitalize.js';\nimport deburr from './deburr.js';\nimport endsWith from './endsWith.js';\nimport escape from './escape.js';\nimport escapeRegExp from './escapeRegExp.js';\nimport kebabCase from './kebabCase.js';\nimport lowerCase from './lowerCase.js';\nimport lowerFirst from './lowerFirst.js';\nimport pad from './pad.js';\nimport padEnd from './padEnd.js';\nimport padStart from './padStart.js';\nimport parseInt from './parseInt.js';\nimport repeat from './repeat.js';\nimport replace from './replace.js';\nimport snakeCase from './snakeCase.js';\nimport split from './split.js';\nimport startCase from './startCase.js';\nimport startsWith from './startsWith.js';\nimport template from './template.js';\nimport templateSettings from './templateSettings.js';\nimport toLower from './toLower.js';\nimport toUpper from './toUpper.js';\nimport trim from './trim.js';\nimport trimEnd from './trimEnd.js';\nimport trimStart from './trimStart.js';\nimport truncate from './truncate.js';\nimport unescape from './unescape.js';\nimport upperCase from './upperCase.js';\nimport upperFirst from './upperFirst.js';\nimport words from './words.js';\n\nexport default {\n  camelCase, capitalize, deburr, endsWith, escape,\n  escapeRegExp, kebabCase, lowerCase, lowerFirst, pad,\n  padEnd, padStart, parseInt, repeat, replace,\n  snakeCase, split, startCase, startsWith, template,\n  templateSettings, toLower, toUpper, trim, trimEnd,\n  trimStart, truncate, unescape, upperCase, upperFirst,\n  words\n};\n", "import attempt from './attempt.js';\nimport bindAll from './bindAll.js';\nimport cond from './cond.js';\nimport conforms from './conforms.js';\nimport constant from './constant.js';\nimport defaultTo from './defaultTo.js';\nimport flow from './flow.js';\nimport flowRight from './flowRight.js';\nimport identity from './identity.js';\nimport iteratee from './iteratee.js';\nimport matches from './matches.js';\nimport matchesProperty from './matchesProperty.js';\nimport method from './method.js';\nimport methodOf from './methodOf.js';\nimport mixin from './mixin.js';\nimport noop from './noop.js';\nimport nthArg from './nthArg.js';\nimport over from './over.js';\nimport overEvery from './overEvery.js';\nimport overSome from './overSome.js';\nimport property from './property.js';\nimport propertyOf from './propertyOf.js';\nimport range from './range.js';\nimport rangeRight from './rangeRight.js';\nimport stubArray from './stubArray.js';\nimport stubFalse from './stubFalse.js';\nimport stubObject from './stubObject.js';\nimport stubString from './stubString.js';\nimport stubTrue from './stubTrue.js';\nimport times from './times.js';\nimport toPath from './toPath.js';\nimport uniqueId from './uniqueId.js';\n\nexport default {\n  attempt, bindAll, cond, conforms, constant,\n  defaultTo, flow, flowRight, identity, iteratee,\n  matches, matchesProperty, method, methodOf, mixin,\n  noop, nthArg, over, overEvery, overSome,\n  property, propertyOf, range, rangeRight, stubArray,\n  stubFalse, stubObject, stubString, stubTrue, times,\n  toPath, uniqueId\n};\n", "import LazyWrapper from './_LazyWrapper.js';\nimport copyArray from './_copyArray.js';\n\n/**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\nfunction lazyClone() {\n  var result = new LazyWrapper(this.__wrapped__);\n  result.__actions__ = copyArray(this.__actions__);\n  result.__dir__ = this.__dir__;\n  result.__filtered__ = this.__filtered__;\n  result.__iteratees__ = copyArray(this.__iteratees__);\n  result.__takeCount__ = this.__takeCount__;\n  result.__views__ = copyArray(this.__views__);\n  return result;\n}\n\nexport default lazyClone;\n", "import LazyWrapper from './_LazyWrapper.js';\n\n/**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\nfunction lazyReverse() {\n  if (this.__filtered__) {\n    var result = new LazyWrapper(this);\n    result.__dir__ = -1;\n    result.__filtered__ = true;\n  } else {\n    result = this.clone();\n    result.__dir__ *= -1;\n  }\n  return result;\n}\n\nexport default lazyReverse;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n *  positions of the view.\n */\nfunction getView(start, end, transforms) {\n  var index = -1,\n      length = transforms.length;\n\n  while (++index < length) {\n    var data = transforms[index],\n        size = data.size;\n\n    switch (data.type) {\n      case 'drop':      start += size; break;\n      case 'dropRight': end -= size; break;\n      case 'take':      end = nativeMin(end, start + size); break;\n      case 'takeRight': start = nativeMax(start, end - size); break;\n    }\n  }\n  return { 'start': start, 'end': end };\n}\n\nexport default getView;\n", "import baseWrapperValue from './_baseWrapperValue.js';\nimport getView from './_getView.js';\nimport isArray from './isArray.js';\n\n/** Used to indicate the type of lazy iteratees. */\nvar LAZY_FILTER_FLAG = 1,\n    LAZY_MAP_FLAG = 2;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\nfunction lazyValue() {\n  var array = this.__wrapped__.value(),\n      dir = this.__dir__,\n      isArr = isArray(array),\n      isRight = dir < 0,\n      arrLength = isArr ? array.length : 0,\n      view = getView(0, arrLength, this.__views__),\n      start = view.start,\n      end = view.end,\n      length = end - start,\n      index = isRight ? end : (start - 1),\n      iteratees = this.__iteratees__,\n      iterLength = iteratees.length,\n      resIndex = 0,\n      takeCount = nativeMin(length, this.__takeCount__);\n\n  if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n    return baseWrapperValue(array, this.__actions__);\n  }\n  var result = [];\n\n  outer:\n  while (length-- && resIndex < takeCount) {\n    index += dir;\n\n    var iterIndex = -1,\n        value = array[index];\n\n    while (++iterIndex < iterLength) {\n      var data = iteratees[iterIndex],\n          iteratee = data.iteratee,\n          type = data.type,\n          computed = iteratee(value);\n\n      if (type == LAZY_MAP_FLAG) {\n        value = computed;\n      } else if (!computed) {\n        if (type == LAZY_FILTER_FLAG) {\n          continue outer;\n        } else {\n          break outer;\n        }\n      }\n    }\n    result[resIndex++] = value;\n  }\n  return result;\n}\n\nexport default lazyValue;\n", "/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nimport array from './array.js';\nimport collection from './collection.js';\nimport date from './date.js';\nimport func from './function.js';\nimport lang from './lang.js';\nimport math from './math.js';\nimport number from './number.js';\nimport object from './object.js';\nimport seq from './seq.js';\nimport string from './string.js';\nimport util from './util.js';\nimport LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport Symbol from './_Symbol.js';\nimport arrayEach from './_arrayEach.js';\nimport arrayPush from './_arrayPush.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseFunctions from './_baseFunctions.js';\nimport baseInvoke from './_baseInvoke.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport createHybrid from './_createHybrid.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport isObject from './isObject.js';\nimport keys from './keys.js';\nimport last from './last.js';\nimport lazyClone from './_lazyClone.js';\nimport lazyReverse from './_lazyReverse.js';\nimport lazyValue from './_lazyValue.js';\nimport _mixin from './mixin.js';\nimport negate from './negate.js';\nimport realNames from './_realNames.js';\nimport thru from './thru.js';\nimport toInteger from './toInteger.js';\nimport lodash from './wrapperLodash.js';\n\n/** Used as the semantic version number. */\nvar VERSION = '4.17.21';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_KEY_FLAG = 2;\n\n/** Used to indicate the type of lazy iteratees. */\nvar LAZY_FILTER_FLAG = 1,\n    LAZY_WHILE_FLAG = 3;\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n// wrap `_.mixin` so it works when provided only one argument\nvar mixin = (function(func) {\n  return function(object, source, options) {\n    if (options == null) {\n      var isObj = isObject(source),\n          props = isObj && keys(source),\n          methodNames = props && props.length && baseFunctions(source, props);\n\n      if (!(methodNames ? methodNames.length : isObj)) {\n        options = source;\n        source = object;\n        object = this;\n      }\n    }\n    return func(object, source, options);\n  };\n}(_mixin));\n\n// Add methods that return wrapped values in chain sequences.\nlodash.after = func.after;\nlodash.ary = func.ary;\nlodash.assign = object.assign;\nlodash.assignIn = object.assignIn;\nlodash.assignInWith = object.assignInWith;\nlodash.assignWith = object.assignWith;\nlodash.at = object.at;\nlodash.before = func.before;\nlodash.bind = func.bind;\nlodash.bindAll = util.bindAll;\nlodash.bindKey = func.bindKey;\nlodash.castArray = lang.castArray;\nlodash.chain = seq.chain;\nlodash.chunk = array.chunk;\nlodash.compact = array.compact;\nlodash.concat = array.concat;\nlodash.cond = util.cond;\nlodash.conforms = util.conforms;\nlodash.constant = util.constant;\nlodash.countBy = collection.countBy;\nlodash.create = object.create;\nlodash.curry = func.curry;\nlodash.curryRight = func.curryRight;\nlodash.debounce = func.debounce;\nlodash.defaults = object.defaults;\nlodash.defaultsDeep = object.defaultsDeep;\nlodash.defer = func.defer;\nlodash.delay = func.delay;\nlodash.difference = array.difference;\nlodash.differenceBy = array.differenceBy;\nlodash.differenceWith = array.differenceWith;\nlodash.drop = array.drop;\nlodash.dropRight = array.dropRight;\nlodash.dropRightWhile = array.dropRightWhile;\nlodash.dropWhile = array.dropWhile;\nlodash.fill = array.fill;\nlodash.filter = collection.filter;\nlodash.flatMap = collection.flatMap;\nlodash.flatMapDeep = collection.flatMapDeep;\nlodash.flatMapDepth = collection.flatMapDepth;\nlodash.flatten = array.flatten;\nlodash.flattenDeep = array.flattenDeep;\nlodash.flattenDepth = array.flattenDepth;\nlodash.flip = func.flip;\nlodash.flow = util.flow;\nlodash.flowRight = util.flowRight;\nlodash.fromPairs = array.fromPairs;\nlodash.functions = object.functions;\nlodash.functionsIn = object.functionsIn;\nlodash.groupBy = collection.groupBy;\nlodash.initial = array.initial;\nlodash.intersection = array.intersection;\nlodash.intersectionBy = array.intersectionBy;\nlodash.intersectionWith = array.intersectionWith;\nlodash.invert = object.invert;\nlodash.invertBy = object.invertBy;\nlodash.invokeMap = collection.invokeMap;\nlodash.iteratee = util.iteratee;\nlodash.keyBy = collection.keyBy;\nlodash.keys = keys;\nlodash.keysIn = object.keysIn;\nlodash.map = collection.map;\nlodash.mapKeys = object.mapKeys;\nlodash.mapValues = object.mapValues;\nlodash.matches = util.matches;\nlodash.matchesProperty = util.matchesProperty;\nlodash.memoize = func.memoize;\nlodash.merge = object.merge;\nlodash.mergeWith = object.mergeWith;\nlodash.method = util.method;\nlodash.methodOf = util.methodOf;\nlodash.mixin = mixin;\nlodash.negate = negate;\nlodash.nthArg = util.nthArg;\nlodash.omit = object.omit;\nlodash.omitBy = object.omitBy;\nlodash.once = func.once;\nlodash.orderBy = collection.orderBy;\nlodash.over = util.over;\nlodash.overArgs = func.overArgs;\nlodash.overEvery = util.overEvery;\nlodash.overSome = util.overSome;\nlodash.partial = func.partial;\nlodash.partialRight = func.partialRight;\nlodash.partition = collection.partition;\nlodash.pick = object.pick;\nlodash.pickBy = object.pickBy;\nlodash.property = util.property;\nlodash.propertyOf = util.propertyOf;\nlodash.pull = array.pull;\nlodash.pullAll = array.pullAll;\nlodash.pullAllBy = array.pullAllBy;\nlodash.pullAllWith = array.pullAllWith;\nlodash.pullAt = array.pullAt;\nlodash.range = util.range;\nlodash.rangeRight = util.rangeRight;\nlodash.rearg = func.rearg;\nlodash.reject = collection.reject;\nlodash.remove = array.remove;\nlodash.rest = func.rest;\nlodash.reverse = array.reverse;\nlodash.sampleSize = collection.sampleSize;\nlodash.set = object.set;\nlodash.setWith = object.setWith;\nlodash.shuffle = collection.shuffle;\nlodash.slice = array.slice;\nlodash.sortBy = collection.sortBy;\nlodash.sortedUniq = array.sortedUniq;\nlodash.sortedUniqBy = array.sortedUniqBy;\nlodash.split = string.split;\nlodash.spread = func.spread;\nlodash.tail = array.tail;\nlodash.take = array.take;\nlodash.takeRight = array.takeRight;\nlodash.takeRightWhile = array.takeRightWhile;\nlodash.takeWhile = array.takeWhile;\nlodash.tap = seq.tap;\nlodash.throttle = func.throttle;\nlodash.thru = thru;\nlodash.toArray = lang.toArray;\nlodash.toPairs = object.toPairs;\nlodash.toPairsIn = object.toPairsIn;\nlodash.toPath = util.toPath;\nlodash.toPlainObject = lang.toPlainObject;\nlodash.transform = object.transform;\nlodash.unary = func.unary;\nlodash.union = array.union;\nlodash.unionBy = array.unionBy;\nlodash.unionWith = array.unionWith;\nlodash.uniq = array.uniq;\nlodash.uniqBy = array.uniqBy;\nlodash.uniqWith = array.uniqWith;\nlodash.unset = object.unset;\nlodash.unzip = array.unzip;\nlodash.unzipWith = array.unzipWith;\nlodash.update = object.update;\nlodash.updateWith = object.updateWith;\nlodash.values = object.values;\nlodash.valuesIn = object.valuesIn;\nlodash.without = array.without;\nlodash.words = string.words;\nlodash.wrap = func.wrap;\nlodash.xor = array.xor;\nlodash.xorBy = array.xorBy;\nlodash.xorWith = array.xorWith;\nlodash.zip = array.zip;\nlodash.zipObject = array.zipObject;\nlodash.zipObjectDeep = array.zipObjectDeep;\nlodash.zipWith = array.zipWith;\n\n// Add aliases.\nlodash.entries = object.toPairs;\nlodash.entriesIn = object.toPairsIn;\nlodash.extend = object.assignIn;\nlodash.extendWith = object.assignInWith;\n\n// Add methods to `lodash.prototype`.\nmixin(lodash, lodash);\n\n// Add methods that return unwrapped values in chain sequences.\nlodash.add = math.add;\nlodash.attempt = util.attempt;\nlodash.camelCase = string.camelCase;\nlodash.capitalize = string.capitalize;\nlodash.ceil = math.ceil;\nlodash.clamp = number.clamp;\nlodash.clone = lang.clone;\nlodash.cloneDeep = lang.cloneDeep;\nlodash.cloneDeepWith = lang.cloneDeepWith;\nlodash.cloneWith = lang.cloneWith;\nlodash.conformsTo = lang.conformsTo;\nlodash.deburr = string.deburr;\nlodash.defaultTo = util.defaultTo;\nlodash.divide = math.divide;\nlodash.endsWith = string.endsWith;\nlodash.eq = lang.eq;\nlodash.escape = string.escape;\nlodash.escapeRegExp = string.escapeRegExp;\nlodash.every = collection.every;\nlodash.find = collection.find;\nlodash.findIndex = array.findIndex;\nlodash.findKey = object.findKey;\nlodash.findLast = collection.findLast;\nlodash.findLastIndex = array.findLastIndex;\nlodash.findLastKey = object.findLastKey;\nlodash.floor = math.floor;\nlodash.forEach = collection.forEach;\nlodash.forEachRight = collection.forEachRight;\nlodash.forIn = object.forIn;\nlodash.forInRight = object.forInRight;\nlodash.forOwn = object.forOwn;\nlodash.forOwnRight = object.forOwnRight;\nlodash.get = object.get;\nlodash.gt = lang.gt;\nlodash.gte = lang.gte;\nlodash.has = object.has;\nlodash.hasIn = object.hasIn;\nlodash.head = array.head;\nlodash.identity = identity;\nlodash.includes = collection.includes;\nlodash.indexOf = array.indexOf;\nlodash.inRange = number.inRange;\nlodash.invoke = object.invoke;\nlodash.isArguments = lang.isArguments;\nlodash.isArray = isArray;\nlodash.isArrayBuffer = lang.isArrayBuffer;\nlodash.isArrayLike = lang.isArrayLike;\nlodash.isArrayLikeObject = lang.isArrayLikeObject;\nlodash.isBoolean = lang.isBoolean;\nlodash.isBuffer = lang.isBuffer;\nlodash.isDate = lang.isDate;\nlodash.isElement = lang.isElement;\nlodash.isEmpty = lang.isEmpty;\nlodash.isEqual = lang.isEqual;\nlodash.isEqualWith = lang.isEqualWith;\nlodash.isError = lang.isError;\nlodash.isFinite = lang.isFinite;\nlodash.isFunction = lang.isFunction;\nlodash.isInteger = lang.isInteger;\nlodash.isLength = lang.isLength;\nlodash.isMap = lang.isMap;\nlodash.isMatch = lang.isMatch;\nlodash.isMatchWith = lang.isMatchWith;\nlodash.isNaN = lang.isNaN;\nlodash.isNative = lang.isNative;\nlodash.isNil = lang.isNil;\nlodash.isNull = lang.isNull;\nlodash.isNumber = lang.isNumber;\nlodash.isObject = isObject;\nlodash.isObjectLike = lang.isObjectLike;\nlodash.isPlainObject = lang.isPlainObject;\nlodash.isRegExp = lang.isRegExp;\nlodash.isSafeInteger = lang.isSafeInteger;\nlodash.isSet = lang.isSet;\nlodash.isString = lang.isString;\nlodash.isSymbol = lang.isSymbol;\nlodash.isTypedArray = lang.isTypedArray;\nlodash.isUndefined = lang.isUndefined;\nlodash.isWeakMap = lang.isWeakMap;\nlodash.isWeakSet = lang.isWeakSet;\nlodash.join = array.join;\nlodash.kebabCase = string.kebabCase;\nlodash.last = last;\nlodash.lastIndexOf = array.lastIndexOf;\nlodash.lowerCase = string.lowerCase;\nlodash.lowerFirst = string.lowerFirst;\nlodash.lt = lang.lt;\nlodash.lte = lang.lte;\nlodash.max = math.max;\nlodash.maxBy = math.maxBy;\nlodash.mean = math.mean;\nlodash.meanBy = math.meanBy;\nlodash.min = math.min;\nlodash.minBy = math.minBy;\nlodash.stubArray = util.stubArray;\nlodash.stubFalse = util.stubFalse;\nlodash.stubObject = util.stubObject;\nlodash.stubString = util.stubString;\nlodash.stubTrue = util.stubTrue;\nlodash.multiply = math.multiply;\nlodash.nth = array.nth;\nlodash.noop = util.noop;\nlodash.now = date.now;\nlodash.pad = string.pad;\nlodash.padEnd = string.padEnd;\nlodash.padStart = string.padStart;\nlodash.parseInt = string.parseInt;\nlodash.random = number.random;\nlodash.reduce = collection.reduce;\nlodash.reduceRight = collection.reduceRight;\nlodash.repeat = string.repeat;\nlodash.replace = string.replace;\nlodash.result = object.result;\nlodash.round = math.round;\nlodash.sample = collection.sample;\nlodash.size = collection.size;\nlodash.snakeCase = string.snakeCase;\nlodash.some = collection.some;\nlodash.sortedIndex = array.sortedIndex;\nlodash.sortedIndexBy = array.sortedIndexBy;\nlodash.sortedIndexOf = array.sortedIndexOf;\nlodash.sortedLastIndex = array.sortedLastIndex;\nlodash.sortedLastIndexBy = array.sortedLastIndexBy;\nlodash.sortedLastIndexOf = array.sortedLastIndexOf;\nlodash.startCase = string.startCase;\nlodash.startsWith = string.startsWith;\nlodash.subtract = math.subtract;\nlodash.sum = math.sum;\nlodash.sumBy = math.sumBy;\nlodash.template = string.template;\nlodash.times = util.times;\nlodash.toFinite = lang.toFinite;\nlodash.toInteger = toInteger;\nlodash.toLength = lang.toLength;\nlodash.toLower = string.toLower;\nlodash.toNumber = lang.toNumber;\nlodash.toSafeInteger = lang.toSafeInteger;\nlodash.toString = lang.toString;\nlodash.toUpper = string.toUpper;\nlodash.trim = string.trim;\nlodash.trimEnd = string.trimEnd;\nlodash.trimStart = string.trimStart;\nlodash.truncate = string.truncate;\nlodash.unescape = string.unescape;\nlodash.uniqueId = util.uniqueId;\nlodash.upperCase = string.upperCase;\nlodash.upperFirst = string.upperFirst;\n\n// Add aliases.\nlodash.each = collection.forEach;\nlodash.eachRight = collection.forEachRight;\nlodash.first = array.head;\n\nmixin(lodash, (function() {\n  var source = {};\n  baseForOwn(lodash, function(func, methodName) {\n    if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n      source[methodName] = func;\n    }\n  });\n  return source;\n}()), { 'chain': false });\n\n/**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\nlodash.VERSION = VERSION;\n(lodash.templateSettings = string.templateSettings).imports._ = lodash;\n\n// Assign default placeholders.\narrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n  lodash[methodName].placeholder = lodash;\n});\n\n// Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\narrayEach(['drop', 'take'], function(methodName, index) {\n  LazyWrapper.prototype[methodName] = function(n) {\n    n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n    var result = (this.__filtered__ && !index)\n      ? new LazyWrapper(this)\n      : this.clone();\n\n    if (result.__filtered__) {\n      result.__takeCount__ = nativeMin(n, result.__takeCount__);\n    } else {\n      result.__views__.push({\n        'size': nativeMin(n, MAX_ARRAY_LENGTH),\n        'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n      });\n    }\n    return result;\n  };\n\n  LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n    return this.reverse()[methodName](n).reverse();\n  };\n});\n\n// Add `LazyWrapper` methods that accept an `iteratee` value.\narrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n  var type = index + 1,\n      isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n  LazyWrapper.prototype[methodName] = function(iteratee) {\n    var result = this.clone();\n    result.__iteratees__.push({\n      'iteratee': baseIteratee(iteratee, 3),\n      'type': type\n    });\n    result.__filtered__ = result.__filtered__ || isFilter;\n    return result;\n  };\n});\n\n// Add `LazyWrapper` methods for `_.head` and `_.last`.\narrayEach(['head', 'last'], function(methodName, index) {\n  var takeName = 'take' + (index ? 'Right' : '');\n\n  LazyWrapper.prototype[methodName] = function() {\n    return this[takeName](1).value()[0];\n  };\n});\n\n// Add `LazyWrapper` methods for `_.initial` and `_.tail`.\narrayEach(['initial', 'tail'], function(methodName, index) {\n  var dropName = 'drop' + (index ? '' : 'Right');\n\n  LazyWrapper.prototype[methodName] = function() {\n    return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n  };\n});\n\nLazyWrapper.prototype.compact = function() {\n  return this.filter(identity);\n};\n\nLazyWrapper.prototype.find = function(predicate) {\n  return this.filter(predicate).head();\n};\n\nLazyWrapper.prototype.findLast = function(predicate) {\n  return this.reverse().find(predicate);\n};\n\nLazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n  if (typeof path == 'function') {\n    return new LazyWrapper(this);\n  }\n  return this.map(function(value) {\n    return baseInvoke(value, path, args);\n  });\n});\n\nLazyWrapper.prototype.reject = function(predicate) {\n  return this.filter(negate(baseIteratee(predicate)));\n};\n\nLazyWrapper.prototype.slice = function(start, end) {\n  start = toInteger(start);\n\n  var result = this;\n  if (result.__filtered__ && (start > 0 || end < 0)) {\n    return new LazyWrapper(result);\n  }\n  if (start < 0) {\n    result = result.takeRight(-start);\n  } else if (start) {\n    result = result.drop(start);\n  }\n  if (end !== undefined) {\n    end = toInteger(end);\n    result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n  }\n  return result;\n};\n\nLazyWrapper.prototype.takeRightWhile = function(predicate) {\n  return this.reverse().takeWhile(predicate).reverse();\n};\n\nLazyWrapper.prototype.toArray = function() {\n  return this.take(MAX_ARRAY_LENGTH);\n};\n\n// Add `LazyWrapper` methods to `lodash.prototype`.\nbaseForOwn(LazyWrapper.prototype, function(func, methodName) {\n  var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n      isTaker = /^(?:head|last)$/.test(methodName),\n      lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n      retUnwrapped = isTaker || /^find/.test(methodName);\n\n  if (!lodashFunc) {\n    return;\n  }\n  lodash.prototype[methodName] = function() {\n    var value = this.__wrapped__,\n        args = isTaker ? [1] : arguments,\n        isLazy = value instanceof LazyWrapper,\n        iteratee = args[0],\n        useLazy = isLazy || isArray(value);\n\n    var interceptor = function(value) {\n      var result = lodashFunc.apply(lodash, arrayPush([value], args));\n      return (isTaker && chainAll) ? result[0] : result;\n    };\n\n    if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n      // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n      isLazy = useLazy = false;\n    }\n    var chainAll = this.__chain__,\n        isHybrid = !!this.__actions__.length,\n        isUnwrapped = retUnwrapped && !chainAll,\n        onlyLazy = isLazy && !isHybrid;\n\n    if (!retUnwrapped && useLazy) {\n      value = onlyLazy ? value : new LazyWrapper(this);\n      var result = func.apply(value, args);\n      result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n      return new LodashWrapper(result, chainAll);\n    }\n    if (isUnwrapped && onlyLazy) {\n      return func.apply(this, args);\n    }\n    result = this.thru(interceptor);\n    return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n  };\n});\n\n// Add `Array` methods to `lodash.prototype`.\narrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n  var func = arrayProto[methodName],\n      chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n      retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n  lodash.prototype[methodName] = function() {\n    var args = arguments;\n    if (retUnwrapped && !this.__chain__) {\n      var value = this.value();\n      return func.apply(isArray(value) ? value : [], args);\n    }\n    return this[chainName](function(value) {\n      return func.apply(isArray(value) ? value : [], args);\n    });\n  };\n});\n\n// Map minified method names to their real names.\nbaseForOwn(LazyWrapper.prototype, function(func, methodName) {\n  var lodashFunc = lodash[methodName];\n  if (lodashFunc) {\n    var key = lodashFunc.name + '';\n    if (!hasOwnProperty.call(realNames, key)) {\n      realNames[key] = [];\n    }\n    realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n  }\n});\n\nrealNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n  'name': 'wrapper',\n  'func': undefined\n}];\n\n// Add methods to `LazyWrapper`.\nLazyWrapper.prototype.clone = lazyClone;\nLazyWrapper.prototype.reverse = lazyReverse;\nLazyWrapper.prototype.value = lazyValue;\n\n// Add chain sequence methods to the `lodash` wrapper.\nlodash.prototype.at = seq.at;\nlodash.prototype.chain = seq.wrapperChain;\nlodash.prototype.commit = seq.commit;\nlodash.prototype.next = seq.next;\nlodash.prototype.plant = seq.plant;\nlodash.prototype.reverse = seq.reverse;\nlodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = seq.value;\n\n// Add lazy aliases.\nlodash.prototype.first = lodash.prototype.head;\n\nif (symIterator) {\n  lodash.prototype[symIterator] = seq.toIterator;\n}\n\nexport default lodash;\n", "import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTileTable } from './useTileTable';\nimport { useMeasure } from 'react-use';\nimport styles from './TilesContainer.module.css';\nimport { useComposeRef } from '../utils/useComposedRef';\nimport { jc } from '../utils/joinclasses';\nimport { isEqual } from 'lodash-es';\nimport {\n  TileInfo,\n  RenderTileFunction,\n  RenderInsertIndicatorFunction,\n  RenderTileProps,\n} from './model';\n\nexport interface TilesContainerBaseProps<T> {\n  /**\n   * width/height ration\n   */\n  data: T[];\n  renderTile: RenderTileFunction<T>;\n  renderInsertIndicator?: RenderInsertIndicatorFunction;\n  ratio?: number;\n  forceTileHeight?: number;\n  acceptsDrop?: (source: T, target: T) => boolean;\n  onTileDrop?: (source: T, target: T) => boolean;\n  tileSize?: (data: T) => { rowSpan: number; colSpan: number };\n  disabled?: boolean;\n  onReorderTiles?: (reorderedData: T[]) => void;\n  activeBorderSize?: number;\n  strategy?: 'reorder' | 'move';\n}\n\nexport interface TilesContainerColsProps<T> extends TilesContainerBaseProps<T> {\n  columns: number;\n}\n\nexport interface TilesContainerForcedSizeProps<T>\n  extends TilesContainerBaseProps<T> {\n  forceTileWidth: number;\n}\n\nconst TileUI = React.memo(\n  <T,>({\n    renderTile,\n    ...props\n  }: { renderTile: RenderTileFunction<T> } & RenderTileProps<T>) => {\n    return renderTile(props);\n  }\n);\n\nconst isTilesContainerForcedSizeProps = <T,>(\n  props: TilesContainerBaseProps<T>\n): props is TilesContainerForcedSizeProps<T> => !!(props as any).forceTileWidth;\n\nconst isTilesContainerColsProps = <T,>(\n  props: TilesContainerBaseProps<T>\n): props is TilesContainerColsProps<T> => !!(props as any).columns;\n\nexport type TilesContainerProps<T> =\n  | TilesContainerColsProps<T>\n  | TilesContainerForcedSizeProps<T>;\n\nconst defaultTileSize = () => ({ rowSpan: 1, colSpan: 1 });\n\ntype DataWithKeys<T> = {\n  item: T;\n  key: number;\n};\n\nlet lastKey = 0;\nconst dataWithKeys = <T,>(\n  data: T[],\n  dataWithKeys: DataWithKeys<T>[]\n): DataWithKeys<T>[] => {\n  return data.map(item => {\n    const existingItem = dataWithKeys.find(k => k.item === item);\n    return existingItem || { item, key: lastKey++ };\n  });\n};\n\nexport const TilesContainer = <T,>(props: TilesContainerProps<T>) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const [measureRef, measure] = useMeasure<HTMLDivElement>();\n\n  const forceTileWidth = isTilesContainerForcedSizeProps(props)\n    ? props.forceTileWidth\n    : 0;\n  const columns = isTilesContainerColsProps(props)\n    ? props.columns\n    : forceTileWidth\n    ? Math.floor(measure.width / forceTileWidth)\n    : 4;\n  const {\n    onReorderTiles,\n    ratio = 1,\n    forceTileHeight,\n    data: propsData,\n    acceptsDrop,\n    onTileDrop,\n    tileSize = defaultTileSize,\n    renderTile,\n    renderInsertIndicator,\n    activeBorderSize = 24,\n    disabled,\n    strategy = 'move',\n  } = props;\n\n  const tileWidth = forceTileWidth || measure.width / columns;\n  const tileHeight = forceTileHeight || tileWidth / ratio;\n\n  const [data, setData] = useState<DataWithKeys<T>[]>(() =>\n    dataWithKeys(propsData, [])\n  );\n  useEffect(\n    () => setData(curr => dataWithKeys(propsData, curr)),\n    [propsData, setData]\n  );\n\n  //extract the tiles from the props\n  const propsTiles = useMemo(() => {\n    const tiles: TileInfo<T>[] = [];\n    data.forEach(({ item: tile, key }) =>\n      tiles.push({\n        key,\n        ...tileSize(tile),\n        data: tile,\n      })\n    );\n    return tiles;\n  }, [data, tileSize]);\n\n  const { bind, renderTileProps, tableHeight, insertIndicatorPosition } =\n    useTileTable({\n      columns,\n      strategy,\n      enabled: !disabled,\n      elementHeight: tileHeight,\n      elementWidth: tileWidth,\n      activeBorderSize,\n      currentTiles: propsTiles,\n      canAcceptDrop: (source, target) => {\n        return acceptsDrop ? acceptsDrop(source.data, target.data) : false;\n      },\n      changeTilesOrder: tiles => {\n        const newData = tiles.map(tile => tile.data);\n        const actualData = data.map(tile => tile.item);\n        if (!isEqual(actualData, newData)) {\n          setData(curr => dataWithKeys(newData, curr));\n          onReorderTiles && onReorderTiles(newData);\n        }\n      },\n      didDrop: (source, target) => {\n        setData(tiles => tiles.filter(tile => tile.item !== source.data));\n        onTileDrop && onTileDrop(source.data, target.data);\n      },\n    });\n\n  const insertIndicator = useMemo(() => {\n    if (!insertIndicatorPosition || !renderInsertIndicator) {\n      return null;\n    }\n    const { x, y } = insertIndicatorPosition;\n    return (\n      <div\n        className={styles.indicator}\n        style={{\n          top: `${y}px`,\n          left: `${x}px`,\n          height: `${tileHeight}px`,\n          width: `${tileWidth}px`,\n        }}\n      >\n        {renderInsertIndicator()}\n      </div>\n    );\n  }, [insertIndicatorPosition, renderInsertIndicator, tileHeight, tileWidth]);\n\n  const tiles = useMemo(\n    () =>\n      renderTileProps.map(({ x, y, key, ...props }) => (\n        <div\n          className={jc(styles.tile, props.isDragging && styles.dragging)}\n          key={`K-${key}`}\n          style={{\n            top: `${y}px`,\n            left: `${x}px`,\n            width: `${props.colSpan * tileWidth}px`,\n            height: `${props.rowSpan * tileHeight}px`,\n          }}\n          {...bind(props.data)}\n        >\n          <TileUI {...props} renderTile={renderTile as any} />\n        </div>\n      )),\n    [renderTileProps, renderTile, bind, tileWidth, tileHeight]\n  );\n\n  return (\n    <div\n      className={styles.container}\n      ref={useComposeRef(containerRef, measureRef)}\n      style={{ height: `${tableHeight}px`, minWidth: `${tileWidth}px` }}\n    >\n      {insertIndicator}\n      {tiles}\n    </div>\n  );\n};\n"],
-  "mappings": "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U;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAC1B,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACtF,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACt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",
+  "sources": ["../../tslib/tslib.es6.mjs", "../../fast-deep-equal/react.js", "../../js-cookie/src/js.cookie.js", "../../toggle-selection/index.js", "../../copy-to-clipboard/index.js", "../../react-tiles-dnd/node_modules/react-use/node_modules/nano-css/index.js", "../../react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/__dev__/warnOnMissingDependencies.js", "../../react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/cssom.js", "../../react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom/removeRule.js", "../../react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom.js", "../../react-tiles-dnd/node_modules/react-use/node_modules/nano-css/addon/vcssom/cssToTree.js", "../../screenfull/dist/screenfull.js", "../../react-universal-interface/src/render.ts", "../../react-universal-interface/src/wrapInStatefulComponent.ts", "../../react-universal-interface/src/addClassDecoratorSupport.ts", "../../react-universal-interface/src/createEnhancer.ts", "../../react-universal-interface/src/hookToRenderProp.ts", "../../react-universal-interface/src/index.ts", "../../fast-shallow-equal/index.js", "../../ts-easing/lib/index.js", "../../@use-gesture/core/dist/maths-0ab39ae9.esm.js", "../../@use-gesture/core/dist/actions-fe213e88.esm.js", "../../@use-gesture/react/dist/use-gesture-react.esm.js", "../../@use-gesture/core/dist/use-gesture-core.esm.js", "../../src/tile-layout/table-utils/table.ts", "../../src/tile-layout/table-utils/tiles-table.ts", "../../src/tile-layout/table-utils/tiles.ts", "../../src/tile-layout/strategies/move.ts", "../../src/tile-layout/strategies/reorder.ts", "../../src/tile-layout/useTileTable.ts", "../../react-tiles-dnd/node_modules/react-use/esm/factory/createMemo.js", "../../react-tiles-dnd/node_modules/react-use/esm/factory/createReducerContext.js", "../../react-tiles-dnd/node_modules/react-use/esm/factory/createReducer.js", "../../react-tiles-dnd/node_modules/react-use/esm/useUpdateEffect.js", "../../react-tiles-dnd/node_modules/react-use/esm/useFirstMountState.js", "../../react-tiles-dnd/node_modules/react-use/esm/factory/createStateContext.js", "../../react-tiles-dnd/node_modules/react-use/esm/useAsync.js", "../../react-tiles-dnd/node_modules/react-use/esm/useAsyncFn.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMountedState.js", "../../react-tiles-dnd/node_modules/react-use/esm/useAsyncRetry.js", "../../react-tiles-dnd/node_modules/react-use/esm/factory/createHTMLMediaHook.js", "../../react-tiles-dnd/node_modules/react-use/esm/useSetState.js", "../../react-tiles-dnd/node_modules/react-use/esm/misc/parseTimeRanges.js", "../../react-tiles-dnd/node_modules/react-use/esm/useAudio.js", "../../react-tiles-dnd/node_modules/react-use/esm/useBattery.js", "../../react-tiles-dnd/node_modules/react-use/esm/misc/util.js", "../../react-tiles-dnd/node_modules/react-use/esm/misc/isDeepEqual.js", "../../react-tiles-dnd/node_modules/react-use/esm/useBeforeUnload.js", "../../react-tiles-dnd/node_modules/react-use/esm/useToggle.js", "../../react-tiles-dnd/node_modules/react-use/esm/useClickAway.js", "../../react-tiles-dnd/node_modules/react-use/esm/useCookie.js", "../../react-tiles-dnd/node_modules/react-use/esm/useCopyToClipboard.js", "../../react-tiles-dnd/node_modules/react-use/esm/useCounter.js", "../../react-tiles-dnd/node_modules/react-use/esm/useGetSet.js", "../../react-tiles-dnd/node_modules/react-use/esm/useUpdate.js", "../../react-tiles-dnd/node_modules/react-use/esm/useCss.js", "../../react-tiles-dnd/node_modules/react-use/esm/useIsomorphicLayoutEffect.js", "../../react-tiles-dnd/node_modules/react-use/esm/useCustomCompareEffect.js", "../../react-tiles-dnd/node_modules/react-use/esm/useDebounce.js", "../../react-tiles-dnd/node_modules/react-use/esm/useTimeoutFn.js", "../../react-tiles-dnd/node_modules/react-use/esm/useDefault.js", "../../react-tiles-dnd/node_modules/react-use/esm/useDrop.js", "../../react-tiles-dnd/node_modules/react-use/esm/useDropArea.js", "../../react-tiles-dnd/node_modules/react-use/esm/useEffectOnce.js", "../../react-tiles-dnd/node_modules/react-use/esm/useEnsuredForwardedRef.js", "../../react-tiles-dnd/node_modules/react-use/esm/useEvent.js", "../../react-tiles-dnd/node_modules/react-use/esm/useError.js", "../../react-tiles-dnd/node_modules/react-use/esm/useFavicon.js", "../../react-tiles-dnd/node_modules/react-use/esm/useFullscreen.js", "../../react-tiles-dnd/node_modules/react-use/esm/useGeolocation.js", "../../react-tiles-dnd/node_modules/react-use/esm/useGetSetState.js", "../../react-tiles-dnd/node_modules/react-use/esm/useHarmonicIntervalFn.js", "../../react-tiles-dnd/node_modules/react-use/esm/useHover.js", "../../react-tiles-dnd/node_modules/react-use/esm/useHoverDirty.js", "../../react-tiles-dnd/node_modules/react-use/esm/useIdle.js", "../../react-tiles-dnd/node_modules/react-use/esm/useIntersection.js", "../../react-tiles-dnd/node_modules/react-use/esm/useInterval.js", "../../react-tiles-dnd/node_modules/react-use/esm/useKey.js", "../../react-tiles-dnd/node_modules/react-use/esm/factory/createBreakpoint.js", "../../react-tiles-dnd/node_modules/react-use/esm/useKeyPress.js", "../../react-tiles-dnd/node_modules/react-use/esm/useLatest.js", "../../react-tiles-dnd/node_modules/react-use/esm/useLifecycles.js", "../../react-tiles-dnd/node_modules/react-use/esm/useList.js", "../../react-tiles-dnd/node_modules/react-use/esm/useLocalStorage.js", "../../react-tiles-dnd/node_modules/react-use/esm/useLocation.js", "../../react-tiles-dnd/node_modules/react-use/esm/useLockBodyScroll.js", "../../react-tiles-dnd/node_modules/react-use/esm/useLogger.js", "../../react-tiles-dnd/node_modules/react-use/esm/useLongPress.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMap.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMedia.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMediaDevices.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMediatedState.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMethods.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMotion.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMouse.js", "../../react-tiles-dnd/node_modules/react-use/esm/useRafState.js", "../../react-tiles-dnd/node_modules/react-use/esm/useUnmount.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMouseWheel.js", "../../react-tiles-dnd/node_modules/react-use/esm/useNetworkState.js", "../../react-tiles-dnd/node_modules/react-use/esm/useObservable.js", "../../react-tiles-dnd/node_modules/react-use/esm/useOrientation.js", "../../react-tiles-dnd/node_modules/react-use/esm/usePageLeave.js", "../../react-tiles-dnd/node_modules/react-use/esm/usePermission.js", "../../react-tiles-dnd/node_modules/react-use/esm/usePrevious.js", "../../react-tiles-dnd/node_modules/react-use/esm/usePreviousDistinct.js", "../../react-tiles-dnd/node_modules/react-use/esm/usePromise.js", "../../react-tiles-dnd/node_modules/react-use/esm/useQueue.js", "../../react-tiles-dnd/node_modules/react-use/esm/useRaf.js", "../../react-tiles-dnd/node_modules/react-use/esm/useRafLoop.js", "../../react-tiles-dnd/node_modules/react-use/esm/useSearchParam.js", "../../react-tiles-dnd/node_modules/react-use/esm/useScratch.js", "../../react-tiles-dnd/node_modules/react-use/esm/useScroll.js", "../../react-tiles-dnd/node_modules/react-use/esm/useScrolling.js", "../../react-tiles-dnd/node_modules/react-use/esm/useSessionStorage.js", "../../react-tiles-dnd/node_modules/react-use/esm/useShallowCompareEffect.js", "../../react-tiles-dnd/node_modules/react-use/esm/useSize.js", "../../react-tiles-dnd/node_modules/react-use/esm/useSlider.js", "../../react-tiles-dnd/node_modules/react-use/esm/useSpeech.js", "../../react-tiles-dnd/node_modules/react-use/esm/useStateWithHistory.js", "../../react-tiles-dnd/node_modules/react-use/esm/useStateList.js", "../../react-tiles-dnd/node_modules/react-use/esm/useThrottle.js", "../../react-tiles-dnd/node_modules/react-use/esm/useThrottleFn.js", "../../react-tiles-dnd/node_modules/react-use/esm/useTitle.js", "../../react-tiles-dnd/node_modules/react-use/esm/useTween.js", "../../react-tiles-dnd/node_modules/react-use/esm/useUnmountPromise.js", "../../react-tiles-dnd/node_modules/react-use/esm/useUpsert.js", "../../react-tiles-dnd/node_modules/react-use/esm/useVibrate.js", "../../react-tiles-dnd/node_modules/react-use/esm/useVideo.js", "../../react-tiles-dnd/node_modules/react-use/esm/useStateValidator.js", "../../react-tiles-dnd/node_modules/react-use/esm/useScrollbarWidth.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMultiStateValidator.js", "../../react-tiles-dnd/node_modules/react-use/esm/useWindowScroll.js", "../../react-tiles-dnd/node_modules/react-use/esm/useWindowSize.js", "../../react-tiles-dnd/node_modules/react-use/esm/useMeasure.js", "../../react-tiles-dnd/node_modules/react-use/esm/usePinchZoom.js", "../../react-tiles-dnd/node_modules/react-use/esm/useRendersCount.js", "../../react-tiles-dnd/node_modules/react-use/esm/useSet.js", "../../react-tiles-dnd/node_modules/react-use/esm/factory/createGlobalState.js", "../../react-tiles-dnd/node_modules/react-use/esm/useHash.js", "../../react-tiles-dnd/esm/tile-layout/TilesContainer.module.css.js", "../../src/utils/useComposedRef.ts", "../../src/utils/joinclasses.ts", "../../lodash-es/_freeGlobal.js", "../../lodash-es/_root.js", "../../lodash-es/_Symbol.js", "../../lodash-es/_getRawTag.js", "../../lodash-es/_objectToString.js", "../../lodash-es/_baseGetTag.js", "../../lodash-es/isObjectLike.js", "../../lodash-es/isSymbol.js", "../../lodash-es/_baseToNumber.js", "../../lodash-es/_arrayMap.js", "../../lodash-es/isArray.js", "../../lodash-es/_baseToString.js", "../../lodash-es/_createMathOperation.js", "../../lodash-es/add.js", "../../lodash-es/_trimmedEndIndex.js", "../../lodash-es/_baseTrim.js", "../../lodash-es/isObject.js", "../../lodash-es/toNumber.js", "../../lodash-es/toFinite.js", "../../lodash-es/toInteger.js", "../../lodash-es/after.js", "../../lodash-es/identity.js", "../../lodash-es/isFunction.js", "../../lodash-es/_coreJsData.js", "../../lodash-es/_isMasked.js", "../../lodash-es/_toSource.js", "../../lodash-es/_baseIsNative.js", "../../lodash-es/_getValue.js", "../../lodash-es/_getNative.js", "../../lodash-es/_WeakMap.js", "../../lodash-es/_metaMap.js", "../../lodash-es/_baseSetData.js", "../../lodash-es/_baseCreate.js", "../../lodash-es/_createCtor.js", "../../lodash-es/_createBind.js", "../../lodash-es/_apply.js", "../../lodash-es/_composeArgs.js", "../../lodash-es/_composeArgsRight.js", "../../lodash-es/_countHolders.js", "../../lodash-es/_baseLodash.js", "../../lodash-es/_LazyWrapper.js", "../../lodash-es/noop.js", "../../lodash-es/_getData.js", "../../lodash-es/_realNames.js", "../../lodash-es/_getFuncName.js", "../../lodash-es/_LodashWrapper.js", "../../lodash-es/_copyArray.js", "../../lodash-es/_wrapperClone.js", "../../lodash-es/wrapperLodash.js", "../../lodash-es/_isLaziable.js", "../../lodash-es/_shortOut.js", "../../lodash-es/_setData.js", "../../lodash-es/_getWrapDetails.js", "../../lodash-es/_insertWrapDetails.js", "../../lodash-es/constant.js", "../../lodash-es/_defineProperty.js", "../../lodash-es/_baseSetToString.js", "../../lodash-es/_setToString.js", "../../lodash-es/_arrayEach.js", "../../lodash-es/_baseFindIndex.js", "../../lodash-es/_baseIsNaN.js", "../../lodash-es/_strictIndexOf.js", "../../lodash-es/_baseIndexOf.js", "../../lodash-es/_arrayIncludes.js", "../../lodash-es/_updateWrapDetails.js", "../../lodash-es/_setWrapToString.js", "../../lodash-es/_createRecurry.js", "../../lodash-es/_getHolder.js", "../../lodash-es/_isIndex.js", "../../lodash-es/_reorder.js", "../../lodash-es/_replaceHolders.js", "../../lodash-es/_createHybrid.js", "../../lodash-es/_createCurry.js", "../../lodash-es/_createPartial.js", "../../lodash-es/_mergeData.js", "../../lodash-es/_createWrap.js", "../../lodash-es/ary.js", "../../lodash-es/_baseAssignValue.js", "../../lodash-es/eq.js", "../../lodash-es/_assignValue.js", "../../lodash-es/_copyObject.js", "../../lodash-es/_overRest.js", "../../lodash-es/_baseRest.js", "../../lodash-es/isLength.js", "../../lodash-es/isArrayLike.js", "../../lodash-es/_isIterateeCall.js", "../../lodash-es/_createAssigner.js", "../../lodash-es/_isPrototype.js", "../../lodash-es/_baseTimes.js", "../../lodash-es/_baseIsArguments.js", "../../lodash-es/isArguments.js", "../../lodash-es/stubFalse.js", "../../lodash-es/isBuffer.js", "../../lodash-es/_baseIsTypedArray.js", "../../lodash-es/_baseUnary.js", "../../lodash-es/_nodeUtil.js", "../../lodash-es/isTypedArray.js", "../../lodash-es/_arrayLikeKeys.js", "../../lodash-es/_overArg.js", "../../lodash-es/_nativeKeys.js", "../../lodash-es/_baseKeys.js", "../../lodash-es/keys.js", "../../lodash-es/assign.js", "../../lodash-es/_nativeKeysIn.js", "../../lodash-es/_baseKeysIn.js", "../../lodash-es/keysIn.js", "../../lodash-es/assignIn.js", "../../lodash-es/assignInWith.js", "../../lodash-es/assignWith.js", "../../lodash-es/_isKey.js", "../../lodash-es/_nativeCreate.js", "../../lodash-es/_hashClear.js", "../../lodash-es/_hashDelete.js", "../../lodash-es/_hashGet.js", "../../lodash-es/_hashHas.js", "../../lodash-es/_hashSet.js", "../../lodash-es/_Hash.js", "../../lodash-es/_listCacheClear.js", "../../lodash-es/_assocIndexOf.js", "../../lodash-es/_listCacheDelete.js", "../../lodash-es/_listCacheGet.js", "../../lodash-es/_listCacheHas.js", "../../lodash-es/_listCacheSet.js", "../../lodash-es/_ListCache.js", "../../lodash-es/_Map.js", "../../lodash-es/_mapCacheClear.js", "../../lodash-es/_isKeyable.js", "../../lodash-es/_getMapData.js", "../../lodash-es/_mapCacheDelete.js", "../../lodash-es/_mapCacheGet.js", "../../lodash-es/_mapCacheHas.js", "../../lodash-es/_mapCacheSet.js", "../../lodash-es/_MapCache.js", "../../lodash-es/memoize.js", "../../lodash-es/_memoizeCapped.js", "../../lodash-es/_stringToPath.js", "../../lodash-es/toString.js", "../../lodash-es/_castPath.js", "../../lodash-es/_toKey.js", "../../lodash-es/_baseGet.js", "../../lodash-es/get.js", "../../lodash-es/_baseAt.js", "../../lodash-es/_arrayPush.js", "../../lodash-es/_isFlattenable.js", "../../lodash-es/_baseFlatten.js", "../../lodash-es/flatten.js", "../../lodash-es/_flatRest.js", "../../lodash-es/at.js", "../../lodash-es/_getPrototype.js", "../../lodash-es/isPlainObject.js", "../../lodash-es/isError.js", "../../lodash-es/attempt.js", "../../lodash-es/before.js", "../../lodash-es/bind.js", "../../lodash-es/bindAll.js", "../../lodash-es/bindKey.js", "../../lodash-es/_baseSlice.js", "../../lodash-es/_castSlice.js", "../../lodash-es/_hasUnicode.js", "../../lodash-es/_asciiToArray.js", "../../lodash-es/_unicodeToArray.js", "../../lodash-es/_stringToArray.js", "../../lodash-es/_createCaseFirst.js", "../../lodash-es/upperFirst.js", "../../lodash-es/capitalize.js", "../../lodash-es/_arrayReduce.js", "../../lodash-es/_basePropertyOf.js", "../../lodash-es/_deburrLetter.js", "../../lodash-es/deburr.js", "../../lodash-es/_asciiWords.js", "../../lodash-es/_hasUnicodeWord.js", "../../lodash-es/_unicodeWords.js", "../../lodash-es/words.js", "../../lodash-es/_createCompounder.js", "../../lodash-es/camelCase.js", "../../lodash-es/castArray.js", "../../lodash-es/_createRound.js", "../../lodash-es/ceil.js", "../../lodash-es/chain.js", "../../lodash-es/chunk.js", "../../lodash-es/_baseClamp.js", "../../lodash-es/clamp.js", "../../lodash-es/_stackClear.js", "../../lodash-es/_stackDelete.js", "../../lodash-es/_stackGet.js", "../../lodash-es/_stackHas.js", "../../lodash-es/_stackSet.js", "../../lodash-es/_Stack.js", "../../lodash-es/_baseAssign.js", "../../lodash-es/_baseAssignIn.js", "../../lodash-es/_cloneBuffer.js", "../../lodash-es/_arrayFilter.js", "../../lodash-es/stubArray.js", "../../lodash-es/_getSymbols.js", "../../lodash-es/_copySymbols.js", "../../lodash-es/_getSymbolsIn.js", "../../lodash-es/_copySymbolsIn.js", "../../lodash-es/_baseGetAllKeys.js", "../../lodash-es/_getAllKeys.js", "../../lodash-es/_getAllKeysIn.js", "../../lodash-es/_DataView.js", "../../lodash-es/_Promise.js", "../../lodash-es/_Set.js", "../../lodash-es/_getTag.js", "../../lodash-es/_initCloneArray.js", "../../lodash-es/_Uint8Array.js", "../../lodash-es/_cloneArrayBuffer.js", "../../lodash-es/_cloneDataView.js", "../../lodash-es/_cloneRegExp.js", "../../lodash-es/_cloneSymbol.js", "../../lodash-es/_cloneTypedArray.js", "../../lodash-es/_initCloneByTag.js", "../../lodash-es/_initCloneObject.js", "../../lodash-es/_baseIsMap.js", "../../lodash-es/isMap.js", "../../lodash-es/_baseIsSet.js", "../../lodash-es/isSet.js", "../../lodash-es/_baseClone.js", "../../lodash-es/clone.js", "../../lodash-es/cloneDeep.js", "../../lodash-es/cloneDeepWith.js", "../../lodash-es/cloneWith.js", "../../lodash-es/commit.js", "../../lodash-es/compact.js", "../../lodash-es/concat.js", "../../lodash-es/_setCacheAdd.js", "../../lodash-es/_setCacheHas.js", "../../lodash-es/_SetCache.js", "../../lodash-es/_arraySome.js", "../../lodash-es/_cacheHas.js", "../../lodash-es/_equalArrays.js", "../../lodash-es/_mapToArray.js", "../../lodash-es/_setToArray.js", "../../lodash-es/_equalByTag.js", "../../lodash-es/_equalObjects.js", "../../lodash-es/_baseIsEqualDeep.js", "../../lodash-es/_baseIsEqual.js", "../../lodash-es/_baseIsMatch.js", "../../lodash-es/_isStrictComparable.js", "../../lodash-es/_getMatchData.js", "../../lodash-es/_matchesStrictComparable.js", "../../lodash-es/_baseMatches.js", "../../lodash-es/_baseHasIn.js", "../../lodash-es/_hasPath.js", "../../lodash-es/hasIn.js", "../../lodash-es/_baseMatchesProperty.js", "../../lodash-es/_baseProperty.js", "../../lodash-es/_basePropertyDeep.js", "../../lodash-es/property.js", "../../lodash-es/_baseIteratee.js", "../../lodash-es/cond.js", "../../lodash-es/_baseConformsTo.js", "../../lodash-es/_baseConforms.js", "../../lodash-es/conforms.js", "../../lodash-es/conformsTo.js", "../../lodash-es/_arrayAggregator.js", "../../lodash-es/_createBaseFor.js", "../../lodash-es/_baseFor.js", "../../lodash-es/_baseForOwn.js", "../../lodash-es/_createBaseEach.js", "../../lodash-es/_baseEach.js", "../../lodash-es/_baseAggregator.js", "../../lodash-es/_createAggregator.js", "../../lodash-es/countBy.js", "../../lodash-es/create.js", "../../lodash-es/curry.js", "../../lodash-es/curryRight.js", "../../lodash-es/now.js", "../../lodash-es/debounce.js", "../../lodash-es/defaultTo.js", "../../lodash-es/defaults.js", "../../lodash-es/_assignMergeValue.js", "../../lodash-es/isArrayLikeObject.js", "../../lodash-es/_safeGet.js", "../../lodash-es/toPlainObject.js", "../../lodash-es/_baseMergeDeep.js", "../../lodash-es/_baseMerge.js", "../../lodash-es/_customDefaultsMerge.js", "../../lodash-es/mergeWith.js", "../../lodash-es/defaultsDeep.js", "../../lodash-es/_baseDelay.js", "../../lodash-es/defer.js", "../../lodash-es/delay.js", "../../lodash-es/_arrayIncludesWith.js", "../../lodash-es/_baseDifference.js", "../../lodash-es/difference.js", "../../lodash-es/last.js", "../../lodash-es/differenceBy.js", "../../lodash-es/differenceWith.js", "../../lodash-es/divide.js", "../../lodash-es/drop.js", "../../lodash-es/dropRight.js", "../../lodash-es/_baseWhile.js", "../../lodash-es/dropRightWhile.js", "../../lodash-es/dropWhile.js", "../../lodash-es/_castFunction.js", "../../lodash-es/forEach.js", "../../lodash-es/_arrayEachRight.js", "../../lodash-es/_baseForRight.js", "../../lodash-es/_baseForOwnRight.js", "../../lodash-es/_baseEachRight.js", "../../lodash-es/forEachRight.js", "../../lodash-es/endsWith.js", "../../lodash-es/_baseToPairs.js", "../../lodash-es/_setToPairs.js", "../../lodash-es/_createToPairs.js", "../../lodash-es/toPairs.js", "../../lodash-es/toPairsIn.js", "../../lodash-es/_escapeHtmlChar.js", "../../lodash-es/escape.js", "../../lodash-es/escapeRegExp.js", "../../lodash-es/_arrayEvery.js", "../../lodash-es/_baseEvery.js", "../../lodash-es/every.js", "../../lodash-es/toLength.js", "../../lodash-es/_baseFill.js", "../../lodash-es/fill.js", "../../lodash-es/_baseFilter.js", "../../lodash-es/filter.js", "../../lodash-es/_createFind.js", "../../lodash-es/findIndex.js", "../../lodash-es/find.js", "../../lodash-es/_baseFindKey.js", "../../lodash-es/findKey.js", "../../lodash-es/findLastIndex.js", "../../lodash-es/findLast.js", "../../lodash-es/findLastKey.js", "../../lodash-es/head.js", "../../lodash-es/_baseMap.js", "../../lodash-es/map.js", "../../lodash-es/flatMap.js", "../../lodash-es/flatMapDeep.js", "../../lodash-es/flatMapDepth.js", "../../lodash-es/flattenDeep.js", "../../lodash-es/flattenDepth.js", "../../lodash-es/flip.js", "../../lodash-es/floor.js", "../../lodash-es/_createFlow.js", "../../lodash-es/flow.js", "../../lodash-es/flowRight.js", "../../lodash-es/forIn.js", "../../lodash-es/forInRight.js", "../../lodash-es/forOwn.js", "../../lodash-es/forOwnRight.js", "../../lodash-es/fromPairs.js", "../../lodash-es/_baseFunctions.js", "../../lodash-es/functions.js", "../../lodash-es/functionsIn.js", "../../lodash-es/groupBy.js", "../../lodash-es/_baseGt.js", "../../lodash-es/_createRelationalOperation.js", "../../lodash-es/gt.js", "../../lodash-es/gte.js", "../../lodash-es/_baseHas.js", "../../lodash-es/has.js", "../../lodash-es/_baseInRange.js", "../../lodash-es/inRange.js", "../../lodash-es/isString.js", "../../lodash-es/_baseValues.js", "../../lodash-es/values.js", "../../lodash-es/includes.js", "../../lodash-es/indexOf.js", "../../lodash-es/initial.js", "../../lodash-es/_baseIntersection.js", "../../lodash-es/_castArrayLikeObject.js", "../../lodash-es/intersection.js", "../../lodash-es/intersectionBy.js", "../../lodash-es/intersectionWith.js", "../../lodash-es/_baseInverter.js", "../../lodash-es/_createInverter.js", "../../lodash-es/invert.js", "../../lodash-es/invertBy.js", "../../lodash-es/_parent.js", "../../lodash-es/_baseInvoke.js", "../../lodash-es/invoke.js", "../../lodash-es/invokeMap.js", "../../lodash-es/_baseIsArrayBuffer.js", "../../lodash-es/isArrayBuffer.js", "../../lodash-es/isBoolean.js", "../../lodash-es/_baseIsDate.js", "../../lodash-es/isDate.js", "../../lodash-es/isElement.js", "../../lodash-es/isEmpty.js", "../../lodash-es/isEqual.js", "../../lodash-es/isEqualWith.js", "../../lodash-es/isFinite.js", "../../lodash-es/isInteger.js", "../../lodash-es/isMatch.js", "../../lodash-es/isMatchWith.js", "../../lodash-es/isNumber.js", "../../lodash-es/isNaN.js", "../../lodash-es/_isMaskable.js", "../../lodash-es/isNative.js", "../../lodash-es/isNil.js", "../../lodash-es/isNull.js", "../../lodash-es/_baseIsRegExp.js", "../../lodash-es/isRegExp.js", "../../lodash-es/isSafeInteger.js", "../../lodash-es/isUndefined.js", "../../lodash-es/isWeakMap.js", "../../lodash-es/isWeakSet.js", "../../lodash-es/iteratee.js", "../../lodash-es/join.js", "../../lodash-es/kebabCase.js", "../../lodash-es/keyBy.js", "../../lodash-es/_strictLastIndexOf.js", "../../lodash-es/lastIndexOf.js", "../../lodash-es/lowerCase.js", "../../lodash-es/lowerFirst.js", "../../lodash-es/_baseLt.js", "../../lodash-es/lt.js", "../../lodash-es/lte.js", "../../lodash-es/mapKeys.js", "../../lodash-es/mapValues.js", "../../lodash-es/matches.js", "../../lodash-es/matchesProperty.js", "../../lodash-es/_baseExtremum.js", "../../lodash-es/max.js", "../../lodash-es/maxBy.js", "../../lodash-es/_baseSum.js", "../../lodash-es/_baseMean.js", "../../lodash-es/mean.js", "../../lodash-es/meanBy.js", "../../lodash-es/merge.js", "../../lodash-es/method.js", "../../lodash-es/methodOf.js", "../../lodash-es/min.js", "../../lodash-es/minBy.js", "../../lodash-es/mixin.js", "../../lodash-es/multiply.js", "../../lodash-es/negate.js", "../../lodash-es/_iteratorToArray.js", "../../lodash-es/toArray.js", "../../lodash-es/next.js", "../../lodash-es/_baseNth.js", "../../lodash-es/nth.js", "../../lodash-es/nthArg.js", "../../lodash-es/_baseUnset.js", "../../lodash-es/_customOmitClone.js", "../../lodash-es/omit.js", "../../lodash-es/_baseSet.js", "../../lodash-es/_basePickBy.js", "../../lodash-es/pickBy.js", "../../lodash-es/omitBy.js", "../../lodash-es/once.js", "../../lodash-es/_baseSortBy.js", "../../lodash-es/_compareAscending.js", "../../lodash-es/_compareMultiple.js", "../../lodash-es/_baseOrderBy.js", "../../lodash-es/orderBy.js", "../../lodash-es/_createOver.js", "../../lodash-es/over.js", "../../lodash-es/_castRest.js", "../../lodash-es/overArgs.js", "../../lodash-es/overEvery.js", "../../lodash-es/overSome.js", "../../lodash-es/_baseRepeat.js", "../../lodash-es/_asciiSize.js", "../../lodash-es/_unicodeSize.js", "../../lodash-es/_stringSize.js", "../../lodash-es/_createPadding.js", "../../lodash-es/pad.js", "../../lodash-es/padEnd.js", "../../lodash-es/padStart.js", "../../lodash-es/parseInt.js", "../../lodash-es/partial.js", "../../lodash-es/partialRight.js", "../../lodash-es/partition.js", "../../lodash-es/_basePick.js", "../../lodash-es/pick.js", "../../lodash-es/plant.js", "../../lodash-es/propertyOf.js", "../../lodash-es/_baseIndexOfWith.js", "../../lodash-es/_basePullAll.js", "../../lodash-es/pullAll.js", "../../lodash-es/pull.js", "../../lodash-es/pullAllBy.js", "../../lodash-es/pullAllWith.js", "../../lodash-es/_basePullAt.js", "../../lodash-es/pullAt.js", "../../lodash-es/_baseRandom.js", "../../lodash-es/random.js", "../../lodash-es/_baseRange.js", "../../lodash-es/_createRange.js", "../../lodash-es/range.js", "../../lodash-es/rangeRight.js", "../../lodash-es/rearg.js", "../../lodash-es/_baseReduce.js", "../../lodash-es/reduce.js", "../../lodash-es/_arrayReduceRight.js", "../../lodash-es/reduceRight.js", "../../lodash-es/reject.js", "../../lodash-es/remove.js", "../../lodash-es/repeat.js", "../../lodash-es/replace.js", "../../lodash-es/rest.js", "../../lodash-es/result.js", "../../lodash-es/reverse.js", "../../lodash-es/round.js", "../../lodash-es/_arraySample.js", "../../lodash-es/_baseSample.js", "../../lodash-es/sample.js", "../../lodash-es/_shuffleSelf.js", "../../lodash-es/_arraySampleSize.js", "../../lodash-es/_baseSampleSize.js", "../../lodash-es/sampleSize.js", "../../lodash-es/set.js", "../../lodash-es/setWith.js", "../../lodash-es/_arrayShuffle.js", "../../lodash-es/_baseShuffle.js", "../../lodash-es/shuffle.js", "../../lodash-es/size.js", "../../lodash-es/slice.js", "../../lodash-es/snakeCase.js", "../../lodash-es/_baseSome.js", "../../lodash-es/some.js", "../../lodash-es/sortBy.js", "../../lodash-es/_baseSortedIndexBy.js", "../../lodash-es/_baseSortedIndex.js", "../../lodash-es/sortedIndex.js", "../../lodash-es/sortedIndexBy.js", "../../lodash-es/sortedIndexOf.js", "../../lodash-es/sortedLastIndex.js", "../../lodash-es/sortedLastIndexBy.js", "../../lodash-es/sortedLastIndexOf.js", "../../lodash-es/_baseSortedUniq.js", "../../lodash-es/sortedUniq.js", "../../lodash-es/sortedUniqBy.js", "../../lodash-es/split.js", "../../lodash-es/spread.js", "../../lodash-es/startCase.js", "../../lodash-es/startsWith.js", "../../lodash-es/stubObject.js", "../../lodash-es/stubString.js", "../../lodash-es/stubTrue.js", "../../lodash-es/subtract.js", "../../lodash-es/sum.js", "../../lodash-es/sumBy.js", "../../lodash-es/tail.js", "../../lodash-es/take.js", "../../lodash-es/takeRight.js", "../../lodash-es/takeRightWhile.js", "../../lodash-es/takeWhile.js", "../../lodash-es/tap.js", "../../lodash-es/_customDefaultsAssignIn.js", "../../lodash-es/_escapeStringChar.js", "../../lodash-es/_reInterpolate.js", "../../lodash-es/_reEscape.js", "../../lodash-es/_reEvaluate.js", "../../lodash-es/templateSettings.js", "../../lodash-es/template.js", "../../lodash-es/throttle.js", "../../lodash-es/thru.js", "../../lodash-es/times.js", "../../lodash-es/toIterator.js", "../../lodash-es/_baseWrapperValue.js", "../../lodash-es/wrapperValue.js", "../../lodash-es/toLower.js", "../../lodash-es/toPath.js", "../../lodash-es/toSafeInteger.js", "../../lodash-es/toUpper.js", "../../lodash-es/transform.js", "../../lodash-es/_charsEndIndex.js", "../../lodash-es/_charsStartIndex.js", "../../lodash-es/trim.js", "../../lodash-es/trimEnd.js", "../../lodash-es/trimStart.js", "../../lodash-es/truncate.js", "../../lodash-es/unary.js", "../../lodash-es/_unescapeHtmlChar.js", "../../lodash-es/unescape.js", "../../lodash-es/_createSet.js", "../../lodash-es/_baseUniq.js", "../../lodash-es/union.js", "../../lodash-es/unionBy.js", "../../lodash-es/unionWith.js", "../../lodash-es/uniq.js", "../../lodash-es/uniqBy.js", "../../lodash-es/uniqWith.js", "../../lodash-es/uniqueId.js", "../../lodash-es/unset.js", "../../lodash-es/unzip.js", "../../lodash-es/unzipWith.js", "../../lodash-es/_baseUpdate.js", "../../lodash-es/update.js", "../../lodash-es/updateWith.js", "../../lodash-es/upperCase.js", "../../lodash-es/valuesIn.js", "../../lodash-es/without.js", "../../lodash-es/wrap.js", "../../lodash-es/wrapperAt.js", "../../lodash-es/wrapperChain.js", "../../lodash-es/wrapperReverse.js", "../../lodash-es/_baseXor.js", "../../lodash-es/xor.js", "../../lodash-es/xorBy.js", "../../lodash-es/xorWith.js", "../../lodash-es/zip.js", "../../lodash-es/_baseZipObject.js", "../../lodash-es/zipObject.js", "../../lodash-es/zipObjectDeep.js", "../../lodash-es/zipWith.js", "../../lodash-es/array.default.js", "../../lodash-es/collection.default.js", "../../lodash-es/date.default.js", "../../lodash-es/function.default.js", "../../lodash-es/lang.default.js", "../../lodash-es/math.default.js", "../../lodash-es/number.default.js", "../../lodash-es/object.default.js", "../../lodash-es/seq.default.js", "../../lodash-es/string.default.js", "../../lodash-es/util.default.js", "../../lodash-es/_lazyClone.js", "../../lodash-es/_lazyReverse.js", "../../lodash-es/_getView.js", "../../lodash-es/_lazyValue.js", "../../lodash-es/lodash.default.js", "../../src/tile-layout/TilesContainer.tsx"],
+  "sourcesContent": ["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        continue;\n      }\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n", "/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t//     character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n", "\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n", "\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n  \"text/plain\": \"Text\",\n  \"text/html\": \"Url\",\n  \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n    message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement(\"span\");\n    mark.textContent = text;\n    // avoid screen readers from reading out loud the text\n    mark.ariaHidden = \"true\"\n    // reset user styles for span element\n    mark.style.all = \"unset\";\n    // prevents scrolling to the end of the page\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\";\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = \"pre\";\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function(e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === \"undefined\") { // IE 11\n          debug && console.warn(\"unable to use e.clipboardData\");\n          debug && console.warn(\"trying IE specific stuff\");\n          window.clipboardData.clearData();\n          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n          window.clipboardData.setData(format, text);\n        } else { // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand(\"copy\");\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      options.onCopy && options.onCopy(window.clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n", "'use strict';\n\nvar KEBAB_REGEX = /[A-Z]/g;\n\nvar hash = function (str) {\n    var h = 5381, i = str.length;\n\n    while (i) h = (h * 33) ^ str.charCodeAt(--i);\n\n    return '_' + (h >>> 0).toString(36);\n};\n\nexports.create = function (config) {\n    config = config || {};\n    var assign = config.assign || Object.assign;\n    var client = typeof window === 'object';\n\n    // Check if we are really in browser environment.\n    if (process.env.NODE_ENV !== 'production') {\n        if (client) {\n            if ((typeof document !== 'object') || !document.getElementsByTagName('HTML')) {\n                console.error(\n                    'nano-css detected browser environment because of \"window\" global, but ' +\n                    '\"document\" global seems to be defective.'\n                );\n            }\n        }\n    }\n\n    var renderer = assign({\n        raw: '',\n        pfx: '_',\n        client: client,\n        assign: assign,\n        stringify: JSON.stringify,\n        kebab: function (prop) {\n            return prop.replace(KEBAB_REGEX, '-$&').toLowerCase();\n        },\n        decl: function (key, value) {\n            key = renderer.kebab(key);\n            return key + ':' + value + ';';\n        },\n        hash: function (obj) {\n            return hash(renderer.stringify(obj));\n        },\n        selector: function (parent, selector) {\n            return parent + (selector[0] === ':' ? ''  : ' ') + selector;\n        },\n        putRaw: function (rawCssRule) {\n            renderer.raw += rawCssRule;\n        }\n    }, config);\n\n    if (renderer.client) {\n        if (!renderer.sh)\n            document.head.appendChild(renderer.sh = document.createElement('style'));\n\n        if (process.env.NODE_ENV !== 'production') {\n            renderer.sh.setAttribute('data-nano-css-dev', '');\n\n            // Test style sheet used in DEV mode to test if .insetRule() would throw.\n            renderer.shTest = document.createElement('style');\n            renderer.shTest.setAttribute('data-nano-css-dev-tests', '');\n            document.head.appendChild(renderer.shTest);\n        }\n\n        renderer.putRaw = function (rawCssRule) {\n            // .insertRule() is faster than .appendChild(), that's why we use it in PROD.\n            // But CSS injected using .insertRule() is not displayed in Chrome Devtools,\n            // that's why we use .appendChild in DEV.\n            if (process.env.NODE_ENV === 'production') {\n                var sheet = renderer.sh.sheet;\n\n                // Unknown pseudo-selectors will throw, this try/catch swallows all errors.\n                try {\n                    sheet.insertRule(rawCssRule, sheet.cssRules.length);\n                // eslint-disable-next-line no-empty\n                } catch (error) {}\n            } else {\n                // Test if .insertRule() works in dev mode. Unknown pseudo-selectors will throw when\n                // .insertRule() is used, but .appendChild() will not throw.\n                try {\n                    renderer.shTest.sheet.insertRule(rawCssRule, renderer.shTest.sheet.cssRules.length);\n                } catch (error) {\n                    if (config.verbose) {\n                        console.error(error);\n                    }\n                }\n\n                // Insert pretty-printed CSS for dev mode.\n                renderer.sh.appendChild(document.createTextNode(rawCssRule));\n            }\n        };\n    }\n\n    renderer.put = function (selector, decls, atrule) {\n        var str = '';\n        var prop, value;\n        var postponed = [];\n\n        for (prop in decls) {\n            value = decls[prop];\n\n            if ((value instanceof Object) && !(value instanceof Array)) {\n                postponed.push(prop);\n            } else {\n                if ((process.env.NODE_ENV !== 'production') && !renderer.sourcemaps) {\n                    str += '    ' + renderer.decl(prop, value, selector, atrule) + '\\n';\n                } else {\n                    str += renderer.decl(prop, value, selector, atrule);\n                }\n            }\n        }\n\n        if (str) {\n            if ((process.env.NODE_ENV !== 'production') && !renderer.sourcemaps) {\n                str = '\\n' + selector + ' {\\n' + str + '}\\n';\n            } else {\n                str = selector + '{' + str + '}';\n            }\n            renderer.putRaw(atrule ? atrule + '{' + str + '}' : str);\n        }\n\n        for (var i = 0; i < postponed.length; i++) {\n            prop = postponed[i];\n\n            if (prop[0] === '@' && prop !== '@font-face') {\n                renderer.putAt(selector, decls[prop], prop);\n            } else {\n                renderer.put(renderer.selector(selector, prop), decls[prop], atrule);\n            }\n        }\n    };\n\n    renderer.putAt = renderer.put;\n\n    return renderer;\n};\n", "'use strict';\n\nvar pkgName = 'nano-css';\n\nmodule.exports = function warnOnMissingDependencies (addon, renderer, deps) {\n    var missing = [];\n\n    for (var i = 0; i < deps.length; i++) {\n        var name = deps[i];\n\n        if (!renderer[name]) {\n            missing.push(name);\n        }\n    }\n\n    if (missing.length) {\n        var str = 'Addon \"' + addon + '\" is missing the following dependencies:';\n\n        for (var j = 0; j < missing.length; j++) {\n            str += '\\n require(\"' + pkgName + '/addon/' + missing[j] + '\").addon(nano);';\n        }\n\n        throw new Error(str);\n    }\n};\n", "'use strict';\n\nexports.addon = function (renderer) {\n    // CSSOM support only browser environment.\n    if (!renderer.client) return;\n\n    if (process.env.NODE_ENV !== 'production') {\n        require('./__dev__/warnOnMissingDependencies')('cssom', renderer, ['sh']);\n    }\n\n    // Style sheet for media queries.\n    document.head.appendChild(renderer.msh = document.createElement('style'));\n\n    renderer.createRule = function (selector, prelude) {\n        var rawCss = selector + '{}';\n        if (prelude) rawCss = prelude + '{' + rawCss + '}';\n        var sheet = prelude ? renderer.msh.sheet : renderer.sh.sheet;\n        var index = sheet.insertRule(rawCss, sheet.cssRules.length);\n        var rule = (sheet.cssRules || sheet.rules)[index];\n\n        // Keep track of `index` where rule was inserted in the sheet. This is\n        // needed for rule deletion.\n        rule.index = index;\n\n        if (prelude) {\n            // If rule has media query (it has prelude), move style (CSSStyleDeclaration)\n            // object to the \"top\" to normalize it with a rule without the media\n            // query, so that both rules have `.style` property available.\n            var selectorRule = (rule.cssRules || rule.rules)[0];\n            rule.style = selectorRule.style;\n            rule.styleMap = selectorRule.styleMap;\n        }\n\n        return rule;\n    };\n};\n", "function removeRule (rule) {\n    var maxIndex = rule.index;\n    var sh = rule.parentStyleSheet;\n    var rules = sh.cssRules || sh.rules;\n    maxIndex = Math.max(maxIndex, rules.length - 1);\n    while (maxIndex >= 0) {\n        if (rules[maxIndex] === rule) {\n            sh.deleteRule(maxIndex);\n            break;\n        }\n        maxIndex--;\n    }\n}\n\nexports.removeRule = removeRule;\n", "'use strict';\n\nvar removeRule = require('./vcssom/removeRule').removeRule;\n\nexports.addon = function (renderer) {\n    // VCSSOM support only browser environment.\n    if (!renderer.client) return;\n\n    if (process.env.NODE_ENV !== 'production') {\n        require('./__dev__/warnOnMissingDependencies')('cssom', renderer, ['createRule']); // cssom\n    }\n\n    var kebab = renderer.kebab;\n\n    function VRule (selector, prelude) {\n        this.rule = renderer.createRule(selector, prelude);\n        this.decl = {};\n    }\n    VRule.prototype.diff = function (newDecl) {\n        var oldDecl = this.decl;\n        var style = this.rule.style;\n        var property;\n        for (property in oldDecl)\n            if (newDecl[property] === undefined)\n                style.removeProperty(property);\n        for (property in newDecl)\n            if (newDecl[property] !== oldDecl[property])\n                style.setProperty(kebab(property), newDecl[property]);\n        this.decl = newDecl;\n    };\n    VRule.prototype.del = function () {\n        removeRule(this.rule);\n    };\n\n    function VSheet () {\n        /**\n         * {\n         *   '<at-rule-prelude>': {\n         *     '<selector>': {\n         *       color: 'red\n         *     }\n         *   }\n         * }\n         */\n        this.tree = {};\n    }\n    VSheet.prototype.diff = function (newTree) {\n        var oldTree = this.tree;\n\n        // Remove media queries not present in new tree.\n        for (var prelude in oldTree) {\n            if (newTree[prelude] === undefined) {\n                var rules = oldTree[prelude];\n                for (var selector in rules)\n                    rules[selector].del();\n            }\n        }\n\n        for (var prelude in newTree) {\n            if (oldTree[prelude] === undefined) {\n                // Whole media query is new.\n                for (var selector in newTree[prelude]) {\n                    var rule = new VRule(selector, prelude);\n                    rule.diff(newTree[prelude][selector]);\n                    newTree[prelude][selector] = rule;\n                }\n            } else {\n                // Old tree already has rules with this media query.\n                var oldRules = oldTree[prelude];\n                var newRules = newTree[prelude];\n\n                // Remove rules not present in new tree.\n                for (var selector in oldRules)\n                    if (!newRules[selector])\n                        oldRules[selector].del();\n\n                // Apply new rules.\n                for (var selector in newRules) {\n                    var rule = oldRules[selector];\n                    if (rule) {\n                        rule.diff(newRules[selector]);\n                        newRules[selector] = rule;\n                    } else {\n                        rule = new VRule(selector, prelude);\n                        rule.diff(newRules[selector]);\n                        newRules[selector] = rule;\n                    }\n                }\n            }\n        }\n\n        this.tree = newTree;\n    };\n\n    renderer.VRule = VRule;\n    renderer.VSheet = VSheet;\n};\n", "function cssToTree (tree, css, selector, prelude) {\n    var declarations = {};\n    var hasDeclarations = false;\n    var key, value;\n\n    for (key in css) {\n        value = css[key];\n        if (typeof value !== 'object') {\n            hasDeclarations = true;\n            declarations[key] = value;\n        }\n    }\n\n    if (hasDeclarations) {\n        if (!tree[prelude]) tree[prelude] = {};\n        tree[prelude][selector] = declarations;\n    }\n\n    for (key in css) {\n        value = css[key];\n        if (typeof value === 'object') {\n            if (key[0] === '@') {\n                cssToTree(tree, value, selector, key);\n            } else {\n                var hasCurrentSymbol = key.indexOf('&') > -1;\n                var selectorParts = selector.split(',');\n                if (hasCurrentSymbol) {\n                    for (var i = 0; i < selectorParts.length; i++) {\n                        selectorParts[i] = key.replace(/&/g, selectorParts[i]);\n                    }\n                } else {\n                    for (var i = 0; i < selectorParts.length; i++) {\n                        selectorParts[i] = selectorParts[i] + ' ' + key;\n                    }\n                }\n                cssToTree(tree, value, selectorParts.join(','), prelude);\n            }\n        }\n    }\n};\n\nexports.cssToTree = cssToTree;\n", "/*!\n* screenfull\n* v5.2.0 - 2021-11-03\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n", "import {createElement as h, cloneElement, version} from 'react';\n\nconst isReact16Plus = parseInt(version.substr(0, version.indexOf('.'))) > 15;\nconst isFn = fn => typeof fn === 'function';\n\nconst render = (props, data, ...more) => {\n    if (process.env.NODE_ENV !== 'production') {\n        if (typeof props !== 'object') {\n            throw new TypeError('renderChildren(props, data) first argument must be a props object.');\n        }\n\n        const {children, render} = props;\n\n        if (isFn(children) && isFn(render)) {\n            console.warn(\n                'Both \"render\" and \"children\" are specified for in a universal interface component. ' +\n                'Children will be used.'\n            );\n            console.trace();\n        }\n\n        if (typeof data !== 'object') {\n            console.warn(\n                'Universal component interface normally expects data to be an object, ' +\n                `\"${typeof data}\" received.`\n            );\n            console.trace();\n        }\n    }\n\n    const {render, children = render, component, comp = component} = props;\n\n    if (isFn(children)) return children(data, ...more);\n\n    if (comp) {\n        return h(comp, data);\n    }\n\n    if (children instanceof Array)\n        return isReact16Plus ? children : h('div', null, ...children);\n\n    if (children && (children instanceof Object)) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (!children.type || ((typeof children.type !== 'string') && (typeof children.type !== 'function') && (typeof children.type !== 'symbol'))) {\n                console.warn(\n                    'Universal component interface received object as children, ' +\n                    'expected React element, but received unexpected React \"type\".'\n                );\n                console.trace();\n            }\n\n            if (typeof children.type === 'string')\n                return children;\n\n            return cloneElement(children, Object.assign({}, children.props, data));\n        } else {\n            if (typeof children.type === 'string')\n                return children;\n\n            return cloneElement(children, Object.assign({}, children.props, data));\n        }\n    }\n\n    return children || null;\n};\n\nexport default render;\n", "import * as React from 'react';\n\nconst wrapInStatefulComponent = (Comp) => {\n    const Decorated = class extends React.Component<any, any> {\n        render () {\n            return Comp(this.props, this.context);\n        }\n    };\n\n    if (process.env.NODE_ENV !== 'production') {\n        (Decorated as any).displayName = `Decorated(${Comp.displayName || Comp.name})`;\n    }\n\n    return Decorated;\n};\n\nexport default wrapInStatefulComponent;\n", "import wrapInStatefulComponent from './wrapInStatefulComponent';\n\nconst addClassDecoratorSupport = (Comp) => {\n    const isSFC = !Comp.prototype;\n    return !isSFC ? Comp : wrapInStatefulComponent(Comp);\n};\n\nexport default addClassDecoratorSupport;\n", "import * as React from 'react';\nimport addClassDecoratorSupport from './addClassDecoratorSupport';\n\nconst h = React.createElement;\n\nconst noWrap = (Comp, propName, props, state) => h(Comp, propName ?\n  {[propName]: state, ...props} :\n  {...state, ...props}\n);\n\nexport const divWrapper = (Comp, propName, props, state) =>\n  h('div', null, noWrap(Comp, propName, props, state)) as any;\n\nconst createEnhancer = (Facc, prop?: string, wrapper = noWrap) => {\n    const enhancer = (Comp, propName: any = prop, faccProps: object = null) => {\n        const isClassDecoratorMethodCall = typeof Comp === 'string';\n\n        if (isClassDecoratorMethodCall) {\n            return (Klass) => enhancer(Klass, Comp as any || prop, propName as any);\n        }\n\n        const Enhanced = (props) =>\n            h(Facc, faccProps, (state) => wrapper(Comp, propName, props, state));\n\n        if (process.env.NODE_ENV !== 'production') {\n            (Enhanced as any).displayName = `${Facc.displayName || Facc.name}(${Comp.displayName || Comp.name})`;\n        }\n\n        return isClassDecoratorMethodCall ? addClassDecoratorSupport(Enhanced) : Enhanced;\n    };\n\n    return enhancer;\n}\n\nexport default createEnhancer;\n", "import {FC} from 'react';\nimport render from './render';\n\nexport type MapPropsToArgs<Props extends {}, Args extends any[]> = (props: Props) => Args;\nexport type CreateRenderProp = <Props extends {}, Args extends any[], State extends any>(hook: (...args: Args) => State, mapPropsToArgs?: MapPropsToArgs<Props, Args>) => FC<Props>;\n\nconst defaultMapPropsToArgs = props => [props];\n\nconst hookToRenderProp: CreateRenderProp = (hook, mapPropsToArgs = defaultMapPropsToArgs as any) =>\n    props => render(props, hook(...mapPropsToArgs(props)));\n\nexport default hookToRenderProp;\n", "import render from './render';\nimport createEnhancer from './createEnhancer';\nimport hookToRenderProp from './hookToRenderProp';\n\nexport interface UniversalProps<Data> {\n    children?: ((data: Data) => React.ReactNode) | React.ReactNode;\n    render?: (data: Data) => React.ReactNode;\n    comp?: React.ComponentType<Data & any>;\n    component?: React.ComponentType<Data & any>;\n}\n\nexport {\n    render,\n    createEnhancer,\n    hookToRenderProp,\n};\n", "var keyList = Object.keys;\n\nexports.equal = function equal (a, b) {\n  if (a === b) return true;\n  if (!(a instanceof Object) || !(b instanceof Object)) return false;\n\n  var keys = keyList(a);\n  var length = keys.length;\n\n  for (var i = 0; i < length; i++)\n    if (!(keys[i] in b)) return false;\n\n  for (var i = 0; i < length; i++)\n    if (a[keys[i]] !== b[keys[i]]) return false;\n\n  return length === keyList(b).length;\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.easing = {\n    // No easing, no acceleration\n    linear: function (t) { return t; },\n    // Accelerates fast, then slows quickly towards end.\n    quadratic: function (t) { return t * (-(t * t) * t + 4 * t * t - 6 * t + 4); },\n    // Overshoots over 1 and then returns to 1 towards end.\n    cubic: function (t) { return t * (4 * t * t - 9 * t + 6); },\n    // Overshoots over 1 multiple times - wiggles around 1.\n    elastic: function (t) { return t * (33 * t * t * t * t - 106 * t * t * t + 126 * t * t - 67 * t + 15); },\n    // Accelerating from zero velocity\n    inQuad: function (t) { return t * t; },\n    // Decelerating to zero velocity\n    outQuad: function (t) { return t * (2 - t); },\n    // Acceleration until halfway, then deceleration\n    inOutQuad: function (t) { return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t; },\n    // Accelerating from zero velocity\n    inCubic: function (t) { return t * t * t; },\n    // Decelerating to zero velocity\n    outCubic: function (t) { return (--t) * t * t + 1; },\n    // Acceleration until halfway, then deceleration\n    inOutCubic: function (t) { return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; },\n    // Accelerating from zero velocity\n    inQuart: function (t) { return t * t * t * t; },\n    // Decelerating to zero velocity\n    outQuart: function (t) { return 1 - (--t) * t * t * t; },\n    // Acceleration until halfway, then deceleration\n    inOutQuart: function (t) { return t < .5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t; },\n    // Accelerating from zero velocity\n    inQuint: function (t) { return t * t * t * t * t; },\n    // Decelerating to zero velocity\n    outQuint: function (t) { return 1 + (--t) * t * t * t * t; },\n    // Acceleration until halfway, then deceleration\n    inOutQuint: function (t) { return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t; },\n    // Accelerating from zero velocity\n    inSine: function (t) { return -Math.cos(t * (Math.PI / 2)) + 1; },\n    // Decelerating to zero velocity\n    outSine: function (t) { return Math.sin(t * (Math.PI / 2)); },\n    // Accelerating until halfway, then decelerating\n    inOutSine: function (t) { return -(Math.cos(Math.PI * t) - 1) / 2; },\n    // Exponential accelerating from zero velocity\n    inExpo: function (t) { return Math.pow(2, 10 * (t - 1)); },\n    // Exponential decelerating to zero velocity\n    outExpo: function (t) { return -Math.pow(2, -10 * t) + 1; },\n    // Exponential accelerating until halfway, then decelerating\n    inOutExpo: function (t) {\n        t /= .5;\n        if (t < 1)\n            return Math.pow(2, 10 * (t - 1)) / 2;\n        t--;\n        return (-Math.pow(2, -10 * t) + 2) / 2;\n    },\n    // Circular accelerating from zero velocity\n    inCirc: function (t) { return -Math.sqrt(1 - t * t) + 1; },\n    // Circular decelerating to zero velocity Moves VERY fast at the beginning and\n    // then quickly slows down in the middle. This tween can actually be used\n    // in continuous transitions where target value changes all the time,\n    // because of the very quick start, it hides the jitter between target value changes.\n    outCirc: function (t) { return Math.sqrt(1 - (t = t - 1) * t); },\n    // Circular acceleration until halfway, then deceleration\n    inOutCirc: function (t) {\n        t /= .5;\n        if (t < 1)\n            return -(Math.sqrt(1 - t * t) - 1) / 2;\n        t -= 2;\n        return (Math.sqrt(1 - t * t) + 1) / 2;\n    }\n};\n", "function clamp(v, min, max) {\n  return Math.max(min, Math.min(v, max));\n}\nconst V = {\n  toVector(v, fallback) {\n    if (v === undefined) v = fallback;\n    return Array.isArray(v) ? v : [v, v];\n  },\n  add(v1, v2) {\n    return [v1[0] + v2[0], v1[1] + v2[1]];\n  },\n  sub(v1, v2) {\n    return [v1[0] - v2[0], v1[1] - v2[1]];\n  },\n  addTo(v1, v2) {\n    v1[0] += v2[0];\n    v1[1] += v2[1];\n  },\n  subTo(v1, v2) {\n    v1[0] -= v2[0];\n    v1[1] -= v2[1];\n  }\n};\nfunction rubberband(distance, dimension, constant) {\n  if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5);\n  return distance * dimension * constant / (dimension + constant * distance);\n}\nfunction rubberbandIfOutOfBounds(position, min, max, constant = 0.15) {\n  if (constant === 0) return clamp(position, min, max);\n  if (position < min) return -rubberband(min - position, max - min, constant) + min;\n  if (position > max) return +rubberband(position - max, max - min, constant) + max;\n  return position;\n}\nfunction computeRubberband(bounds, [Vx, Vy], [Rx, Ry]) {\n  const [[X0, X1], [Y0, Y1]] = bounds;\n  return [rubberbandIfOutOfBounds(Vx, X0, X1, Rx), rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)];\n}\n\nexport { V, computeRubberband as c, rubberbandIfOutOfBounds as r };\n", "import { V, c as computeRubberband } from './maths-0ab39ae9.esm.js';\n\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\n\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\n\nconst EVENT_TYPE_MAP = {\n  pointer: {\n    start: 'down',\n    change: 'move',\n    end: 'up'\n  },\n  mouse: {\n    start: 'down',\n    change: 'move',\n    end: 'up'\n  },\n  touch: {\n    start: 'start',\n    change: 'move',\n    end: 'end'\n  },\n  gesture: {\n    start: 'start',\n    change: 'change',\n    end: 'end'\n  }\n};\nfunction capitalize(string) {\n  if (!string) return '';\n  return string[0].toUpperCase() + string.slice(1);\n}\nconst actionsWithoutCaptureSupported = ['enter', 'leave'];\nfunction hasCapture(capture = false, actionKey) {\n  return capture && !actionsWithoutCaptureSupported.includes(actionKey);\n}\nfunction toHandlerProp(device, action = '', capture = false) {\n  const deviceProps = EVENT_TYPE_MAP[device];\n  const actionKey = deviceProps ? deviceProps[action] || action : action;\n  return 'on' + capitalize(device) + capitalize(actionKey) + (hasCapture(capture, actionKey) ? 'Capture' : '');\n}\nconst pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];\nfunction parseProp(prop) {\n  let eventKey = prop.substring(2).toLowerCase();\n  const passive = !!~eventKey.indexOf('passive');\n  if (passive) eventKey = eventKey.replace('passive', '');\n  const captureKey = pointerCaptureEvents.includes(eventKey) ? 'capturecapture' : 'capture';\n  const capture = !!~eventKey.indexOf(captureKey);\n  if (capture) eventKey = eventKey.replace('capture', '');\n  return {\n    device: eventKey,\n    capture,\n    passive\n  };\n}\nfunction toDomEventType(device, action = '') {\n  const deviceProps = EVENT_TYPE_MAP[device];\n  const actionKey = deviceProps ? deviceProps[action] || action : action;\n  return device + actionKey;\n}\nfunction isTouch(event) {\n  return 'touches' in event;\n}\nfunction getPointerType(event) {\n  if (isTouch(event)) return 'touch';\n  if ('pointerType' in event) return event.pointerType;\n  return 'mouse';\n}\nfunction getCurrentTargetTouchList(event) {\n  return Array.from(event.touches).filter(e => {\n    var _event$currentTarget, _event$currentTarget$;\n    return e.target === event.currentTarget || ((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || (_event$currentTarget$ = _event$currentTarget.contains) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.call(_event$currentTarget, e.target));\n  });\n}\nfunction getTouchList(event) {\n  return event.type === 'touchend' || event.type === 'touchcancel' ? event.changedTouches : event.targetTouches;\n}\nfunction getValueEvent(event) {\n  return isTouch(event) ? getTouchList(event)[0] : event;\n}\nfunction distanceAngle(P1, P2) {\n  try {\n    const dx = P2.clientX - P1.clientX;\n    const dy = P2.clientY - P1.clientY;\n    const cx = (P2.clientX + P1.clientX) / 2;\n    const cy = (P2.clientY + P1.clientY) / 2;\n    const distance = Math.hypot(dx, dy);\n    const angle = -(Math.atan2(dx, dy) * 180) / Math.PI;\n    const origin = [cx, cy];\n    return {\n      angle,\n      distance,\n      origin\n    };\n  } catch (_unused) {}\n  return null;\n}\nfunction touchIds(event) {\n  return getCurrentTargetTouchList(event).map(touch => touch.identifier);\n}\nfunction touchDistanceAngle(event, ids) {\n  const [P1, P2] = Array.from(event.touches).filter(touch => ids.includes(touch.identifier));\n  return distanceAngle(P1, P2);\n}\nfunction pointerId(event) {\n  const valueEvent = getValueEvent(event);\n  return isTouch(event) ? valueEvent.identifier : valueEvent.pointerId;\n}\nfunction pointerValues(event) {\n  const valueEvent = getValueEvent(event);\n  return [valueEvent.clientX, valueEvent.clientY];\n}\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\nfunction wheelValues(event) {\n  let {\n    deltaX,\n    deltaY,\n    deltaMode\n  } = event;\n  if (deltaMode === 1) {\n    deltaX *= LINE_HEIGHT;\n    deltaY *= LINE_HEIGHT;\n  } else if (deltaMode === 2) {\n    deltaX *= PAGE_HEIGHT;\n    deltaY *= PAGE_HEIGHT;\n  }\n  return [deltaX, deltaY];\n}\nfunction scrollValues(event) {\n  var _ref, _ref2;\n  const {\n    scrollX,\n    scrollY,\n    scrollLeft,\n    scrollTop\n  } = event.currentTarget;\n  return [(_ref = scrollX !== null && scrollX !== void 0 ? scrollX : scrollLeft) !== null && _ref !== void 0 ? _ref : 0, (_ref2 = scrollY !== null && scrollY !== void 0 ? scrollY : scrollTop) !== null && _ref2 !== void 0 ? _ref2 : 0];\n}\nfunction getEventDetails(event) {\n  const payload = {};\n  if ('buttons' in event) payload.buttons = event.buttons;\n  if ('shiftKey' in event) {\n    const {\n      shiftKey,\n      altKey,\n      metaKey,\n      ctrlKey\n    } = event;\n    Object.assign(payload, {\n      shiftKey,\n      altKey,\n      metaKey,\n      ctrlKey\n    });\n  }\n  return payload;\n}\n\nfunction call(v, ...args) {\n  if (typeof v === 'function') {\n    return v(...args);\n  } else {\n    return v;\n  }\n}\nfunction noop() {}\nfunction chain(...fns) {\n  if (fns.length === 0) return noop;\n  if (fns.length === 1) return fns[0];\n  return function () {\n    let result;\n    for (const fn of fns) {\n      result = fn.apply(this, arguments) || result;\n    }\n    return result;\n  };\n}\nfunction assignDefault(value, fallback) {\n  return Object.assign({}, fallback, value || {});\n}\n\nconst BEFORE_LAST_KINEMATICS_DELAY = 32;\nclass Engine {\n  constructor(ctrl, args, key) {\n    this.ctrl = ctrl;\n    this.args = args;\n    this.key = key;\n    if (!this.state) {\n      this.state = {};\n      this.computeValues([0, 0]);\n      this.computeInitial();\n      if (this.init) this.init();\n      this.reset();\n    }\n  }\n  get state() {\n    return this.ctrl.state[this.key];\n  }\n  set state(state) {\n    this.ctrl.state[this.key] = state;\n  }\n  get shared() {\n    return this.ctrl.state.shared;\n  }\n  get eventStore() {\n    return this.ctrl.gestureEventStores[this.key];\n  }\n  get timeoutStore() {\n    return this.ctrl.gestureTimeoutStores[this.key];\n  }\n  get config() {\n    return this.ctrl.config[this.key];\n  }\n  get sharedConfig() {\n    return this.ctrl.config.shared;\n  }\n  get handler() {\n    return this.ctrl.handlers[this.key];\n  }\n  reset() {\n    const {\n      state,\n      shared,\n      ingKey,\n      args\n    } = this;\n    shared[ingKey] = state._active = state.active = state._blocked = state._force = false;\n    state._step = [false, false];\n    state.intentional = false;\n    state._movement = [0, 0];\n    state._distance = [0, 0];\n    state._direction = [0, 0];\n    state._delta = [0, 0];\n    state._bounds = [[-Infinity, Infinity], [-Infinity, Infinity]];\n    state.args = args;\n    state.axis = undefined;\n    state.memo = undefined;\n    state.elapsedTime = state.timeDelta = 0;\n    state.direction = [0, 0];\n    state.distance = [0, 0];\n    state.overflow = [0, 0];\n    state._movementBound = [false, false];\n    state.velocity = [0, 0];\n    state.movement = [0, 0];\n    state.delta = [0, 0];\n    state.timeStamp = 0;\n  }\n  start(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state._active) {\n      this.reset();\n      this.computeInitial();\n      state._active = true;\n      state.target = event.target;\n      state.currentTarget = event.currentTarget;\n      state.lastOffset = config.from ? call(config.from, state) : state.offset;\n      state.offset = state.lastOffset;\n      state.startTime = state.timeStamp = event.timeStamp;\n    }\n  }\n  computeValues(values) {\n    const state = this.state;\n    state._values = values;\n    state.values = this.config.transform(values);\n  }\n  computeInitial() {\n    const state = this.state;\n    state._initial = state._values;\n    state.initial = state.values;\n  }\n  compute(event) {\n    const {\n      state,\n      config,\n      shared\n    } = this;\n    state.args = this.args;\n    let dt = 0;\n    if (event) {\n      state.event = event;\n      if (config.preventDefault && event.cancelable) state.event.preventDefault();\n      state.type = event.type;\n      shared.touches = this.ctrl.pointerIds.size || this.ctrl.touchIds.size;\n      shared.locked = !!document.pointerLockElement;\n      Object.assign(shared, getEventDetails(event));\n      shared.down = shared.pressed = shared.buttons % 2 === 1 || shared.touches > 0;\n      dt = event.timeStamp - state.timeStamp;\n      state.timeStamp = event.timeStamp;\n      state.elapsedTime = state.timeStamp - state.startTime;\n    }\n    if (state._active) {\n      const _absoluteDelta = state._delta.map(Math.abs);\n      V.addTo(state._distance, _absoluteDelta);\n    }\n    if (this.axisIntent) this.axisIntent(event);\n    const [_m0, _m1] = state._movement;\n    const [t0, t1] = config.threshold;\n    const {\n      _step,\n      values\n    } = state;\n    if (config.hasCustomTransform) {\n      if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && values[0];\n      if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && values[1];\n    } else {\n      if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;\n      if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;\n    }\n    state.intentional = _step[0] !== false || _step[1] !== false;\n    if (!state.intentional) return;\n    const movement = [0, 0];\n    if (config.hasCustomTransform) {\n      const [v0, v1] = values;\n      movement[0] = _step[0] !== false ? v0 - _step[0] : 0;\n      movement[1] = _step[1] !== false ? v1 - _step[1] : 0;\n    } else {\n      movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;\n      movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;\n    }\n    if (this.restrictToAxis && !state._blocked) this.restrictToAxis(movement);\n    const previousOffset = state.offset;\n    const gestureIsActive = state._active && !state._blocked || state.active;\n    if (gestureIsActive) {\n      state.first = state._active && !state.active;\n      state.last = !state._active && state.active;\n      state.active = shared[this.ingKey] = state._active;\n      if (event) {\n        if (state.first) {\n          if ('bounds' in config) state._bounds = call(config.bounds, state);\n          if (this.setup) this.setup();\n        }\n        state.movement = movement;\n        this.computeOffset();\n      }\n    }\n    const [ox, oy] = state.offset;\n    const [[x0, x1], [y0, y1]] = state._bounds;\n    state.overflow = [ox < x0 ? -1 : ox > x1 ? 1 : 0, oy < y0 ? -1 : oy > y1 ? 1 : 0];\n    state._movementBound[0] = state.overflow[0] ? state._movementBound[0] === false ? state._movement[0] : state._movementBound[0] : false;\n    state._movementBound[1] = state.overflow[1] ? state._movementBound[1] === false ? state._movement[1] : state._movementBound[1] : false;\n    const rubberband = state._active ? config.rubberband || [0, 0] : [0, 0];\n    state.offset = computeRubberband(state._bounds, state.offset, rubberband);\n    state.delta = V.sub(state.offset, previousOffset);\n    this.computeMovement();\n    if (gestureIsActive && (!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)) {\n      state.delta = V.sub(state.offset, previousOffset);\n      const absoluteDelta = state.delta.map(Math.abs);\n      V.addTo(state.distance, absoluteDelta);\n      state.direction = state.delta.map(Math.sign);\n      state._direction = state._delta.map(Math.sign);\n      if (!state.first && dt > 0) {\n        state.velocity = [absoluteDelta[0] / dt, absoluteDelta[1] / dt];\n        state.timeDelta = dt;\n      }\n    }\n  }\n  emit() {\n    const state = this.state;\n    const shared = this.shared;\n    const config = this.config;\n    if (!state._active) this.clean();\n    if ((state._blocked || !state.intentional) && !state._force && !config.triggerAllEvents) return;\n    const memo = this.handler(_objectSpread2(_objectSpread2(_objectSpread2({}, shared), state), {}, {\n      [this.aliasKey]: state.values\n    }));\n    if (memo !== undefined) state.memo = memo;\n  }\n  clean() {\n    this.eventStore.clean();\n    this.timeoutStore.clean();\n  }\n}\n\nfunction selectAxis([dx, dy], threshold) {\n  const absDx = Math.abs(dx);\n  const absDy = Math.abs(dy);\n  if (absDx > absDy && absDx > threshold) {\n    return 'x';\n  }\n  if (absDy > absDx && absDy > threshold) {\n    return 'y';\n  }\n  return undefined;\n}\nclass CoordinatesEngine extends Engine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"aliasKey\", 'xy');\n  }\n  reset() {\n    super.reset();\n    this.state.axis = undefined;\n  }\n  init() {\n    this.state.offset = [0, 0];\n    this.state.lastOffset = [0, 0];\n  }\n  computeOffset() {\n    this.state.offset = V.add(this.state.lastOffset, this.state.movement);\n  }\n  computeMovement() {\n    this.state.movement = V.sub(this.state.offset, this.state.lastOffset);\n  }\n  axisIntent(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state.axis && event) {\n      const threshold = typeof config.axisThreshold === 'object' ? config.axisThreshold[getPointerType(event)] : config.axisThreshold;\n      state.axis = selectAxis(state._movement, threshold);\n    }\n    state._blocked = (config.lockDirection || !!config.axis) && !state.axis || !!config.axis && config.axis !== state.axis;\n  }\n  restrictToAxis(v) {\n    if (this.config.axis || this.config.lockDirection) {\n      switch (this.state.axis) {\n        case 'x':\n          v[1] = 0;\n          break;\n        case 'y':\n          v[0] = 0;\n          break;\n      }\n    }\n  }\n}\n\nconst identity = v => v;\nconst DEFAULT_RUBBERBAND = 0.15;\nconst commonConfigResolver = {\n  enabled(value = true) {\n    return value;\n  },\n  eventOptions(value, _k, config) {\n    return _objectSpread2(_objectSpread2({}, config.shared.eventOptions), value);\n  },\n  preventDefault(value = false) {\n    return value;\n  },\n  triggerAllEvents(value = false) {\n    return value;\n  },\n  rubberband(value = 0) {\n    switch (value) {\n      case true:\n        return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];\n      case false:\n        return [0, 0];\n      default:\n        return V.toVector(value);\n    }\n  },\n  from(value) {\n    if (typeof value === 'function') return value;\n    if (value != null) return V.toVector(value);\n  },\n  transform(value, _k, config) {\n    const transform = value || config.shared.transform;\n    this.hasCustomTransform = !!transform;\n    if (process.env.NODE_ENV === 'development') {\n      const originalTransform = transform || identity;\n      return v => {\n        const r = originalTransform(v);\n        if (!isFinite(r[0]) || !isFinite(r[1])) {\n          console.warn(`[@use-gesture]: config.transform() must produce a valid result, but it was: [${r[0]},${[1]}]`);\n        }\n        return r;\n      };\n    }\n    return transform || identity;\n  },\n  threshold(value) {\n    return V.toVector(value, 0);\n  }\n};\nif (process.env.NODE_ENV === 'development') {\n  Object.assign(commonConfigResolver, {\n    domTarget(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n      }\n      return NaN;\n    },\n    lockDirection(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`lockDirection\\` option has been merged with \\`axis\\`. Use it as in \\`{ axis: 'lock' }\\``);\n      }\n      return NaN;\n    },\n    initial(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`initial\\` option has been renamed to \\`from\\`.`);\n      }\n      return NaN;\n    }\n  });\n}\n\nconst DEFAULT_AXIS_THRESHOLD = 0;\nconst coordinatesConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n  axis(_v, _k, {\n    axis\n  }) {\n    this.lockDirection = axis === 'lock';\n    if (!this.lockDirection) return axis;\n  },\n  axisThreshold(value = DEFAULT_AXIS_THRESHOLD) {\n    return value;\n  },\n  bounds(value = {}) {\n    if (typeof value === 'function') {\n      return state => coordinatesConfigResolver.bounds(value(state));\n    }\n    if ('current' in value) {\n      return () => value.current;\n    }\n    if (typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n      return value;\n    }\n    const {\n      left = -Infinity,\n      right = Infinity,\n      top = -Infinity,\n      bottom = Infinity\n    } = value;\n    return [[left, right], [top, bottom]];\n  }\n});\n\nconst KEYS_DELTA_MAP = {\n  ArrowRight: (displacement, factor = 1) => [displacement * factor, 0],\n  ArrowLeft: (displacement, factor = 1) => [-1 * displacement * factor, 0],\n  ArrowUp: (displacement, factor = 1) => [0, -1 * displacement * factor],\n  ArrowDown: (displacement, factor = 1) => [0, displacement * factor]\n};\nclass DragEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'dragging');\n  }\n  reset() {\n    super.reset();\n    const state = this.state;\n    state._pointerId = undefined;\n    state._pointerActive = false;\n    state._keyboardActive = false;\n    state._preventScroll = false;\n    state._delayed = false;\n    state.swipe = [0, 0];\n    state.tap = false;\n    state.canceled = false;\n    state.cancel = this.cancel.bind(this);\n  }\n  setup() {\n    const state = this.state;\n    if (state._bounds instanceof HTMLElement) {\n      const boundRect = state._bounds.getBoundingClientRect();\n      const targetRect = state.currentTarget.getBoundingClientRect();\n      const _bounds = {\n        left: boundRect.left - targetRect.left + state.offset[0],\n        right: boundRect.right - targetRect.right + state.offset[0],\n        top: boundRect.top - targetRect.top + state.offset[1],\n        bottom: boundRect.bottom - targetRect.bottom + state.offset[1]\n      };\n      state._bounds = coordinatesConfigResolver.bounds(_bounds);\n    }\n  }\n  cancel() {\n    const state = this.state;\n    if (state.canceled) return;\n    state.canceled = true;\n    state._active = false;\n    setTimeout(() => {\n      this.compute();\n      this.emit();\n    }, 0);\n  }\n  setActive() {\n    this.state._active = this.state._pointerActive || this.state._keyboardActive;\n  }\n  clean() {\n    this.pointerClean();\n    this.state._pointerActive = false;\n    this.state._keyboardActive = false;\n    super.clean();\n  }\n  pointerDown(event) {\n    const config = this.config;\n    const state = this.state;\n    if (event.buttons != null && (Array.isArray(config.pointerButtons) ? !config.pointerButtons.includes(event.buttons) : config.pointerButtons !== -1 && config.pointerButtons !== event.buttons)) return;\n    const ctrlIds = this.ctrl.setEventIds(event);\n    if (config.pointerCapture) {\n      event.target.setPointerCapture(event.pointerId);\n    }\n    if (ctrlIds && ctrlIds.size > 1 && state._pointerActive) return;\n    this.start(event);\n    this.setupPointer(event);\n    state._pointerId = pointerId(event);\n    state._pointerActive = true;\n    this.computeValues(pointerValues(event));\n    this.computeInitial();\n    if (config.preventScrollAxis && getPointerType(event) !== 'mouse') {\n      state._active = false;\n      this.setupScrollPrevention(event);\n    } else if (config.delay > 0) {\n      this.setupDelayTrigger(event);\n      if (config.triggerAllEvents) {\n        this.compute(event);\n        this.emit();\n      }\n    } else {\n      this.startPointerDrag(event);\n    }\n  }\n  startPointerDrag(event) {\n    const state = this.state;\n    state._active = true;\n    state._preventScroll = true;\n    state._delayed = false;\n    this.compute(event);\n    this.emit();\n  }\n  pointerMove(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state._pointerActive) return;\n    const id = pointerId(event);\n    if (state._pointerId !== undefined && id !== state._pointerId) return;\n    const _values = pointerValues(event);\n    if (document.pointerLockElement === event.target) {\n      state._delta = [event.movementX, event.movementY];\n    } else {\n      state._delta = V.sub(_values, state._values);\n      this.computeValues(_values);\n    }\n    V.addTo(state._movement, state._delta);\n    this.compute(event);\n    if (state._delayed && state.intentional) {\n      this.timeoutStore.remove('dragDelay');\n      state.active = false;\n      this.startPointerDrag(event);\n      return;\n    }\n    if (config.preventScrollAxis && !state._preventScroll) {\n      if (state.axis) {\n        if (state.axis === config.preventScrollAxis || config.preventScrollAxis === 'xy') {\n          state._active = false;\n          this.clean();\n          return;\n        } else {\n          this.timeoutStore.remove('startPointerDrag');\n          this.startPointerDrag(event);\n          return;\n        }\n      } else {\n        return;\n      }\n    }\n    this.emit();\n  }\n  pointerUp(event) {\n    this.ctrl.setEventIds(event);\n    try {\n      if (this.config.pointerCapture && event.target.hasPointerCapture(event.pointerId)) {\n        ;\n        event.target.releasePointerCapture(event.pointerId);\n      }\n    } catch (_unused) {\n      if (process.env.NODE_ENV === 'development') {\n        console.warn(`[@use-gesture]: If you see this message, it's likely that you're using an outdated version of \\`@react-three/fiber\\`. \\n\\nPlease upgrade to the latest version.`);\n      }\n    }\n    const state = this.state;\n    const config = this.config;\n    if (!state._active || !state._pointerActive) return;\n    const id = pointerId(event);\n    if (state._pointerId !== undefined && id !== state._pointerId) return;\n    this.state._pointerActive = false;\n    this.setActive();\n    this.compute(event);\n    const [dx, dy] = state._distance;\n    state.tap = dx <= config.tapsThreshold && dy <= config.tapsThreshold;\n    if (state.tap && config.filterTaps) {\n      state._force = true;\n    } else {\n      const [_dx, _dy] = state._delta;\n      const [_mx, _my] = state._movement;\n      const [svx, svy] = config.swipe.velocity;\n      const [sx, sy] = config.swipe.distance;\n      const sdt = config.swipe.duration;\n      if (state.elapsedTime < sdt) {\n        const _vx = Math.abs(_dx / state.timeDelta);\n        const _vy = Math.abs(_dy / state.timeDelta);\n        if (_vx > svx && Math.abs(_mx) > sx) state.swipe[0] = Math.sign(_dx);\n        if (_vy > svy && Math.abs(_my) > sy) state.swipe[1] = Math.sign(_dy);\n      }\n    }\n    this.emit();\n  }\n  pointerClick(event) {\n    if (!this.state.tap && event.detail > 0) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n  setupPointer(event) {\n    const config = this.config;\n    const device = config.device;\n    if (process.env.NODE_ENV === 'development') {\n      try {\n        if (device === 'pointer' && config.preventScrollDelay === undefined) {\n          const currentTarget = 'uv' in event ? event.sourceEvent.currentTarget : event.currentTarget;\n          const style = window.getComputedStyle(currentTarget);\n          if (style.touchAction === 'auto') {\n            console.warn(`[@use-gesture]: The drag target has its \\`touch-action\\` style property set to \\`auto\\`. It is recommended to add \\`touch-action: 'none'\\` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.\\n\\nThis message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.`, currentTarget);\n          }\n        }\n      } catch (_unused2) {}\n    }\n    if (config.pointerLock) {\n      event.currentTarget.requestPointerLock();\n    }\n    if (!config.pointerCapture) {\n      this.eventStore.add(this.sharedConfig.window, device, 'change', this.pointerMove.bind(this));\n      this.eventStore.add(this.sharedConfig.window, device, 'end', this.pointerUp.bind(this));\n      this.eventStore.add(this.sharedConfig.window, device, 'cancel', this.pointerUp.bind(this));\n    }\n  }\n  pointerClean() {\n    if (this.config.pointerLock && document.pointerLockElement === this.state.currentTarget) {\n      document.exitPointerLock();\n    }\n  }\n  preventScroll(event) {\n    if (this.state._preventScroll && event.cancelable) {\n      event.preventDefault();\n    }\n  }\n  setupScrollPrevention(event) {\n    this.state._preventScroll = false;\n    persistEvent(event);\n    const remove = this.eventStore.add(this.sharedConfig.window, 'touch', 'change', this.preventScroll.bind(this), {\n      passive: false\n    });\n    this.eventStore.add(this.sharedConfig.window, 'touch', 'end', remove);\n    this.eventStore.add(this.sharedConfig.window, 'touch', 'cancel', remove);\n    this.timeoutStore.add('startPointerDrag', this.startPointerDrag.bind(this), this.config.preventScrollDelay, event);\n  }\n  setupDelayTrigger(event) {\n    this.state._delayed = true;\n    this.timeoutStore.add('dragDelay', () => {\n      this.state._step = [0, 0];\n      this.startPointerDrag(event);\n    }, this.config.delay);\n  }\n  keyDown(event) {\n    const deltaFn = KEYS_DELTA_MAP[event.key];\n    if (deltaFn) {\n      const state = this.state;\n      const factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;\n      this.start(event);\n      state._delta = deltaFn(this.config.keyboardDisplacement, factor);\n      state._keyboardActive = true;\n      V.addTo(state._movement, state._delta);\n      this.compute(event);\n      this.emit();\n    }\n  }\n  keyUp(event) {\n    if (!(event.key in KEYS_DELTA_MAP)) return;\n    this.state._keyboardActive = false;\n    this.setActive();\n    this.compute(event);\n    this.emit();\n  }\n  bind(bindFunction) {\n    const device = this.config.device;\n    bindFunction(device, 'start', this.pointerDown.bind(this));\n    if (this.config.pointerCapture) {\n      bindFunction(device, 'change', this.pointerMove.bind(this));\n      bindFunction(device, 'end', this.pointerUp.bind(this));\n      bindFunction(device, 'cancel', this.pointerUp.bind(this));\n      bindFunction('lostPointerCapture', '', this.pointerUp.bind(this));\n    }\n    if (this.config.keys) {\n      bindFunction('key', 'down', this.keyDown.bind(this));\n      bindFunction('key', 'up', this.keyUp.bind(this));\n    }\n    if (this.config.filterTaps) {\n      bindFunction('click', '', this.pointerClick.bind(this), {\n        capture: true,\n        passive: false\n      });\n    }\n  }\n}\nfunction persistEvent(event) {\n  'persist' in event && typeof event.persist === 'function' && event.persist();\n}\n\nconst isBrowser = typeof window !== 'undefined' && window.document && window.document.createElement;\nfunction supportsTouchEvents() {\n  return isBrowser && 'ontouchstart' in window;\n}\nfunction isTouchScreen() {\n  return supportsTouchEvents() || isBrowser && window.navigator.maxTouchPoints > 1;\n}\nfunction supportsPointerEvents() {\n  return isBrowser && 'onpointerdown' in window;\n}\nfunction supportsPointerLock() {\n  return isBrowser && 'exitPointerLock' in window.document;\n}\nfunction supportsGestureEvents() {\n  try {\n    return 'constructor' in GestureEvent;\n  } catch (e) {\n    return false;\n  }\n}\nconst SUPPORT = {\n  isBrowser,\n  gesture: supportsGestureEvents(),\n  touch: supportsTouchEvents(),\n  touchscreen: isTouchScreen(),\n  pointer: supportsPointerEvents(),\n  pointerLock: supportsPointerLock()\n};\n\nconst DEFAULT_PREVENT_SCROLL_DELAY = 250;\nconst DEFAULT_DRAG_DELAY = 180;\nconst DEFAULT_SWIPE_VELOCITY = 0.5;\nconst DEFAULT_SWIPE_DISTANCE = 50;\nconst DEFAULT_SWIPE_DURATION = 250;\nconst DEFAULT_KEYBOARD_DISPLACEMENT = 10;\nconst DEFAULT_DRAG_AXIS_THRESHOLD = {\n  mouse: 0,\n  touch: 0,\n  pen: 8\n};\nconst dragConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  device(_v, _k, {\n    pointer: {\n      touch = false,\n      lock = false,\n      mouse = false\n    } = {}\n  }) {\n    this.pointerLock = lock && SUPPORT.pointerLock;\n    if (SUPPORT.touch && touch) return 'touch';\n    if (this.pointerLock) return 'mouse';\n    if (SUPPORT.pointer && !mouse) return 'pointer';\n    if (SUPPORT.touch) return 'touch';\n    return 'mouse';\n  },\n  preventScrollAxis(value, _k, {\n    preventScroll\n  }) {\n    this.preventScrollDelay = typeof preventScroll === 'number' ? preventScroll : preventScroll || preventScroll === undefined && value ? DEFAULT_PREVENT_SCROLL_DELAY : undefined;\n    if (!SUPPORT.touchscreen || preventScroll === false) return undefined;\n    return value ? value : preventScroll !== undefined ? 'y' : undefined;\n  },\n  pointerCapture(_v, _k, {\n    pointer: {\n      capture = true,\n      buttons = 1,\n      keys = true\n    } = {}\n  }) {\n    this.pointerButtons = buttons;\n    this.keys = keys;\n    return !this.pointerLock && this.device === 'pointer' && capture;\n  },\n  threshold(value, _k, {\n    filterTaps = false,\n    tapsThreshold = 3,\n    axis = undefined\n  }) {\n    const threshold = V.toVector(value, filterTaps ? tapsThreshold : axis ? 1 : 0);\n    this.filterTaps = filterTaps;\n    this.tapsThreshold = tapsThreshold;\n    return threshold;\n  },\n  swipe({\n    velocity = DEFAULT_SWIPE_VELOCITY,\n    distance = DEFAULT_SWIPE_DISTANCE,\n    duration = DEFAULT_SWIPE_DURATION\n  } = {}) {\n    return {\n      velocity: this.transform(V.toVector(velocity)),\n      distance: this.transform(V.toVector(distance)),\n      duration\n    };\n  },\n  delay(value = 0) {\n    switch (value) {\n      case true:\n        return DEFAULT_DRAG_DELAY;\n      case false:\n        return 0;\n      default:\n        return value;\n    }\n  },\n  axisThreshold(value) {\n    if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;\n    return _objectSpread2(_objectSpread2({}, DEFAULT_DRAG_AXIS_THRESHOLD), value);\n  },\n  keyboardDisplacement(value = DEFAULT_KEYBOARD_DISPLACEMENT) {\n    return value;\n  }\n});\nif (process.env.NODE_ENV === 'development') {\n  Object.assign(dragConfigResolver, {\n    useTouch(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`useTouch\\` option has been renamed to \\`pointer.touch\\`. Use it as in \\`{ pointer: { touch: true } }\\`.`);\n      }\n      return NaN;\n    },\n    experimental_preventWindowScrollY(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`experimental_preventWindowScrollY\\` option has been renamed to \\`preventScroll\\`.`);\n      }\n      return NaN;\n    },\n    swipeVelocity(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeVelocity\\` option has been renamed to \\`swipe.velocity\\`. Use it as in \\`{ swipe: { velocity: 0.5 } }\\`.`);\n      }\n      return NaN;\n    },\n    swipeDistance(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeDistance\\` option has been renamed to \\`swipe.distance\\`. Use it as in \\`{ swipe: { distance: 50 } }\\`.`);\n      }\n      return NaN;\n    },\n    swipeDuration(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeDuration\\` option has been renamed to \\`swipe.duration\\`. Use it as in \\`{ swipe: { duration: 250 } }\\`.`);\n      }\n      return NaN;\n    }\n  });\n}\n\nfunction clampStateInternalMovementToBounds(state) {\n  const [ox, oy] = state.overflow;\n  const [dx, dy] = state._delta;\n  const [dirx, diry] = state._direction;\n  if (ox < 0 && dx > 0 && dirx < 0 || ox > 0 && dx < 0 && dirx > 0) {\n    state._movement[0] = state._movementBound[0];\n  }\n  if (oy < 0 && dy > 0 && diry < 0 || oy > 0 && dy < 0 && diry > 0) {\n    state._movement[1] = state._movementBound[1];\n  }\n}\n\nconst SCALE_ANGLE_RATIO_INTENT_DEG = 30;\nconst PINCH_WHEEL_RATIO = 100;\nclass PinchEngine extends Engine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'pinching');\n    _defineProperty(this, \"aliasKey\", 'da');\n  }\n  init() {\n    this.state.offset = [1, 0];\n    this.state.lastOffset = [1, 0];\n    this.state._pointerEvents = new Map();\n  }\n  reset() {\n    super.reset();\n    const state = this.state;\n    state._touchIds = [];\n    state.canceled = false;\n    state.cancel = this.cancel.bind(this);\n    state.turns = 0;\n  }\n  computeOffset() {\n    const {\n      type,\n      movement,\n      lastOffset\n    } = this.state;\n    if (type === 'wheel') {\n      this.state.offset = V.add(movement, lastOffset);\n    } else {\n      this.state.offset = [(1 + movement[0]) * lastOffset[0], movement[1] + lastOffset[1]];\n    }\n  }\n  computeMovement() {\n    const {\n      offset,\n      lastOffset\n    } = this.state;\n    this.state.movement = [offset[0] / lastOffset[0], offset[1] - lastOffset[1]];\n  }\n  axisIntent() {\n    const state = this.state;\n    const [_m0, _m1] = state._movement;\n    if (!state.axis) {\n      const axisMovementDifference = Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG - Math.abs(_m1);\n      if (axisMovementDifference < 0) state.axis = 'angle';else if (axisMovementDifference > 0) state.axis = 'scale';\n    }\n  }\n  restrictToAxis(v) {\n    if (this.config.lockDirection) {\n      if (this.state.axis === 'scale') v[1] = 0;else if (this.state.axis === 'angle') v[0] = 0;\n    }\n  }\n  cancel() {\n    const state = this.state;\n    if (state.canceled) return;\n    setTimeout(() => {\n      state.canceled = true;\n      state._active = false;\n      this.compute();\n      this.emit();\n    }, 0);\n  }\n  touchStart(event) {\n    this.ctrl.setEventIds(event);\n    const state = this.state;\n    const ctrlTouchIds = this.ctrl.touchIds;\n    if (state._active) {\n      if (state._touchIds.every(id => ctrlTouchIds.has(id))) return;\n    }\n    if (ctrlTouchIds.size < 2) return;\n    this.start(event);\n    state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);\n    const payload = touchDistanceAngle(event, state._touchIds);\n    if (!payload) return;\n    this.pinchStart(event, payload);\n  }\n  pointerStart(event) {\n    if (event.buttons != null && event.buttons % 2 !== 1) return;\n    this.ctrl.setEventIds(event);\n    event.target.setPointerCapture(event.pointerId);\n    const state = this.state;\n    const _pointerEvents = state._pointerEvents;\n    const ctrlPointerIds = this.ctrl.pointerIds;\n    if (state._active) {\n      if (Array.from(_pointerEvents.keys()).every(id => ctrlPointerIds.has(id))) return;\n    }\n    if (_pointerEvents.size < 2) {\n      _pointerEvents.set(event.pointerId, event);\n    }\n    if (state._pointerEvents.size < 2) return;\n    this.start(event);\n    const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n    if (!payload) return;\n    this.pinchStart(event, payload);\n  }\n  pinchStart(event, payload) {\n    const state = this.state;\n    state.origin = payload.origin;\n    this.computeValues([payload.distance, payload.angle]);\n    this.computeInitial();\n    this.compute(event);\n    this.emit();\n  }\n  touchMove(event) {\n    if (!this.state._active) return;\n    const payload = touchDistanceAngle(event, this.state._touchIds);\n    if (!payload) return;\n    this.pinchMove(event, payload);\n  }\n  pointerMove(event) {\n    const _pointerEvents = this.state._pointerEvents;\n    if (_pointerEvents.has(event.pointerId)) {\n      _pointerEvents.set(event.pointerId, event);\n    }\n    if (!this.state._active) return;\n    const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n    if (!payload) return;\n    this.pinchMove(event, payload);\n  }\n  pinchMove(event, payload) {\n    const state = this.state;\n    const prev_a = state._values[1];\n    const delta_a = payload.angle - prev_a;\n    let delta_turns = 0;\n    if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);\n    this.computeValues([payload.distance, payload.angle - 360 * delta_turns]);\n    state.origin = payload.origin;\n    state.turns = delta_turns;\n    state._movement = [state._values[0] / state._initial[0] - 1, state._values[1] - state._initial[1]];\n    this.compute(event);\n    this.emit();\n  }\n  touchEnd(event) {\n    this.ctrl.setEventIds(event);\n    if (!this.state._active) return;\n    if (this.state._touchIds.some(id => !this.ctrl.touchIds.has(id))) {\n      this.state._active = false;\n      this.compute(event);\n      this.emit();\n    }\n  }\n  pointerEnd(event) {\n    const state = this.state;\n    this.ctrl.setEventIds(event);\n    try {\n      event.target.releasePointerCapture(event.pointerId);\n    } catch (_unused) {}\n    if (state._pointerEvents.has(event.pointerId)) {\n      state._pointerEvents.delete(event.pointerId);\n    }\n    if (!state._active) return;\n    if (state._pointerEvents.size < 2) {\n      state._active = false;\n      this.compute(event);\n      this.emit();\n    }\n  }\n  gestureStart(event) {\n    if (event.cancelable) event.preventDefault();\n    const state = this.state;\n    if (state._active) return;\n    this.start(event);\n    this.computeValues([event.scale, event.rotation]);\n    state.origin = [event.clientX, event.clientY];\n    this.compute(event);\n    this.emit();\n  }\n  gestureMove(event) {\n    if (event.cancelable) event.preventDefault();\n    if (!this.state._active) return;\n    const state = this.state;\n    this.computeValues([event.scale, event.rotation]);\n    state.origin = [event.clientX, event.clientY];\n    const _previousMovement = state._movement;\n    state._movement = [event.scale - 1, event.rotation];\n    state._delta = V.sub(state._movement, _previousMovement);\n    this.compute(event);\n    this.emit();\n  }\n  gestureEnd(event) {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute(event);\n    this.emit();\n  }\n  wheel(event) {\n    const modifierKey = this.config.modifierKey;\n    if (modifierKey && (Array.isArray(modifierKey) ? !modifierKey.find(k => event[k]) : !event[modifierKey])) return;\n    if (!this.state._active) this.wheelStart(event);else this.wheelChange(event);\n    this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n  }\n  wheelStart(event) {\n    this.start(event);\n    this.wheelChange(event);\n  }\n  wheelChange(event) {\n    const isR3f = ('uv' in event);\n    if (!isR3f) {\n      if (event.cancelable) {\n        event.preventDefault();\n      }\n      if (process.env.NODE_ENV === 'development' && !event.defaultPrevented) {\n        console.warn(`[@use-gesture]: To properly support zoom on trackpads, try using the \\`target\\` option.\\n\\nThis message will only appear in development mode.`);\n      }\n    }\n    const state = this.state;\n    state._delta = [-wheelValues(event)[1] / PINCH_WHEEL_RATIO * state.offset[0], 0];\n    V.addTo(state._movement, state._delta);\n    clampStateInternalMovementToBounds(state);\n    this.state.origin = [event.clientX, event.clientY];\n    this.compute(event);\n    this.emit();\n  }\n  wheelEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    const device = this.config.device;\n    if (!!device) {\n      bindFunction(device, 'start', this[device + 'Start'].bind(this));\n      bindFunction(device, 'change', this[device + 'Move'].bind(this));\n      bindFunction(device, 'end', this[device + 'End'].bind(this));\n      bindFunction(device, 'cancel', this[device + 'End'].bind(this));\n      bindFunction('lostPointerCapture', '', this[device + 'End'].bind(this));\n    }\n    if (this.config.pinchOnWheel) {\n      bindFunction('wheel', '', this.wheel.bind(this), {\n        passive: false\n      });\n    }\n  }\n}\n\nconst pinchConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n  device(_v, _k, {\n    shared,\n    pointer: {\n      touch = false\n    } = {}\n  }) {\n    const sharedConfig = shared;\n    if (sharedConfig.target && !SUPPORT.touch && SUPPORT.gesture) return 'gesture';\n    if (SUPPORT.touch && touch) return 'touch';\n    if (SUPPORT.touchscreen) {\n      if (SUPPORT.pointer) return 'pointer';\n      if (SUPPORT.touch) return 'touch';\n    }\n  },\n  bounds(_v, _k, {\n    scaleBounds = {},\n    angleBounds = {}\n  }) {\n    const _scaleBounds = state => {\n      const D = assignDefault(call(scaleBounds, state), {\n        min: -Infinity,\n        max: Infinity\n      });\n      return [D.min, D.max];\n    };\n    const _angleBounds = state => {\n      const A = assignDefault(call(angleBounds, state), {\n        min: -Infinity,\n        max: Infinity\n      });\n      return [A.min, A.max];\n    };\n    if (typeof scaleBounds !== 'function' && typeof angleBounds !== 'function') return [_scaleBounds(), _angleBounds()];\n    return state => [_scaleBounds(state), _angleBounds(state)];\n  },\n  threshold(value, _k, config) {\n    this.lockDirection = config.axis === 'lock';\n    const threshold = V.toVector(value, this.lockDirection ? [0.1, 3] : 0);\n    return threshold;\n  },\n  modifierKey(value) {\n    if (value === undefined) return 'ctrlKey';\n    return value;\n  },\n  pinchOnWheel(value = true) {\n    return value;\n  }\n});\n\nclass MoveEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'moving');\n  }\n  move(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    if (!this.state._active) this.moveStart(event);else this.moveChange(event);\n    this.timeoutStore.add('moveEnd', this.moveEnd.bind(this));\n  }\n  moveStart(event) {\n    this.start(event);\n    this.computeValues(pointerValues(event));\n    this.compute(event);\n    this.computeInitial();\n    this.emit();\n  }\n  moveChange(event) {\n    if (!this.state._active) return;\n    const values = pointerValues(event);\n    const state = this.state;\n    state._delta = V.sub(values, state._values);\n    V.addTo(state._movement, state._delta);\n    this.computeValues(values);\n    this.compute(event);\n    this.emit();\n  }\n  moveEnd(event) {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute(event);\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('pointer', 'change', this.move.bind(this));\n    bindFunction('pointer', 'leave', this.moveEnd.bind(this));\n  }\n}\n\nconst moveConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  mouseOnly: (value = true) => value\n});\n\nclass ScrollEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'scrolling');\n  }\n  scroll(event) {\n    if (!this.state._active) this.start(event);\n    this.scrollChange(event);\n    this.timeoutStore.add('scrollEnd', this.scrollEnd.bind(this));\n  }\n  scrollChange(event) {\n    if (event.cancelable) event.preventDefault();\n    const state = this.state;\n    const values = scrollValues(event);\n    state._delta = V.sub(values, state._values);\n    V.addTo(state._movement, state._delta);\n    this.computeValues(values);\n    this.compute(event);\n    this.emit();\n  }\n  scrollEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('scroll', '', this.scroll.bind(this));\n  }\n}\n\nconst scrollConfigResolver = coordinatesConfigResolver;\n\nclass WheelEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'wheeling');\n  }\n  wheel(event) {\n    if (!this.state._active) this.start(event);\n    this.wheelChange(event);\n    this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n  }\n  wheelChange(event) {\n    const state = this.state;\n    state._delta = wheelValues(event);\n    V.addTo(state._movement, state._delta);\n    clampStateInternalMovementToBounds(state);\n    this.compute(event);\n    this.emit();\n  }\n  wheelEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('wheel', '', this.wheel.bind(this));\n  }\n}\n\nconst wheelConfigResolver = coordinatesConfigResolver;\n\nclass HoverEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'hovering');\n  }\n  enter(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    this.start(event);\n    this.computeValues(pointerValues(event));\n    this.compute(event);\n    this.emit();\n  }\n  leave(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    const state = this.state;\n    if (!state._active) return;\n    state._active = false;\n    const values = pointerValues(event);\n    state._movement = state._delta = V.sub(values, state._values);\n    this.computeValues(values);\n    this.compute(event);\n    state.delta = state.movement;\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('pointer', 'enter', this.enter.bind(this));\n    bindFunction('pointer', 'leave', this.leave.bind(this));\n  }\n}\n\nconst hoverConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  mouseOnly: (value = true) => value\n});\n\nconst EngineMap = new Map();\nconst ConfigResolverMap = new Map();\nfunction registerAction(action) {\n  EngineMap.set(action.key, action.engine);\n  ConfigResolverMap.set(action.key, action.resolver);\n}\nconst dragAction = {\n  key: 'drag',\n  engine: DragEngine,\n  resolver: dragConfigResolver\n};\nconst hoverAction = {\n  key: 'hover',\n  engine: HoverEngine,\n  resolver: hoverConfigResolver\n};\nconst moveAction = {\n  key: 'move',\n  engine: MoveEngine,\n  resolver: moveConfigResolver\n};\nconst pinchAction = {\n  key: 'pinch',\n  engine: PinchEngine,\n  resolver: pinchConfigResolver\n};\nconst scrollAction = {\n  key: 'scroll',\n  engine: ScrollEngine,\n  resolver: scrollConfigResolver\n};\nconst wheelAction = {\n  key: 'wheel',\n  engine: WheelEngine,\n  resolver: wheelConfigResolver\n};\n\nexport { ConfigResolverMap as C, EngineMap as E, SUPPORT as S, _objectSpread2 as _, _defineProperty as a, touchIds as b, chain as c, toHandlerProp as d, dragAction as e, pinchAction as f, hoverAction as h, isTouch as i, moveAction as m, parseProp as p, registerAction as r, scrollAction as s, toDomEventType as t, wheelAction as w };\n", "import { registerAction, dragAction, pinchAction, wheelAction, scrollAction, moveAction, hoverAction } from '@use-gesture/core/actions';\nexport * from '@use-gesture/core/actions';\nimport React from 'react';\nimport { Controller, parseMergedHandlers } from '@use-gesture/core';\nexport * from '@use-gesture/core/utils';\nexport * from '@use-gesture/core/types';\n\nfunction useRecognizers(handlers, config = {}, gestureKey, nativeHandlers) {\n  const ctrl = React.useMemo(() => new Controller(handlers), []);\n  ctrl.applyHandlers(handlers, nativeHandlers);\n  ctrl.applyConfig(config, gestureKey);\n  React.useEffect(ctrl.effect.bind(ctrl));\n  React.useEffect(() => {\n    return ctrl.clean.bind(ctrl);\n  }, []);\n  if (config.target === undefined) {\n    return ctrl.bind.bind(ctrl);\n  }\n  return undefined;\n}\n\nfunction useDrag(handler, config) {\n  registerAction(dragAction);\n  return useRecognizers({\n    drag: handler\n  }, config || {}, 'drag');\n}\n\nfunction usePinch(handler, config) {\n  registerAction(pinchAction);\n  return useRecognizers({\n    pinch: handler\n  }, config || {}, 'pinch');\n}\n\nfunction useWheel(handler, config) {\n  registerAction(wheelAction);\n  return useRecognizers({\n    wheel: handler\n  }, config || {}, 'wheel');\n}\n\nfunction useScroll(handler, config) {\n  registerAction(scrollAction);\n  return useRecognizers({\n    scroll: handler\n  }, config || {}, 'scroll');\n}\n\nfunction useMove(handler, config) {\n  registerAction(moveAction);\n  return useRecognizers({\n    move: handler\n  }, config || {}, 'move');\n}\n\nfunction useHover(handler, config) {\n  registerAction(hoverAction);\n  return useRecognizers({\n    hover: handler\n  }, config || {}, 'hover');\n}\n\nfunction createUseGesture(actions) {\n  actions.forEach(registerAction);\n  return function useGesture(_handlers, _config) {\n    const {\n      handlers,\n      nativeHandlers,\n      config\n    } = parseMergedHandlers(_handlers, _config || {});\n    return useRecognizers(handlers, config, undefined, nativeHandlers);\n  };\n}\n\nfunction useGesture(handlers, config) {\n  const hook = createUseGesture([dragAction, pinchAction, scrollAction, wheelAction, moveAction, hoverAction]);\n  return hook(handlers, config || {});\n}\n\nexport { createUseGesture, useDrag, useGesture, useHover, useMove, usePinch, useScroll, useWheel };\n", "import { S as SUPPORT, C as ConfigResolverMap, _ as _objectSpread2, a as _defineProperty, t as toDomEventType, i as isTouch, b as touchIds, E as EngineMap, c as chain, p as parseProp, d as toHandlerProp } from './actions-fe213e88.esm.js';\nimport './maths-0ab39ae9.esm.js';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n\nconst sharedConfigResolver = {\n  target(value) {\n    if (value) {\n      return () => 'current' in value ? value.current : value;\n    }\n    return undefined;\n  },\n  enabled(value = true) {\n    return value;\n  },\n  window(value = SUPPORT.isBrowser ? window : undefined) {\n    return value;\n  },\n  eventOptions({\n    passive = true,\n    capture = false\n  } = {}) {\n    return {\n      passive,\n      capture\n    };\n  },\n  transform(value) {\n    return value;\n  }\n};\n\nconst _excluded = [\"target\", \"eventOptions\", \"window\", \"enabled\", \"transform\"];\nfunction resolveWith(config = {}, resolvers) {\n  const result = {};\n  for (const [key, resolver] of Object.entries(resolvers)) {\n    switch (typeof resolver) {\n      case 'function':\n        if (process.env.NODE_ENV === 'development') {\n          const r = resolver.call(result, config[key], key, config);\n          if (!Number.isNaN(r)) result[key] = r;\n        } else {\n          result[key] = resolver.call(result, config[key], key, config);\n        }\n        break;\n      case 'object':\n        result[key] = resolveWith(config[key], resolver);\n        break;\n      case 'boolean':\n        if (resolver) result[key] = config[key];\n        break;\n    }\n  }\n  return result;\n}\nfunction parse(newConfig, gestureKey, _config = {}) {\n  const _ref = newConfig,\n    {\n      target,\n      eventOptions,\n      window,\n      enabled,\n      transform\n    } = _ref,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  _config.shared = resolveWith({\n    target,\n    eventOptions,\n    window,\n    enabled,\n    transform\n  }, sharedConfigResolver);\n  if (gestureKey) {\n    const resolver = ConfigResolverMap.get(gestureKey);\n    _config[gestureKey] = resolveWith(_objectSpread2({\n      shared: _config.shared\n    }, rest), resolver);\n  } else {\n    for (const key in rest) {\n      const resolver = ConfigResolverMap.get(key);\n      if (resolver) {\n        _config[key] = resolveWith(_objectSpread2({\n          shared: _config.shared\n        }, rest[key]), resolver);\n      } else if (process.env.NODE_ENV === 'development') {\n        if (!['drag', 'pinch', 'scroll', 'wheel', 'move', 'hover'].includes(key)) {\n          if (key === 'domTarget') {\n            throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n          }\n          console.warn(`[@use-gesture]: Unknown config key \\`${key}\\` was used. Please read the documentation for further information.`);\n        }\n      }\n    }\n  }\n  return _config;\n}\n\nclass EventStore {\n  constructor(ctrl, gestureKey) {\n    _defineProperty(this, \"_listeners\", new Set());\n    this._ctrl = ctrl;\n    this._gestureKey = gestureKey;\n  }\n  add(element, device, action, handler, options) {\n    const listeners = this._listeners;\n    const type = toDomEventType(device, action);\n    const _options = this._gestureKey ? this._ctrl.config[this._gestureKey].eventOptions : {};\n    const eventOptions = _objectSpread2(_objectSpread2({}, _options), options);\n    element.addEventListener(type, handler, eventOptions);\n    const remove = () => {\n      element.removeEventListener(type, handler, eventOptions);\n      listeners.delete(remove);\n    };\n    listeners.add(remove);\n    return remove;\n  }\n  clean() {\n    this._listeners.forEach(remove => remove());\n    this._listeners.clear();\n  }\n}\n\nclass TimeoutStore {\n  constructor() {\n    _defineProperty(this, \"_timeouts\", new Map());\n  }\n  add(key, callback, ms = 140, ...args) {\n    this.remove(key);\n    this._timeouts.set(key, window.setTimeout(callback, ms, ...args));\n  }\n  remove(key) {\n    const timeout = this._timeouts.get(key);\n    if (timeout) window.clearTimeout(timeout);\n  }\n  clean() {\n    this._timeouts.forEach(timeout => void window.clearTimeout(timeout));\n    this._timeouts.clear();\n  }\n}\n\nclass Controller {\n  constructor(handlers) {\n    _defineProperty(this, \"gestures\", new Set());\n    _defineProperty(this, \"_targetEventStore\", new EventStore(this));\n    _defineProperty(this, \"gestureEventStores\", {});\n    _defineProperty(this, \"gestureTimeoutStores\", {});\n    _defineProperty(this, \"handlers\", {});\n    _defineProperty(this, \"config\", {});\n    _defineProperty(this, \"pointerIds\", new Set());\n    _defineProperty(this, \"touchIds\", new Set());\n    _defineProperty(this, \"state\", {\n      shared: {\n        shiftKey: false,\n        metaKey: false,\n        ctrlKey: false,\n        altKey: false\n      }\n    });\n    resolveGestures(this, handlers);\n  }\n  setEventIds(event) {\n    if (isTouch(event)) {\n      this.touchIds = new Set(touchIds(event));\n      return this.touchIds;\n    } else if ('pointerId' in event) {\n      if (event.type === 'pointerup' || event.type === 'pointercancel') this.pointerIds.delete(event.pointerId);else if (event.type === 'pointerdown') this.pointerIds.add(event.pointerId);\n      return this.pointerIds;\n    }\n  }\n  applyHandlers(handlers, nativeHandlers) {\n    this.handlers = handlers;\n    this.nativeHandlers = nativeHandlers;\n  }\n  applyConfig(config, gestureKey) {\n    this.config = parse(config, gestureKey, this.config);\n  }\n  clean() {\n    this._targetEventStore.clean();\n    for (const key of this.gestures) {\n      this.gestureEventStores[key].clean();\n      this.gestureTimeoutStores[key].clean();\n    }\n  }\n  effect() {\n    if (this.config.shared.target) this.bind();\n    return () => this._targetEventStore.clean();\n  }\n  bind(...args) {\n    const sharedConfig = this.config.shared;\n    const props = {};\n    let target;\n    if (sharedConfig.target) {\n      target = sharedConfig.target();\n      if (!target) return;\n    }\n    if (sharedConfig.enabled) {\n      for (const gestureKey of this.gestures) {\n        const gestureConfig = this.config[gestureKey];\n        const bindFunction = bindToProps(props, gestureConfig.eventOptions, !!target);\n        if (gestureConfig.enabled) {\n          const Engine = EngineMap.get(gestureKey);\n          new Engine(this, args, gestureKey).bind(bindFunction);\n        }\n      }\n      const nativeBindFunction = bindToProps(props, sharedConfig.eventOptions, !!target);\n      for (const eventKey in this.nativeHandlers) {\n        nativeBindFunction(eventKey, '', event => this.nativeHandlers[eventKey](_objectSpread2(_objectSpread2({}, this.state.shared), {}, {\n          event,\n          args\n        })), undefined, true);\n      }\n    }\n    for (const handlerProp in props) {\n      props[handlerProp] = chain(...props[handlerProp]);\n    }\n    if (!target) return props;\n    for (const handlerProp in props) {\n      const {\n        device,\n        capture,\n        passive\n      } = parseProp(handlerProp);\n      this._targetEventStore.add(target, device, '', props[handlerProp], {\n        capture,\n        passive\n      });\n    }\n  }\n}\nfunction setupGesture(ctrl, gestureKey) {\n  ctrl.gestures.add(gestureKey);\n  ctrl.gestureEventStores[gestureKey] = new EventStore(ctrl, gestureKey);\n  ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();\n}\nfunction resolveGestures(ctrl, internalHandlers) {\n  if (internalHandlers.drag) setupGesture(ctrl, 'drag');\n  if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');\n  if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');\n  if (internalHandlers.move) setupGesture(ctrl, 'move');\n  if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');\n  if (internalHandlers.hover) setupGesture(ctrl, 'hover');\n}\nconst bindToProps = (props, eventOptions, withPassiveOption) => (device, action, handler, options = {}, isNative = false) => {\n  var _options$capture, _options$passive;\n  const capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : eventOptions.capture;\n  const passive = (_options$passive = options.passive) !== null && _options$passive !== void 0 ? _options$passive : eventOptions.passive;\n  let handlerProp = isNative ? device : toHandlerProp(device, action, capture);\n  if (withPassiveOption && passive) handlerProp += 'Passive';\n  props[handlerProp] = props[handlerProp] || [];\n  props[handlerProp].push(handler);\n};\n\nconst RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;\nfunction sortHandlers(_handlers) {\n  const native = {};\n  const handlers = {};\n  const actions = new Set();\n  for (let key in _handlers) {\n    if (RE_NOT_NATIVE.test(key)) {\n      actions.add(RegExp.lastMatch);\n      handlers[key] = _handlers[key];\n    } else {\n      native[key] = _handlers[key];\n    }\n  }\n  return [handlers, native, actions];\n}\nfunction registerGesture(actions, handlers, handlerKey, key, internalHandlers, config) {\n  if (!actions.has(handlerKey)) return;\n  if (!EngineMap.has(key)) {\n    if (process.env.NODE_ENV === 'development') {\n      console.warn(`[@use-gesture]: You've created a custom handler that that uses the \\`${key}\\` gesture but isn't properly configured.\\n\\nPlease add \\`${key}Action\\` when creating your handler.`);\n    }\n    return;\n  }\n  const startKey = handlerKey + 'Start';\n  const endKey = handlerKey + 'End';\n  const fn = state => {\n    let memo = undefined;\n    if (state.first && startKey in handlers) handlers[startKey](state);\n    if (handlerKey in handlers) memo = handlers[handlerKey](state);\n    if (state.last && endKey in handlers) handlers[endKey](state);\n    return memo;\n  };\n  internalHandlers[key] = fn;\n  config[key] = config[key] || {};\n}\nfunction parseMergedHandlers(mergedHandlers, mergedConfig) {\n  const [handlers, nativeHandlers, actions] = sortHandlers(mergedHandlers);\n  const internalHandlers = {};\n  registerGesture(actions, handlers, 'onDrag', 'drag', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onWheel', 'wheel', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onScroll', 'scroll', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onPinch', 'pinch', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onMove', 'move', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onHover', 'hover', internalHandlers, mergedConfig);\n  return {\n    handlers: internalHandlers,\n    config: mergedConfig,\n    nativeHandlers\n  };\n}\n\nexport { Controller, parseMergedHandlers };\n", "import { GridConfig, GridCoords, GridSpan, TableOf } from '../model';\n\nexport const newTable = <T>(rows: number, cols: number, value: T): TableOf<T> =>\n  new Array(rows).fill(null).map(_ => new Array(cols).fill(value));\n\nexport const copyTable = <T>(table: TableOf<T>): TableOf<T> =>\n  [...table].map(row => [...row]);\n\nexport const tableSize = <T>(table: TableOf<T>) => {\n  const rows = table.length;\n  const cols = rows ? table[0].length : 0;\n  return { rows, cols };\n};\n\nexport const isEmptyRow = <T>(row: Array<T>) => !row.find(cell => !!cell);\n\nexport const trimLocation = <T>(\n  table: TableOf<T>,\n  { col, row }: GridCoords\n) => {\n  const { cols, rows } = tableSize(table);\n  return {\n    col: col < 0 ? 0 : col >= cols ? cols - 1 : col,\n    row: row < 0 ? 0 : row >= rows ? rows - 1 : row,\n  };\n};\nexport const pointToLocation = <T>(\n  table: TableOf<T>,\n  x: number,\n  y: number,\n  { elementWidth, elementHeight }: GridConfig\n) => {\n  const col = Math.floor(x / elementWidth);\n  const row = Math.floor(y / elementHeight);\n  return trimLocation(table, { col, row });\n};\n\nexport const fitsInTable = <T>(\n  coords: GridCoords & GridSpan,\n  table: TableOf<T>\n) => {\n  const { rows, cols } = tableSize(table);\n  for (let row = coords.row; row < coords.row + coords.rowSpan; row++) {\n    for (let col = coords.col; col < coords.col + coords.colSpan; col++) {\n      if (row > rows || col > cols) return false;\n      if (table[row][col]) return false;\n    }\n  }\n  return true;\n};\n\nexport const placeInTable = <T>(\n  coords: GridCoords & GridSpan,\n  data: T,\n  table: TableOf<T>\n): TableOf<T> => {\n  const newTable = copyTable(table);\n  for (let row = coords.row; row < coords.row + coords.rowSpan; row++) {\n    for (let col = coords.col; col < coords.col + coords.colSpan; col++) {\n      newTable[row][col] = data;\n    }\n  }\n  return newTable;\n};\n\nexport const findFirstFittingPosition = <T>(\n  span: GridSpan,\n  table: TableOf<T>\n): GridCoords | undefined => {\n  const { rows, cols } = tableSize(table);\n  let free = true;\n  for (let tableRow = 0; tableRow <= rows - span.rowSpan; tableRow++) {\n    for (let tableCol = 0; tableCol <= cols - span.colSpan; tableCol++) {\n      //check if all cells are available\n      free = true;\n      for (let cellRow = 0; cellRow < span.rowSpan; cellRow++) {\n        for (let cellCol = 0; cellCol < span.colSpan; cellCol++) {\n          free = free && !table[tableRow + cellRow][tableCol + cellCol];\n        }\n      }\n      if (free) {\n        return { row: tableRow, col: tableCol };\n      }\n    }\n  }\n};\n", "import { TilesTable, TilePositionInfo, TileInfo } from '../model';\nimport {\n  findFirstFittingPosition,\n  isEmptyRow,\n  newTable,\n  placeInTable,\n  tableSize,\n} from './table';\n\nexport const interceptTiles = <T>(\n  table: TilesTable<T>,\n  startRow: number,\n  startCol: number,\n  rowSpan: number,\n  colSpan: number\n) => {\n  let interceptTiles: TilePositionInfo<T>[] = [];\n  const { rows, cols } = tableSize(table);\n\n  for (let row = startRow; row < startRow + rowSpan; row++) {\n    if (row >= rows) continue;\n    for (let col = startCol; col < startCol + colSpan; col++) {\n      if (col >= cols) continue;\n      const cell = table[row][col];\n      if (cell && !interceptTiles.find(t => t.data === cell.data)) {\n        interceptTiles.push(cell);\n      }\n    }\n  }\n\n  return interceptTiles.sort(\n    (a, b) => a.col + a.row * cols - (b.col + b.row * cols)\n  );\n};\n\nexport const tableToTilesList = <T>(table: TilesTable<T>) => {\n  const { rows, cols } = tableSize(table);\n  return interceptTiles(table, 0, 0, rows, cols);\n};\n\nexport const tilesListToTable = <T>(\n  tiles: TileInfo<T>[],\n  columns: number\n): TilesTable<T> => {\n  const maxRows = tiles.reduce((memo, tile) => memo + tile.rowSpan, 0);\n  let table = newTable<TilePositionInfo<T> | undefined>(\n    maxRows,\n    columns,\n    undefined\n  );\n  tiles.forEach(tile => {\n    let position = findFirstFittingPosition(tile, table);\n    if (position) {\n      const fittedTile: TilePositionInfo<T> = { ...tile, ...position };\n      table = placeInTable(fittedTile, fittedTile, table);\n    }\n  });\n\n  //trim the table\n\n  return table.filter(row => !isEmptyRow(row)) as TilesTable<T>;\n};\n", "import { GridConfig, TilePositionInfo } from '../model';\nimport { newTable } from './table';\n\nexport const positionedTilesMaxRows = <T>(\n  positionedTiles: TilePositionInfo<T>[]\n) => {\n  //calculate the max row\n  return positionedTiles.reduce<number>((memo, tile) => {\n    const maxTileRow = tile.row + tile.rowSpan;\n    return memo > maxTileRow ? memo : maxTileRow;\n  }, 0);\n};\n\n/**\n * Check if the elements are overlapping in the table\n *\n * @param positionedTiles\n */\nexport const checkOverlap = <T>(\n  positionedTiles: TilePositionInfo<T>[],\n  { columns }: GridConfig\n) => {\n  //calculate the max row\n  const maxRows = positionedTilesMaxRows(positionedTiles);\n\n  //create a new temporary table to support the overlap check\n  //the rows need to be filled with null  and then mapped,\n  //otherwise each row will be identical\n  const checkTable = newTable(maxRows, columns, false);\n\n  const overlaps = positionedTiles.find(tile => {\n    for (let col = tile.col; col <= tile.col + tile.colSpan - 1; col++) {\n      for (let row = tile.row; row <= tile.row + tile.rowSpan - 1; row++) {\n        console.log('checktable:', {\n          tile,\n          row,\n          col,\n          outcome: checkTable[row][col],\n        });\n        if (checkTable[row][col] === true) return true;\n        checkTable[row][col] = true;\n      }\n    }\n    return false;\n  });\n  console.log('OVERLAP', overlaps);\n  return !!overlaps;\n};\n\nexport const getTileTouchPoint = <T>(\n  draggingTile: TilePositionInfo<T>,\n  targetTile: TilePositionInfo<T>,\n  absolutePosition: { x: number; y: number },\n  { elementHeight, elementWidth, activeBorderSize }: GridConfig\n) => {\n  const position = {\n    x: absolutePosition.x - targetTile.col * elementWidth,\n    y: absolutePosition.y - targetTile.row * elementHeight,\n  };\n\n  if (draggingTile.col >= targetTile.col && position.x < activeBorderSize)\n    return 'left';\n  if (\n    draggingTile.col <= targetTile.col &&\n    position.x > elementWidth * targetTile.colSpan - activeBorderSize\n  )\n    return 'right';\n  if (\n    draggingTile.row <= targetTile.row &&\n    position.y > elementHeight * targetTile.rowSpan - activeBorderSize\n  )\n    return 'bottom';\n  if (draggingTile.row >= targetTile.row && position.y < activeBorderSize)\n    return 'top';\n  if (\n    position.x > activeBorderSize &&\n    position.y < elementWidth * targetTile.colSpan - activeBorderSize &&\n    position.y > activeBorderSize &&\n    position.y < elementHeight * targetTile.rowSpan - activeBorderSize\n  )\n    return 'center';\n};\n\nexport const tileIncludes = <T>(\n  tile: TilePositionInfo<T>,\n  point: { col: number; row: number; height: number }\n) => {\n  return (\n    tile.col >= point.col &&\n    point.col < tile.col + tile.colSpan &&\n    tile.row >= point.row &&\n    point.row < tile.row + tile.rowSpan\n  );\n};\n", "import { StrategyInterface, TilePositionInfo } from '../model';\nimport * as TilesTableUtils from '../table-utils/tiles-table';\nimport * as TableUtils from '../table-utils/table';\nimport * as TilesUtils from '../table-utils/tiles';\n\n/**\n * Calculates the new table configuration while the tiles are moving\n * @param offsetX\n * @param offsetY\n * @returns\n */\nconst dragMove: StrategyInterface = {\n  onDragMove: ({ offsetX, offsetY, config, state, table, canAcceptDrop }) => {\n    const { elementHeight, elementWidth, columns } = config;\n    const {\n      draggingTile,\n      dragPosition,\n      dropTargetTile,\n      droppable,\n      start,\n      tiles,\n    } = state;\n\n    if (!draggingTile || !dragPosition || !start || !tiles) return;\n\n    const x = start.col * elementWidth + offsetX + dragPosition.x;\n    const y = start.row * elementHeight + offsetY + dragPosition.y;\n\n    //find the position of the tile in the grid\n    const cell = TableUtils.pointToLocation(table, x, y, config);\n    const tsize = TableUtils.tableSize(table);\n\n    //console.log('data:', { x, y, cell, start, draggingTile });\n\n    //try to see if we're touching a hot point\n    if (cell.col <= tsize.cols && cell.row <= tsize.rows) {\n      //find the touched tile within the move\n\n      const touchedTile = table[cell.row][cell.col];\n      if (!touchedTile || touchedTile.data === draggingTile.data) return;\n\n      //get the touchpoint of the touched tile\n      const touchPoint = TilesUtils.getTileTouchPoint(\n        draggingTile,\n        touchedTile,\n        {\n          x,\n          y,\n        },\n        config\n      );\n      if (!touchPoint) return;\n\n      //console.log('HIT TOUCHPOINT', { table, tiles });\n\n      if (touchPoint === 'center') {\n        if (touchedTile === dropTargetTile)\n          return {\n            dropTargetTile,\n            droppable,\n          };\n        if (canAcceptDrop(draggingTile, touchedTile))\n          return { dropTargetTile: touchedTile, droppable: true };\n        return;\n      }\n\n      //a touchpoint has been identified\n\n      const rowDisplacement = Math.floor(dragPosition.y / elementHeight);\n      const colDisplacement = Math.floor(dragPosition.x / elementWidth);\n\n      //calculate the new dragged tile location. This depends on the touched side.\n      const newDragTileLocation = TableUtils.trimLocation(\n        table,\n        touchPoint === 'right'\n          ? {\n              col: cell.col - (draggingTile.colSpan - 1),\n              row: cell.row - rowDisplacement,\n            }\n          : touchPoint === 'left'\n          ? {\n              col: cell.col,\n              row: cell.row - rowDisplacement,\n            }\n          : touchPoint === 'top'\n          ? {\n              col: cell.col - colDisplacement,\n              row: cell.row,\n            }\n          : /*touchPoint === 'bottom'*/ {\n              col: cell.col - colDisplacement,\n              row: cell.row - (draggingTile.rowSpan - 1),\n            }\n      );\n\n      /*\n      console.log(\n        'Effective location:',\n        newDragTileLocation,\n        touchedTile,\n        touchPoint,\n        state\n      );\n      */\n\n      //identify all hover tiles (excluding ourselves)\n      const hoverTiles = TilesTableUtils.interceptTiles(\n        table,\n        newDragTileLocation.row,\n        newDragTileLocation.col,\n        draggingTile.rowSpan,\n        draggingTile.colSpan\n      ).filter(tiles => tiles.data !== draggingTile.data);\n\n      if (!hoverTiles.length) {\n        return;\n      }\n\n      //console.log('hover tiles:', hoverTiles);\n\n      //create a table with the remaining tiles\n      const otherTiles = tiles.filter(\n        tile =>\n          tile.data !== draggingTile.data &&\n          !hoverTiles.find(t => t.data === tile.data)\n      );\n      const newDraggingTile = {\n        ...draggingTile,\n        ...newDragTileLocation,\n      };\n\n      let checkTable = TableUtils.newTable(\n        tsize.rows + draggingTile.rowSpan - 1,\n        tsize.cols,\n        0\n      );\n      otherTiles.forEach(tile => {\n        checkTable = TableUtils.placeInTable(tile, 1, checkTable);\n      });\n\n      /*\n      console.log('checktable dump:');\n      checkTable.forEach(row => {\n        console.log(row.join(''));\n      });\n      */\n\n      //try to fit the dragging tile in the current location\n      if (!TableUtils.fitsInTable(newDraggingTile, checkTable)) {\n        //console.log('new drag tile does not fit');\n        return;\n      }\n      checkTable = TableUtils.placeInTable(newDraggingTile, 1, checkTable);\n\n      /*\n      console.log('checktable dump with drag tile:');\n      checkTable.forEach(row => {\n        console.log(row.join(''));\n      });\n      */\n\n      const repositionedHoverTiles: TilePositionInfo<any>[] = [];\n      if (\n        hoverTiles.find(tile => {\n          const newPosition = TableUtils.findFirstFittingPosition(\n            tile,\n            checkTable\n          );\n          //console.log('fitting', { tile, newPosition });\n          if (!newPosition) return true;\n          const repositionedTile = { ...tile, ...newPosition };\n          repositionedHoverTiles.push(repositionedTile);\n          checkTable = TableUtils.placeInTable(repositionedTile, 1, checkTable);\n          return false;\n        })\n      ) {\n        //console.log('repositioning failed');\n        return;\n      }\n\n      const reorderedTiles = [\n        ...repositionedHoverTiles,\n        ...otherTiles,\n        newDraggingTile,\n      ].sort((a, b) => a.col + a.row * columns - (b.col + b.row * columns));\n      return {\n        draggingTile: newDraggingTile,\n        tiles: reorderedTiles,\n      };\n    }\n  },\n  onDragEnd: () => undefined,\n};\n\nexport default dragMove;\n", "import { StrategyInterface, TilePositionInfo, DragState } from '../model';\nimport * as TilesTableUtils from '../table-utils/tiles-table';\nimport * as TableUtils from '../table-utils/table';\nimport * as TilesUtils from '../table-utils/tiles';\n\n/**\n * Calculates the new table configuration while the tiles are moving\n * @param offsetX\n * @param offsetY\n * @returns\n */\nconst reorder: StrategyInterface = {\n  onDragMove: ({ offsetX, offsetY, config, state, table, canAcceptDrop }) => {\n    const { elementHeight, elementWidth } = config;\n    const {\n      draggingTile,\n      dragPosition,\n      dropTargetTile,\n      droppable,\n      start,\n      tiles,\n    } = state;\n\n    console.log('DRAG MOVE');\n\n    if (!draggingTile || !dragPosition || !start || !tiles) return;\n\n    const getInsertionPoint = <T>(\n      tiles: TilePositionInfo<T>[],\n      touchPoint: 'left' | 'right',\n      touchedTile: TilePositionInfo<T>\n    ) => {\n      const tilePosition = tiles.findIndex(\n        tile => tile.data === touchedTile?.data\n      );\n      if (touchPoint === 'left') {\n        const leftTile =\n          tilePosition - 1 >= 0 ? tiles[tilePosition - 1] : undefined;\n        if (leftTile === draggingTile) return undefined;\n        return {\n          insertionPoint: {\n            right: touchedTile,\n            left: leftTile?.row === touchedTile.row ? leftTile : undefined,\n          },\n        };\n      } else {\n        const rightTile =\n          tilePosition + 1 < tiles.length ? tiles[tilePosition + 1] : undefined;\n        if (rightTile === draggingTile) return undefined;\n        return {\n          insertionPoint: {\n            left: touchedTile,\n            right: rightTile?.row === touchedTile.row ? rightTile : undefined,\n          },\n        };\n      }\n    };\n\n    const x = start.col * elementWidth + offsetX + dragPosition.x;\n    const y = start.row * elementHeight + offsetY + dragPosition.y;\n\n    //find the position of the tile in the grid\n    const cell = TableUtils.pointToLocation(table, x, y, config);\n    const tsize = TableUtils.tableSize(table);\n\n    //console.log('data:', { x, y, cell, start, draggingTile });\n\n    //try to see if we're touching a hot point\n    //find the touched tile within the move\n\n    const touchedTile = table[cell.row][cell.col];\n    if (!touchedTile || touchedTile.data === draggingTile.data) return;\n\n    //get the touchpoint of the touched tile\n    const touchPoint = TilesUtils.getTileTouchPoint(\n      touchedTile,\n      touchedTile,\n      {\n        x,\n        y,\n      },\n      config\n    );\n    if (!touchPoint) return;\n\n    //console.log('HIT TOUCHPOINT', { table, tiles });\n    console.log('touch point:', touchPoint);\n\n    if (touchPoint === 'center') {\n      if (touchedTile === dropTargetTile)\n        return {\n          dropTargetTile,\n          droppable,\n        };\n      if (canAcceptDrop(draggingTile, touchedTile))\n        return {\n          dropTargetTile: touchedTile,\n          droppable: true,\n        };\n      return;\n    }\n\n    //apply calculation only if touching left or right areas\n    if (touchPoint !== 'right' && touchPoint !== 'left') return;\n\n    //if the touch point is in the bottom of the cell, pick the adjacent cell\n    if (touchedTile.row !== cell.row) {\n      const adjacentCol =\n        touchPoint === 'left' ? cell.col - 1 : cell.col + touchedTile.colSpan;\n      if (adjacentCol < 0 || adjacentCol > tsize.cols) return;\n      const adjacentTile = table[cell.row][adjacentCol];\n      if (!adjacentTile) return;\n\n      const shiftedInsertionPoint = getInsertionPoint(\n        tiles,\n        touchPoint === 'left' ? 'right' : 'left',\n        adjacentTile\n      )?.insertionPoint;\n      console.log('SHIFTING: ', { shiftedInsertionPoint, touchPoint });\n\n      return {\n        insertionPoint: {\n          left:\n            touchPoint === 'left' ? shiftedInsertionPoint?.right : undefined,\n          right:\n            touchPoint === 'right' ? shiftedInsertionPoint?.left : undefined,\n        },\n      };\n    }\n\n    return getInsertionPoint(tiles, touchPoint, touchedTile);\n  },\n\n  onDragEnd: ({ state }) => {\n    const { insertionPoint, draggingTile, tiles } = state;\n    console.log('Drag end start:', {\n      insertionPoint,\n      draggingTile,\n      tiles,\n    });\n\n    if (!tiles || !draggingTile || !insertionPoint) return;\n    const newTiles = tiles.filter(tile => tile.data !== draggingTile.data);\n    const { left, right } = insertionPoint;\n\n    const insertionLeftIdx = left\n      ? newTiles.findIndex(tile => tile.data === left.data) + 1\n      : -1;\n    const insertionRightIdx = right\n      ? newTiles.findIndex(tile => tile.data === right.data)\n      : -1;\n\n    const insertionIndex =\n      insertionLeftIdx > 0 ? insertionLeftIdx : insertionRightIdx;\n    if (insertionIndex < 0) newTiles.push(draggingTile);\n    else {\n      newTiles.splice(insertionIndex, 0, draggingTile);\n    }\n    console.log('Drag end:', {\n      insertionPoint,\n      insertionLeftIdx,\n      insertionRightIdx,\n      draggingTile,\n      tiles,\n      newTiles,\n    });\n\n    return { tiles: newTiles };\n  },\n};\n\nexport default reorder;\n", "import { useMemo, useState } from 'react';\nimport { useDrag } from '@use-gesture/react';\nimport {\n  GridConfig,\n  TileInfo,\n  TilePositionInfo,\n  RenderTileProps,\n} from './model';\nimport * as TilesTableUtils from './table-utils/tiles-table';\nimport moveStrategy from './strategies/move';\nimport reorderStrategy from './strategies/reorder';\nimport { DragState } from './model';\nimport { reduceRight } from 'lodash';\n\ninterface TileTableDNDProps<T> {\n  strategy: 'reorder' | 'move';\n  enabled: boolean;\n  elementWidth: number;\n  elementHeight: number;\n  activeBorderSize: number;\n  columns: number;\n  currentTiles: TileInfo<T>[];\n  canAcceptDrop: (\n    draggingTile: TileInfo<T>,\n    targetTile: TileInfo<T>\n  ) => boolean;\n  didDrop: (draggingTile: TileInfo<T>, targetTile: TileInfo<T>) => void;\n  changeTilesOrder: (tiles: TileInfo<T>[]) => void;\n}\n\nexport const useTileTable = <T>({\n  enabled,\n  strategy,\n  elementWidth,\n  elementHeight,\n  activeBorderSize,\n  columns,\n  currentTiles,\n  canAcceptDrop,\n  changeTilesOrder,\n  didDrop,\n}: TileTableDNDProps<T>) => {\n  const strategyImpl = strategy === 'reorder' ? reorderStrategy : moveStrategy;\n  const [state, setState] = useState<DragState<T>>({\n    dragging: false,\n    droppable: false,\n  });\n\n  //the tile layout table\n  const { tiles: draggingTiles, dragging, insertionPoint } = state;\n\n  const effectiveTiles = (enabled && dragging && draggingTiles) || currentTiles;\n\n  const table = useMemo(\n    () => TilesTableUtils.tilesListToTable(effectiveTiles, columns),\n    [effectiveTiles, columns]\n  );\n\n  const positionedTiles = useMemo(\n    () => TilesTableUtils.tableToTilesList(table),\n    [table]\n  );\n\n  const config: GridConfig = {\n    elementHeight,\n    elementWidth,\n    activeBorderSize,\n    columns,\n  };\n\n  const bind = useDrag<React.PointerEvent<HTMLDivElement>>(\n    ({ args: [data], dragging, tap, xy, movement, event }) => {\n      if (dragging) {\n        if (!tap) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n\n        //if this is the first event, initialize the dragging\n        if (!state.dragging) {\n          const rect = event.currentTarget.getBoundingClientRect();\n\n          //identify the hit tile\n          const draggingTile = positionedTiles.find(tile => tile.data === data);\n          if (!draggingTile) return;\n\n          setState({\n            dragging: true,\n            droppable: false,\n            tiles: positionedTiles,\n            draggingTile,\n            dragPosition: { x: xy[0] - rect.x, y: xy[1] - rect.y },\n            offset: { x: movement[0], y: movement[1] },\n            start: { col: draggingTile.col, row: draggingTile.row },\n          });\n        } else {\n          const result =\n            strategyImpl.onDragMove({\n              offsetX: movement[0],\n              offsetY: movement[1],\n              canAcceptDrop,\n              config,\n              state,\n              table,\n            }) || {};\n          setState(state => ({\n            ...state,\n            offset: { x: movement[0], y: movement[1] },\n            dropTargetTile: undefined,\n            droppable: false,\n            insertionPoint: undefined,\n            ...result,\n          }));\n        }\n      } else {\n        if (state.draggingTile && state.dropTargetTile && state.droppable) {\n          didDrop(state.draggingTile, state.dropTargetTile);\n        } else {\n          const result =\n            strategyImpl.onDragEnd({\n              offsetX: movement[0],\n              offsetY: movement[1],\n              canAcceptDrop,\n              config,\n              state,\n              table,\n            }) || {};\n          const finalState = { ...state, ...result };\n          finalState.tiles && changeTilesOrder(finalState.tiles);\n        }\n\n        setState({\n          dragging: false,\n          droppable: false,\n        });\n      }\n    },\n    { filterTaps: true, enabled }\n  );\n\n  const renderTileProps = useMemo<\n    (RenderTileProps<T> & {\n      x: number;\n      y: number;\n      key: number;\n    })[]\n  >(() => {\n    if (!enabled) {\n      return positionedTiles\n        .map(tile => ({\n          ...tile,\n          tileWidth: elementWidth,\n          tileHeight: elementHeight,\n          isDragging: false,\n          isDropTarget: false,\n          isDroppable: false,\n          isDroppableAtInsertPosition: false,\n          insertAtLeft: false,\n          insertAtRight: false,\n          x: tile.col * elementWidth,\n          y: tile.row * elementHeight,\n        }))\n        .sort((a, b) => a.key - b.key);\n    } else\n      return positionedTiles\n        .map(tile => {\n          return {\n            ...tile,\n            tileWidth: elementWidth,\n            tileHeight: elementHeight,\n            isDragging: tile.data === state.draggingTile?.data,\n            isDropTarget: tile.data === state.dropTargetTile?.data,\n            insertAtLeft: tile.data === state.insertionPoint?.left?.data,\n            insertAtRight: tile.data === state.insertionPoint?.right?.data,\n            isDroppable:\n              tile.data === state.draggingTile?.data && state.droppable,\n            isDroppableAtInsertPosition: !!(\n              tile.data === state.draggingTile?.data && state.insertionPoint\n            ),\n            x:\n              tile.data === state.draggingTile?.data\n                ? (state.start?.col || 0) * elementWidth +\n                  (state.offset?.x || 0)\n                : tile.col * elementWidth,\n            y:\n              tile.data === state.draggingTile?.data\n                ? (state.start?.row || 0) * elementHeight +\n                  (state.offset?.y || 0)\n                : tile.row * elementHeight,\n          };\n        })\n        .sort((a, b) => a.key - b.key);\n  }, [state, positionedTiles, elementHeight, elementWidth, enabled]);\n\n  const { draggingTile } = state;\n  const insertIndicatorPosition = useMemo(() => {\n    const { left, right } = insertionPoint || {};\n    if (left)\n      return {\n        x: (left.col + left.colSpan) * elementWidth,\n        y: left.row * elementHeight,\n      };\n    if (right)\n      return {\n        x: right.col * elementWidth,\n        y: right.row * elementHeight,\n      };\n    if (draggingTile)\n      return {\n        x: draggingTile.col * elementWidth,\n        y: draggingTile.row * elementHeight,\n      };\n  }, [insertionPoint, elementHeight, elementWidth, draggingTile]);\n\n  return {\n    table,\n    tableHeight: table.length * elementHeight,\n    tiles: positionedTiles,\n    insertIndicatorPosition,\n    bind,\n    renderTileProps,\n  };\n};\n", "import { useMemo } from 'react';\nvar createMemo = function (fn) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return useMemo(function () { return fn.apply(void 0, args); }, args);\n    };\n};\nexport default createMemo;\n", "import { createContext, createElement, useContext, useReducer } from 'react';\nvar createReducerContext = function (reducer, defaultInitialState) {\n    var context = createContext(undefined);\n    var providerFactory = function (props, children) { return createElement(context.Provider, props, children); };\n    var ReducerProvider = function (_a) {\n        var children = _a.children, initialState = _a.initialState;\n        var state = useReducer(reducer, initialState !== undefined ? initialState : defaultInitialState);\n        return providerFactory({ value: state }, children);\n    };\n    var useReducerContext = function () {\n        var state = useContext(context);\n        if (state == null) {\n            throw new Error(\"useReducerContext must be used inside a ReducerProvider.\");\n        }\n        return state;\n    };\n    return [useReducerContext, ReducerProvider, context];\n};\nexport default createReducerContext;\n", "import { useCallback, useRef, useState } from 'react';\nimport useUpdateEffect from '../useUpdateEffect';\nfunction composeMiddleware(chain) {\n    return function (context, dispatch) {\n        return chain.reduceRight(function (res, middleware) {\n            return middleware(context)(res);\n        }, dispatch);\n    };\n}\nvar createReducer = function () {\n    var middlewares = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        middlewares[_i] = arguments[_i];\n    }\n    var composedMiddleware = composeMiddleware(middlewares);\n    return function (reducer, initialState, initializer) {\n        if (initializer === void 0) { initializer = function (value) { return value; }; }\n        var ref = useRef(initializer(initialState));\n        var _a = useState(ref.current), setState = _a[1];\n        var dispatch = useCallback(function (action) {\n            ref.current = reducer(ref.current, action);\n            setState(ref.current);\n            return action;\n        }, [reducer]);\n        var dispatchRef = useRef(composedMiddleware({\n            getState: function () { return ref.current; },\n            dispatch: function () {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i] = arguments[_i];\n                }\n                return dispatchRef.current.apply(dispatchRef, args);\n            },\n        }, dispatch));\n        useUpdateEffect(function () {\n            dispatchRef.current = composedMiddleware({\n                getState: function () { return ref.current; },\n                dispatch: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    return dispatchRef.current.apply(dispatchRef, args);\n                },\n            }, dispatch);\n        }, [dispatch]);\n        return [ref.current, dispatchRef.current];\n    };\n};\nexport default createReducer;\n", "import { useEffect } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nvar useUpdateEffect = function (effect, deps) {\n    var isFirstMount = useFirstMountState();\n    useEffect(function () {\n        if (!isFirstMount) {\n            return effect();\n        }\n    }, deps);\n};\nexport default useUpdateEffect;\n", "import { useRef } from 'react';\nexport function useFirstMountState() {\n    var isFirst = useRef(true);\n    if (isFirst.current) {\n        isFirst.current = false;\n        return true;\n    }\n    return isFirst.current;\n}\n", "import { createContext, createElement, useContext, useState } from 'react';\nvar createStateContext = function (defaultInitialValue) {\n    var context = createContext(undefined);\n    var providerFactory = function (props, children) { return createElement(context.Provider, props, children); };\n    var StateProvider = function (_a) {\n        var children = _a.children, initialValue = _a.initialValue;\n        var state = useState(initialValue !== undefined ? initialValue : defaultInitialValue);\n        return providerFactory({ value: state }, children);\n    };\n    var useStateContext = function () {\n        var state = useContext(context);\n        if (state == null) {\n            throw new Error(\"useStateContext must be used inside a StateProvider.\");\n        }\n        return state;\n    };\n    return [useStateContext, StateProvider, context];\n};\nexport default createStateContext;\n", "import { useEffect } from 'react';\nimport useAsyncFn from './useAsyncFn';\nexport default function useAsync(fn, deps) {\n    if (deps === void 0) { deps = []; }\n    var _a = useAsyncFn(fn, deps, {\n        loading: true,\n    }), state = _a[0], callback = _a[1];\n    useEffect(function () {\n        callback();\n    }, [callback]);\n    return state;\n}\n", "import { __assign } from \"tslib\";\nimport { useCallback, useRef, useState } from 'react';\nimport useMountedState from './useMountedState';\nexport default function useAsyncFn(fn, deps, initialState) {\n    if (deps === void 0) { deps = []; }\n    if (initialState === void 0) { initialState = { loading: false }; }\n    var lastCallId = useRef(0);\n    var isMounted = useMountedState();\n    var _a = useState(initialState), state = _a[0], set = _a[1];\n    var callback = useCallback(function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var callId = ++lastCallId.current;\n        if (!state.loading) {\n            set(function (prevState) { return (__assign(__assign({}, prevState), { loading: true })); });\n        }\n        return fn.apply(void 0, args).then(function (value) {\n            isMounted() && callId === lastCallId.current && set({ value: value, loading: false });\n            return value;\n        }, function (error) {\n            isMounted() && callId === lastCallId.current && set({ error: error, loading: false });\n            return error;\n        });\n    }, deps);\n    return [state, callback];\n}\n", "import { useCallback, useEffect, useRef } from 'react';\nexport default function useMountedState() {\n    var mountedRef = useRef(false);\n    var get = useCallback(function () { return mountedRef.current; }, []);\n    useEffect(function () {\n        mountedRef.current = true;\n        return function () {\n            mountedRef.current = false;\n        };\n    }, []);\n    return get;\n}\n", "import { __assign, __spreadArrays } from \"tslib\";\nimport { useCallback, useState } from 'react';\nimport useAsync from './useAsync';\nvar useAsyncRetry = function (fn, deps) {\n    if (deps === void 0) { deps = []; }\n    var _a = useState(0), attempt = _a[0], setAttempt = _a[1];\n    var state = useAsync(fn, __spreadArrays(deps, [attempt]));\n    var stateLoading = state.loading;\n    var retry = useCallback(function () {\n        if (stateLoading) {\n            if (process.env.NODE_ENV === 'development') {\n                console.log('You are calling useAsyncRetry hook retry() method while loading in progress, this is a no-op.');\n            }\n            return;\n        }\n        setAttempt(function (currentAttempt) { return currentAttempt + 1; });\n    }, __spreadArrays(deps, [stateLoading]));\n    return __assign(__assign({}, state), { retry: retry });\n};\nexport default useAsyncRetry;\n", "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport useSetState from '../useSetState';\nimport parseTimeRanges from '../misc/parseTimeRanges';\nexport default function createHTMLMediaHook(tag) {\n    return function (elOrProps) {\n        var element;\n        var props;\n        if (React.isValidElement(elOrProps)) {\n            element = elOrProps;\n            props = element.props;\n        }\n        else {\n            props = elOrProps;\n        }\n        var _a = useSetState({\n            buffered: [],\n            time: 0,\n            duration: 0,\n            paused: true,\n            muted: false,\n            volume: 1,\n            playing: false,\n        }), state = _a[0], setState = _a[1];\n        var ref = useRef(null);\n        var wrapEvent = function (userEvent, proxyEvent) {\n            return function (event) {\n                try {\n                    proxyEvent && proxyEvent(event);\n                }\n                finally {\n                    userEvent && userEvent(event);\n                }\n            };\n        };\n        var onPlay = function () { return setState({ paused: false }); };\n        var onPlaying = function () { return setState({ playing: true }); };\n        var onWaiting = function () { return setState({ playing: false }); };\n        var onPause = function () { return setState({ paused: true, playing: false }); };\n        var onVolumeChange = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            setState({\n                muted: el.muted,\n                volume: el.volume,\n            });\n        };\n        var onDurationChange = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            var duration = el.duration, buffered = el.buffered;\n            setState({\n                duration: duration,\n                buffered: parseTimeRanges(buffered),\n            });\n        };\n        var onTimeUpdate = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            setState({ time: el.currentTime });\n        };\n        var onProgress = function () {\n            var el = ref.current;\n            if (!el) {\n                return;\n            }\n            setState({ buffered: parseTimeRanges(el.buffered) });\n        };\n        if (element) {\n            element = React.cloneElement(element, __assign(__assign({ controls: false }, props), { ref: ref, onPlay: wrapEvent(props.onPlay, onPlay), onPlaying: wrapEvent(props.onPlaying, onPlaying), onWaiting: wrapEvent(props.onWaiting, onWaiting), onPause: wrapEvent(props.onPause, onPause), onVolumeChange: wrapEvent(props.onVolumeChange, onVolumeChange), onDurationChange: wrapEvent(props.onDurationChange, onDurationChange), onTimeUpdate: wrapEvent(props.onTimeUpdate, onTimeUpdate), onProgress: wrapEvent(props.onProgress, onProgress) }));\n        }\n        else {\n            element = React.createElement(tag, __assign(__assign({ controls: false }, props), { ref: ref, onPlay: wrapEvent(props.onPlay, onPlay), onPlaying: wrapEvent(props.onPlaying, onPlaying), onWaiting: wrapEvent(props.onWaiting, onWaiting), onPause: wrapEvent(props.onPause, onPause), onVolumeChange: wrapEvent(props.onVolumeChange, onVolumeChange), onDurationChange: wrapEvent(props.onDurationChange, onDurationChange), onTimeUpdate: wrapEvent(props.onTimeUpdate, onTimeUpdate), onProgress: wrapEvent(props.onProgress, onProgress) })); // TODO: fix this typing.\n        }\n        // Some browsers return `Promise` on `.play()` and may throw errors\n        // if one tries to execute another `.play()` or `.pause()` while that\n        // promise is resolving. So we prevent that with this lock.\n        // See: https://bugs.chromium.org/p/chromium/issues/detail?id=593273\n        var lockPlay = false;\n        var controls = {\n            play: function () {\n                var el = ref.current;\n                if (!el) {\n                    return undefined;\n                }\n                if (!lockPlay) {\n                    var promise = el.play();\n                    var isPromise = typeof promise === 'object';\n                    if (isPromise) {\n                        lockPlay = true;\n                        var resetLock = function () {\n                            lockPlay = false;\n                        };\n                        promise.then(resetLock, resetLock);\n                    }\n                    return promise;\n                }\n                return undefined;\n            },\n            pause: function () {\n                var el = ref.current;\n                if (el && !lockPlay) {\n                    return el.pause();\n                }\n            },\n            seek: function (time) {\n                var el = ref.current;\n                if (!el || state.duration === undefined) {\n                    return;\n                }\n                time = Math.min(state.duration, Math.max(0, time));\n                el.currentTime = time;\n            },\n            volume: function (volume) {\n                var el = ref.current;\n                if (!el) {\n                    return;\n                }\n                volume = Math.min(1, Math.max(0, volume));\n                el.volume = volume;\n                setState({ volume: volume });\n            },\n            mute: function () {\n                var el = ref.current;\n                if (!el) {\n                    return;\n                }\n                el.muted = true;\n            },\n            unmute: function () {\n                var el = ref.current;\n                if (!el) {\n                    return;\n                }\n                el.muted = false;\n            },\n        };\n        useEffect(function () {\n            var el = ref.current;\n            if (!el) {\n                if (process.env.NODE_ENV !== 'production') {\n                    if (tag === 'audio') {\n                        console.error('useAudio() ref to <audio> element is empty at mount. ' +\n                            'It seem you have not rendered the audio element, which it ' +\n                            'returns as the first argument const [audio] = useAudio(...).');\n                    }\n                    else if (tag === 'video') {\n                        console.error('useVideo() ref to <video> element is empty at mount. ' +\n                            'It seem you have not rendered the video element, which it ' +\n                            'returns as the first argument const [video] = useVideo(...).');\n                    }\n                }\n                return;\n            }\n            setState({\n                volume: el.volume,\n                muted: el.muted,\n                paused: el.paused,\n            });\n            // Start media, if autoPlay requested.\n            if (props.autoPlay && el.paused) {\n                controls.play();\n            }\n        }, [props.src]);\n        return [element, state, controls, ref];\n    };\n}\n", "import { useCallback, useState } from 'react';\nvar useSetState = function (initialState) {\n    if (initialState === void 0) { initialState = {}; }\n    var _a = useState(initialState), state = _a[0], set = _a[1];\n    var setState = useCallback(function (patch) {\n        set(function (prevState) {\n            return Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch);\n        });\n    }, []);\n    return [state, setState];\n};\nexport default useSetState;\n", "export default function parseTimeRanges(ranges) {\n    var result = [];\n    for (var i = 0; i < ranges.length; i++) {\n        result.push({\n            start: ranges.start(i),\n            end: ranges.end(i),\n        });\n    }\n    return result;\n}\n", "import createHTMLMediaHook from './factory/createHTMLMediaHook';\nvar useAudio = createHTMLMediaHook('audio');\nexport default useAudio;\n", "import { useEffect, useState } from 'react';\nimport { isNavigator, off, on } from './misc/util';\nimport isDeepEqual from './misc/isDeepEqual';\nvar nav = isNavigator ? navigator : undefined;\nvar isBatteryApiSupported = nav && typeof nav.getBattery === 'function';\nfunction useBatteryMock() {\n    return { isSupported: false };\n}\nfunction useBattery() {\n    var _a = useState({ isSupported: true, fetched: false }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var isMounted = true;\n        var battery = null;\n        var handleChange = function () {\n            if (!isMounted || !battery) {\n                return;\n            }\n            var newState = {\n                isSupported: true,\n                fetched: true,\n                level: battery.level,\n                charging: battery.charging,\n                dischargingTime: battery.dischargingTime,\n                chargingTime: battery.chargingTime,\n            };\n            !isDeepEqual(state, newState) && setState(newState);\n        };\n        nav.getBattery().then(function (bat) {\n            if (!isMounted) {\n                return;\n            }\n            battery = bat;\n            on(battery, 'chargingchange', handleChange);\n            on(battery, 'chargingtimechange', handleChange);\n            on(battery, 'dischargingtimechange', handleChange);\n            on(battery, 'levelchange', handleChange);\n            handleChange();\n        });\n        return function () {\n            isMounted = false;\n            if (battery) {\n                off(battery, 'chargingchange', handleChange);\n                off(battery, 'chargingtimechange', handleChange);\n                off(battery, 'dischargingtimechange', handleChange);\n                off(battery, 'levelchange', handleChange);\n            }\n        };\n    }, []);\n    return state;\n}\nexport default isBatteryApiSupported ? useBattery : useBatteryMock;\n", "export var noop = function () { };\nexport function on(obj) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (obj && obj.addEventListener) {\n        obj.addEventListener.apply(obj, args);\n    }\n}\nexport function off(obj) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (obj && obj.removeEventListener) {\n        obj.removeEventListener.apply(obj, args);\n    }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n", "import isDeepEqualReact from 'fast-deep-equal/react';\nexport default isDeepEqualReact;\n", "import { useCallback, useEffect } from 'react';\nimport { off, on } from './misc/util';\nvar useBeforeUnload = function (enabled, message) {\n    if (enabled === void 0) { enabled = true; }\n    var handler = useCallback(function (event) {\n        var finalEnabled = typeof enabled === 'function' ? enabled() : true;\n        if (!finalEnabled) {\n            return;\n        }\n        event.preventDefault();\n        if (message) {\n            event.returnValue = message;\n        }\n        return message;\n    }, [enabled, message]);\n    useEffect(function () {\n        if (!enabled) {\n            return;\n        }\n        on(window, 'beforeunload', handler);\n        return function () { return off(window, 'beforeunload', handler); };\n    }, [enabled, handler]);\n};\nexport default useBeforeUnload;\n", "import { useReducer } from 'react';\nvar toggleReducer = function (state, nextValue) {\n    return typeof nextValue === 'boolean' ? nextValue : !state;\n};\nvar useToggle = function (initialValue) {\n    return useReducer(toggleReducer, initialValue);\n};\nexport default useToggle;\n", "import { useEffect, useRef } from 'react';\nimport { off, on } from './misc/util';\nvar defaultEvents = ['mousedown', 'touchstart'];\nvar useClickAway = function (ref, onClickAway, events) {\n    if (events === void 0) { events = defaultEvents; }\n    var savedCallback = useRef(onClickAway);\n    useEffect(function () {\n        savedCallback.current = onClickAway;\n    }, [onClickAway]);\n    useEffect(function () {\n        var handler = function (event) {\n            var el = ref.current;\n            el && !el.contains(event.target) && savedCallback.current(event);\n        };\n        for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n            var eventName = events_1[_i];\n            on(document, eventName, handler);\n        }\n        return function () {\n            for (var _i = 0, events_2 = events; _i < events_2.length; _i++) {\n                var eventName = events_2[_i];\n                off(document, eventName, handler);\n            }\n        };\n    }, [events, ref]);\n};\nexport default useClickAway;\n", "import { useCallback, useState } from 'react';\nimport Cookies from 'js-cookie';\nvar useCookie = function (cookieName) {\n    var _a = useState(function () { return Cookies.get(cookieName) || null; }), value = _a[0], setValue = _a[1];\n    var updateCookie = useCallback(function (newValue, options) {\n        Cookies.set(cookieName, newValue, options);\n        setValue(newValue);\n    }, [cookieName]);\n    var deleteCookie = useCallback(function () {\n        Cookies.remove(cookieName);\n        setValue(null);\n    }, [cookieName]);\n    return [value, updateCookie, deleteCookie];\n};\nexport default useCookie;\n", "import writeText from 'copy-to-clipboard';\nimport { useCallback } from 'react';\nimport useMountedState from './useMountedState';\nimport useSetState from './useSetState';\nvar useCopyToClipboard = function () {\n    var isMounted = useMountedState();\n    var _a = useSetState({\n        value: undefined,\n        error: undefined,\n        noUserInteraction: true,\n    }), state = _a[0], setState = _a[1];\n    var copyToClipboard = useCallback(function (value) {\n        if (!isMounted()) {\n            return;\n        }\n        var noUserInteraction;\n        var normalizedValue;\n        try {\n            // only strings and numbers casted to strings can be copied to clipboard\n            if (typeof value !== 'string' && typeof value !== 'number') {\n                var error = new Error(\"Cannot copy typeof \" + typeof value + \" to clipboard, must be a string\");\n                if (process.env.NODE_ENV === 'development')\n                    console.error(error);\n                setState({\n                    value: value,\n                    error: error,\n                    noUserInteraction: true,\n                });\n                return;\n            }\n            // empty strings are also considered invalid\n            else if (value === '') {\n                var error = new Error(\"Cannot copy empty string to clipboard.\");\n                if (process.env.NODE_ENV === 'development')\n                    console.error(error);\n                setState({\n                    value: value,\n                    error: error,\n                    noUserInteraction: true,\n                });\n                return;\n            }\n            normalizedValue = value.toString();\n            noUserInteraction = writeText(normalizedValue);\n            setState({\n                value: normalizedValue,\n                error: undefined,\n                noUserInteraction: noUserInteraction,\n            });\n        }\n        catch (error) {\n            setState({\n                value: normalizedValue,\n                error: error,\n                noUserInteraction: noUserInteraction,\n            });\n        }\n    }, []);\n    return [state, copyToClipboard];\n};\nexport default useCopyToClipboard;\n", "import { useMemo } from 'react';\nimport useGetSet from './useGetSet';\nimport { resolveHookState } from './misc/hookState';\nexport default function useCounter(initialValue, max, min) {\n    if (initialValue === void 0) { initialValue = 0; }\n    if (max === void 0) { max = null; }\n    if (min === void 0) { min = null; }\n    var init = resolveHookState(initialValue);\n    typeof init !== 'number' &&\n        console.error('initialValue has to be a number, got ' + typeof initialValue);\n    if (typeof min === 'number') {\n        init = Math.max(init, min);\n    }\n    else if (min !== null) {\n        console.error('min has to be a number, got ' + typeof min);\n    }\n    if (typeof max === 'number') {\n        init = Math.min(init, max);\n    }\n    else if (max !== null) {\n        console.error('max has to be a number, got ' + typeof max);\n    }\n    var _a = useGetSet(init), get = _a[0], setInternal = _a[1];\n    return [\n        get(),\n        useMemo(function () {\n            var set = function (newState) {\n                var prevState = get();\n                var rState = resolveHookState(newState, prevState);\n                if (prevState !== rState) {\n                    if (typeof min === 'number') {\n                        rState = Math.max(rState, min);\n                    }\n                    if (typeof max === 'number') {\n                        rState = Math.min(rState, max);\n                    }\n                    prevState !== rState && setInternal(rState);\n                }\n            };\n            return {\n                get: get,\n                set: set,\n                inc: function (delta) {\n                    if (delta === void 0) { delta = 1; }\n                    var rDelta = resolveHookState(delta, get());\n                    if (typeof rDelta !== 'number') {\n                        console.error('delta has to be a number or function returning a number, got ' + typeof rDelta);\n                    }\n                    set(function (num) { return num + rDelta; });\n                },\n                dec: function (delta) {\n                    if (delta === void 0) { delta = 1; }\n                    var rDelta = resolveHookState(delta, get());\n                    if (typeof rDelta !== 'number') {\n                        console.error('delta has to be a number or function returning a number, got ' + typeof rDelta);\n                    }\n                    set(function (num) { return num - rDelta; });\n                },\n                reset: function (value) {\n                    if (value === void 0) { value = init; }\n                    var rValue = resolveHookState(value, get());\n                    if (typeof rValue !== 'number') {\n                        console.error('value has to be a number or function returning a number, got ' + typeof rValue);\n                    }\n                    // eslint-disable-next-line react-hooks/exhaustive-deps\n                    init = rValue;\n                    set(rValue);\n                },\n            };\n        }, [init, min, max]),\n    ];\n}\n", "import { useMemo, useRef } from 'react';\nimport useUpdate from './useUpdate';\nimport { resolveHookState } from './misc/hookState';\nexport default function useGetSet(initialState) {\n    var state = useRef(resolveHookState(initialState));\n    var update = useUpdate();\n    return useMemo(function () { return [\n        function () { return state.current; },\n        function (newState) {\n            state.current = resolveHookState(newState, state.current);\n            update();\n        },\n    ]; }, []);\n}\n", "import { useReducer } from 'react';\nvar updateReducer = function (num) { return (num + 1) % 1000000; };\nexport default function useUpdate() {\n    var _a = useReducer(updateReducer, 0), update = _a[1];\n    return update;\n}\n", "import { create } from 'nano-css';\nimport { addon as addonCSSOM } from 'nano-css/addon/cssom';\nimport { addon as addonVCSSOM } from 'nano-css/addon/vcssom';\nimport { cssToTree } from 'nano-css/addon/vcssom/cssToTree';\nimport { useMemo } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nvar nano = create();\naddonCSSOM(nano);\naddonVCSSOM(nano);\nvar counter = 0;\nvar useCss = function (css) {\n    var className = useMemo(function () { return 'react-use-css-' + (counter++).toString(36); }, []);\n    var sheet = useMemo(function () { return new nano.VSheet(); }, []);\n    useIsomorphicLayoutEffect(function () {\n        var tree = {};\n        cssToTree(tree, css, '.' + className, '');\n        sheet.diff(tree);\n        return function () {\n            sheet.diff({});\n        };\n    });\n    return className;\n};\nexport default useCss;\n", "import { useEffect, useLayoutEffect } from 'react';\nimport { isBrowser } from './misc/util';\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n", "import { useEffect, useRef } from 'react';\nvar isPrimitive = function (val) { return val !== Object(val); };\nvar useCustomCompareEffect = function (effect, deps, depsEqual) {\n    if (process.env.NODE_ENV !== 'production') {\n        if (!(deps instanceof Array) || !deps.length) {\n            console.warn('`useCustomCompareEffect` should not be used with no dependencies. Use React.useEffect instead.');\n        }\n        if (deps.every(isPrimitive)) {\n            console.warn('`useCustomCompareEffect` should not be used with dependencies that are all primitive values. Use React.useEffect instead.');\n        }\n        if (typeof depsEqual !== 'function') {\n            console.warn('`useCustomCompareEffect` should be used with depsEqual callback for comparing deps list');\n        }\n    }\n    var ref = useRef(undefined);\n    if (!ref.current || !depsEqual(deps, ref.current)) {\n        ref.current = deps;\n    }\n    useEffect(effect, ref.current);\n};\nexport default useCustomCompareEffect;\n", "import { useEffect } from 'react';\nimport useTimeoutFn from './useTimeoutFn';\nexport default function useDebounce(fn, ms, deps) {\n    if (ms === void 0) { ms = 0; }\n    if (deps === void 0) { deps = []; }\n    var _a = useTimeoutFn(fn, ms), isReady = _a[0], cancel = _a[1], reset = _a[2];\n    useEffect(reset, deps);\n    return [isReady, cancel];\n}\n", "import { useCallback, useEffect, useRef } from 'react';\nexport default function useTimeoutFn(fn, ms) {\n    if (ms === void 0) { ms = 0; }\n    var ready = useRef(false);\n    var timeout = useRef();\n    var callback = useRef(fn);\n    var isReady = useCallback(function () { return ready.current; }, []);\n    var set = useCallback(function () {\n        ready.current = false;\n        timeout.current && clearTimeout(timeout.current);\n        timeout.current = setTimeout(function () {\n            ready.current = true;\n            callback.current();\n        }, ms);\n    }, [ms]);\n    var clear = useCallback(function () {\n        ready.current = null;\n        timeout.current && clearTimeout(timeout.current);\n    }, []);\n    // update ref when function changes\n    useEffect(function () {\n        callback.current = fn;\n    }, [fn]);\n    // set on mount, clear on unmount\n    useEffect(function () {\n        set();\n        return clear;\n    }, [ms]);\n    return [isReady, clear, set];\n}\n", "import { useState } from 'react';\nvar useDefault = function (defaultValue, initialValue) {\n    var _a = useState(initialValue), value = _a[0], setValue = _a[1];\n    if (value === undefined || value === null) {\n        return [defaultValue, setValue];\n    }\n    return [value, setValue];\n};\nexport default useDefault;\n", "import { __spreadArrays } from \"tslib\";\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { noop, off, on } from './misc/util';\nvar createProcess = function (options) { return function (dataTransfer, event) {\n    var uri = dataTransfer.getData('text/uri-list');\n    if (uri) {\n        (options.onUri || noop)(uri, event);\n        return;\n    }\n    if (dataTransfer.files && dataTransfer.files.length) {\n        (options.onFiles || noop)(Array.from(dataTransfer.files), event);\n        return;\n    }\n    if (event.clipboardData) {\n        var text = event.clipboardData.getData('text');\n        (options.onText || noop)(text, event);\n        return;\n    }\n}; };\nvar useDrop = function (options, args) {\n    if (options === void 0) { options = {}; }\n    if (args === void 0) { args = []; }\n    var onFiles = options.onFiles, onText = options.onText, onUri = options.onUri;\n    var _a = useState(false), over = _a[0], setOverRaw = _a[1];\n    var setOver = useCallback(setOverRaw, []);\n    var process = useMemo(function () { return createProcess(options); }, [onFiles, onText, onUri]);\n    useEffect(function () {\n        var onDragOver = function (event) {\n            event.preventDefault();\n            setOver(true);\n        };\n        var onDragEnter = function (event) {\n            event.preventDefault();\n            setOver(true);\n        };\n        var onDragLeave = function () {\n            setOver(false);\n        };\n        var onDragExit = function () {\n            setOver(false);\n        };\n        var onDrop = function (event) {\n            event.preventDefault();\n            setOver(false);\n            process(event.dataTransfer, event);\n        };\n        var onPaste = function (event) {\n            process(event.clipboardData, event);\n        };\n        on(document, 'dragover', onDragOver);\n        on(document, 'dragenter', onDragEnter);\n        on(document, 'dragleave', onDragLeave);\n        on(document, 'dragexit', onDragExit);\n        on(document, 'drop', onDrop);\n        if (onText) {\n            on(document, 'paste', onPaste);\n        }\n        return function () {\n            off(document, 'dragover', onDragOver);\n            off(document, 'dragenter', onDragEnter);\n            off(document, 'dragleave', onDragLeave);\n            off(document, 'dragexit', onDragExit);\n            off(document, 'drop', onDrop);\n            off(document, 'paste', onPaste);\n        };\n    }, __spreadArrays([process], args));\n    return { over: over };\n};\nexport default useDrop;\n", "import { useMemo, useState } from 'react';\nimport useMountedState from './useMountedState';\nimport { noop } from './misc/util';\n/*\nconst defaultState: DropAreaState = {\n  over: false,\n};\n*/\nvar createProcess = function (options, mounted) { return function (dataTransfer, event) {\n    var uri = dataTransfer.getData('text/uri-list');\n    if (uri) {\n        (options.onUri || noop)(uri, event);\n        return;\n    }\n    if (dataTransfer.files && dataTransfer.files.length) {\n        (options.onFiles || noop)(Array.from(dataTransfer.files), event);\n        return;\n    }\n    if (dataTransfer.items && dataTransfer.items.length) {\n        dataTransfer.items[0].getAsString(function (text) {\n            if (mounted) {\n                (options.onText || noop)(text, event);\n            }\n        });\n    }\n}; };\nvar createBond = function (process, setOver) { return ({\n    onDragOver: function (event) {\n        event.preventDefault();\n    },\n    onDragEnter: function (event) {\n        event.preventDefault();\n        setOver(true);\n    },\n    onDragLeave: function () {\n        setOver(false);\n    },\n    onDrop: function (event) {\n        event.preventDefault();\n        event.persist();\n        setOver(false);\n        process(event.dataTransfer, event);\n    },\n    onPaste: function (event) {\n        event.persist();\n        process(event.clipboardData, event);\n    },\n}); };\nvar useDropArea = function (options) {\n    if (options === void 0) { options = {}; }\n    var onFiles = options.onFiles, onText = options.onText, onUri = options.onUri;\n    var isMounted = useMountedState();\n    var _a = useState(false), over = _a[0], setOver = _a[1];\n    var process = useMemo(function () { return createProcess(options, isMounted()); }, [onFiles, onText, onUri]);\n    var bond = useMemo(function () { return createBond(process, setOver); }, [process, setOver]);\n    return [bond, { over: over }];\n};\nexport default useDropArea;\n", "import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n    useEffect(effect, []);\n};\nexport default useEffectOnce;\n", "import { forwardRef, useEffect, useRef, } from 'react';\nexport default function useEnsuredForwardedRef(forwardedRef) {\n    var ensuredRef = useRef(forwardedRef && forwardedRef.current);\n    useEffect(function () {\n        if (!forwardedRef) {\n            return;\n        }\n        forwardedRef.current = ensuredRef.current;\n    }, [forwardedRef]);\n    return ensuredRef;\n}\nexport function ensuredForwardRef(Component) {\n    return forwardRef(function (props, ref) {\n        var ensuredRef = useEnsuredForwardedRef(ref);\n        return Component(props, ensuredRef);\n    });\n}\n", "import { useEffect } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar defaultTarget = isBrowser ? window : null;\nvar isListenerType1 = function (target) {\n    return !!target.addEventListener;\n};\nvar isListenerType2 = function (target) {\n    return !!target.on;\n};\nvar useEvent = function (name, handler, target, options) {\n    if (target === void 0) { target = defaultTarget; }\n    useEffect(function () {\n        if (!handler) {\n            return;\n        }\n        if (!target) {\n            return;\n        }\n        if (isListenerType1(target)) {\n            on(target, name, handler, options);\n        }\n        else if (isListenerType2(target)) {\n            target.on(name, handler, options);\n        }\n        return function () {\n            if (isListenerType1(target)) {\n                off(target, name, handler, options);\n            }\n            else if (isListenerType2(target)) {\n                target.off(name, handler, options);\n            }\n        };\n    }, [name, handler, target, JSON.stringify(options)]);\n};\nexport default useEvent;\n", "import { useCallback, useEffect, useState } from 'react';\nvar useError = function () {\n    var _a = useState(null), error = _a[0], setError = _a[1];\n    useEffect(function () {\n        if (error) {\n            throw error;\n        }\n    }, [error]);\n    var dispatchError = useCallback(function (err) {\n        setError(err);\n    }, []);\n    return dispatchError;\n};\nexport default useError;\n", "import { useEffect } from 'react';\nvar useFavicon = function (href) {\n    useEffect(function () {\n        var link = document.querySelector(\"link[rel*='icon']\") || document.createElement('link');\n        link.type = 'image/x-icon';\n        link.rel = 'shortcut icon';\n        link.href = href;\n        document.getElementsByTagName('head')[0].appendChild(link);\n    }, [href]);\n};\nexport default useFavicon;\n", "import { useState } from 'react';\nimport screenfull from 'screenfull';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport { noop, off, on } from './misc/util';\nvar useFullscreen = function (ref, enabled, options) {\n    if (options === void 0) { options = {}; }\n    var video = options.video, _a = options.onClose, onClose = _a === void 0 ? noop : _a;\n    var _b = useState(enabled), isFullscreen = _b[0], setIsFullscreen = _b[1];\n    useIsomorphicLayoutEffect(function () {\n        if (!enabled) {\n            return;\n        }\n        if (!ref.current) {\n            return;\n        }\n        var onWebkitEndFullscreen = function () {\n            if (video === null || video === void 0 ? void 0 : video.current) {\n                off(video.current, 'webkitendfullscreen', onWebkitEndFullscreen);\n            }\n            onClose();\n        };\n        var onChange = function () {\n            if (screenfull.isEnabled) {\n                var isScreenfullFullscreen = screenfull.isFullscreen;\n                setIsFullscreen(isScreenfullFullscreen);\n                if (!isScreenfullFullscreen) {\n                    onClose();\n                }\n            }\n        };\n        if (screenfull.isEnabled) {\n            try {\n                screenfull.request(ref.current);\n                setIsFullscreen(true);\n            }\n            catch (error) {\n                onClose(error);\n                setIsFullscreen(false);\n            }\n            screenfull.on('change', onChange);\n        }\n        else if (video && video.current && video.current.webkitEnterFullscreen) {\n            video.current.webkitEnterFullscreen();\n            on(video.current, 'webkitendfullscreen', onWebkitEndFullscreen);\n            setIsFullscreen(true);\n        }\n        else {\n            onClose();\n            setIsFullscreen(false);\n        }\n        return function () {\n            setIsFullscreen(false);\n            if (screenfull.isEnabled) {\n                try {\n                    screenfull.off('change', onChange);\n                    screenfull.exit();\n                }\n                catch (_a) { }\n            }\n            else if (video && video.current && video.current.webkitExitFullscreen) {\n                off(video.current, 'webkitendfullscreen', onWebkitEndFullscreen);\n                video.current.webkitExitFullscreen();\n            }\n        };\n    }, [enabled, video, ref]);\n    return isFullscreen;\n};\nexport default useFullscreen;\n", "import { __assign } from \"tslib\";\nimport { useEffect, useState } from 'react';\nvar useGeolocation = function (options) {\n    var _a = useState({\n        loading: true,\n        accuracy: null,\n        altitude: null,\n        altitudeAccuracy: null,\n        heading: null,\n        latitude: null,\n        longitude: null,\n        speed: null,\n        timestamp: Date.now(),\n    }), state = _a[0], setState = _a[1];\n    var mounted = true;\n    var watchId;\n    var onEvent = function (event) {\n        if (mounted) {\n            setState({\n                loading: false,\n                accuracy: event.coords.accuracy,\n                altitude: event.coords.altitude,\n                altitudeAccuracy: event.coords.altitudeAccuracy,\n                heading: event.coords.heading,\n                latitude: event.coords.latitude,\n                longitude: event.coords.longitude,\n                speed: event.coords.speed,\n                timestamp: event.timestamp,\n            });\n        }\n    };\n    var onEventError = function (error) {\n        return mounted && setState(function (oldState) { return (__assign(__assign({}, oldState), { loading: false, error: error })); });\n    };\n    useEffect(function () {\n        navigator.geolocation.getCurrentPosition(onEvent, onEventError, options);\n        watchId = navigator.geolocation.watchPosition(onEvent, onEventError, options);\n        return function () {\n            mounted = false;\n            navigator.geolocation.clearWatch(watchId);\n        };\n    }, []);\n    return state;\n};\nexport default useGeolocation;\n", "import { __assign } from \"tslib\";\nimport { useCallback, useRef } from 'react';\nimport useUpdate from './useUpdate';\nvar useGetSetState = function (initialState) {\n    if (initialState === void 0) { initialState = {}; }\n    if (process.env.NODE_ENV !== 'production') {\n        if (typeof initialState !== 'object') {\n            console.error('useGetSetState initial state must be an object.');\n        }\n    }\n    var update = useUpdate();\n    var state = useRef(__assign({}, initialState));\n    var get = useCallback(function () { return state.current; }, []);\n    var set = useCallback(function (patch) {\n        if (!patch) {\n            return;\n        }\n        if (process.env.NODE_ENV !== 'production') {\n            if (typeof patch !== 'object') {\n                console.error('useGetSetState setter patch must be an object.');\n            }\n        }\n        Object.assign(state.current, patch);\n        update();\n    }, []);\n    return [get, set];\n};\nexport default useGetSetState;\n", "import { useEffect, useRef } from 'react';\nimport { clearHarmonicInterval, setHarmonicInterval } from 'set-harmonic-interval';\nvar useHarmonicIntervalFn = function (fn, delay) {\n    if (delay === void 0) { delay = 0; }\n    var latestCallback = useRef(function () { });\n    useEffect(function () {\n        latestCallback.current = fn;\n    });\n    useEffect(function () {\n        if (delay !== null) {\n            var interval_1 = setHarmonicInterval(function () { return latestCallback.current(); }, delay);\n            return function () { return clearHarmonicInterval(interval_1); };\n        }\n        return undefined;\n    }, [delay]);\n};\nexport default useHarmonicIntervalFn;\n", "import * as React from 'react';\nimport { noop } from './misc/util';\nvar useState = React.useState;\nvar useHover = function (element) {\n    var _a = useState(false), state = _a[0], setState = _a[1];\n    var onMouseEnter = function (originalOnMouseEnter) { return function (event) {\n        (originalOnMouseEnter || noop)(event);\n        setState(true);\n    }; };\n    var onMouseLeave = function (originalOnMouseLeave) { return function (event) {\n        (originalOnMouseLeave || noop)(event);\n        setState(false);\n    }; };\n    if (typeof element === 'function') {\n        element = element(state);\n    }\n    var el = React.cloneElement(element, {\n        onMouseEnter: onMouseEnter(element.props.onMouseEnter),\n        onMouseLeave: onMouseLeave(element.props.onMouseLeave),\n    });\n    return [el, state];\n};\nexport default useHover;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\n// kudos: https://usehooks.com/\nvar useHoverDirty = function (ref, enabled) {\n    if (enabled === void 0) { enabled = true; }\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.current === 'undefined') {\n            console.error('useHoverDirty expects a single ref argument.');\n        }\n    }\n    var _a = useState(false), value = _a[0], setValue = _a[1];\n    useEffect(function () {\n        var onMouseOver = function () { return setValue(true); };\n        var onMouseOut = function () { return setValue(false); };\n        if (enabled && ref && ref.current) {\n            on(ref.current, 'mouseover', onMouseOver);\n            on(ref.current, 'mouseout', onMouseOut);\n        }\n        // fixes react-hooks/exhaustive-deps warning about stale ref elements\n        var current = ref.current;\n        return function () {\n            if (enabled && current) {\n                off(current, 'mouseover', onMouseOver);\n                off(current, 'mouseout', onMouseOut);\n            }\n        };\n    }, [enabled, ref]);\n    return value;\n};\nexport default useHoverDirty;\n", "import { useEffect, useState } from 'react';\nimport { throttle } from 'throttle-debounce';\nimport { off, on } from './misc/util';\nvar defaultEvents = ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel'];\nvar oneMinute = 60e3;\nvar useIdle = function (ms, initialState, events) {\n    if (ms === void 0) { ms = oneMinute; }\n    if (initialState === void 0) { initialState = false; }\n    if (events === void 0) { events = defaultEvents; }\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var timeout;\n        var localState = state;\n        var set = function (newState) {\n            if (mounted) {\n                localState = newState;\n                setState(newState);\n            }\n        };\n        var onEvent = throttle(50, function () {\n            if (localState) {\n                set(false);\n            }\n            clearTimeout(timeout);\n            timeout = setTimeout(function () { return set(true); }, ms);\n        });\n        var onVisibility = function () {\n            if (!document.hidden) {\n                onEvent();\n            }\n        };\n        for (var i = 0; i < events.length; i++) {\n            on(window, events[i], onEvent);\n        }\n        on(document, 'visibilitychange', onVisibility);\n        timeout = setTimeout(function () { return set(true); }, ms);\n        return function () {\n            mounted = false;\n            for (var i = 0; i < events.length; i++) {\n                off(window, events[i], onEvent);\n            }\n            off(document, 'visibilitychange', onVisibility);\n        };\n    }, [ms, events]);\n    return state;\n};\nexport default useIdle;\n", "import { useEffect, useState } from 'react';\nvar useIntersection = function (ref, options) {\n    var _a = useState(null), intersectionObserverEntry = _a[0], setIntersectionObserverEntry = _a[1];\n    useEffect(function () {\n        if (ref.current && typeof IntersectionObserver === 'function') {\n            var handler = function (entries) {\n                setIntersectionObserverEntry(entries[0]);\n            };\n            var observer_1 = new IntersectionObserver(handler, options);\n            observer_1.observe(ref.current);\n            return function () {\n                setIntersectionObserverEntry(null);\n                observer_1.disconnect();\n            };\n        }\n        return function () { };\n    }, [ref.current, options.threshold, options.root, options.rootMargin]);\n    return intersectionObserverEntry;\n};\nexport default useIntersection;\n", "import { useEffect, useRef } from 'react';\nvar useInterval = function (callback, delay) {\n    var savedCallback = useRef(function () { });\n    useEffect(function () {\n        savedCallback.current = callback;\n    });\n    useEffect(function () {\n        if (delay !== null) {\n            var interval_1 = setInterval(function () { return savedCallback.current(); }, delay || 0);\n            return function () { return clearInterval(interval_1); };\n        }\n        return undefined;\n    }, [delay]);\n};\nexport default useInterval;\n", "import { useMemo } from 'react';\nimport useEvent from './useEvent';\nimport { noop } from './misc/util';\nvar createKeyPredicate = function (keyFilter) {\n    return typeof keyFilter === 'function'\n        ? keyFilter\n        : typeof keyFilter === 'string'\n            ? function (event) { return event.key === keyFilter; }\n            : keyFilter\n                ? function () { return true; }\n                : function () { return false; };\n};\nvar useKey = function (key, fn, opts, deps) {\n    if (fn === void 0) { fn = noop; }\n    if (opts === void 0) { opts = {}; }\n    if (deps === void 0) { deps = [key]; }\n    var _a = opts.event, event = _a === void 0 ? 'keydown' : _a, target = opts.target, options = opts.options;\n    var useMemoHandler = useMemo(function () {\n        var predicate = createKeyPredicate(key);\n        var handler = function (handlerEvent) {\n            if (predicate(handlerEvent)) {\n                return fn(handlerEvent);\n            }\n        };\n        return handler;\n    }, deps);\n    useEvent(event, useMemoHandler, target, options);\n};\nexport default useKey;\n", "import { useEffect, useMemo, useState } from 'react';\nimport { isBrowser, off, on } from '../misc/util';\nvar createBreakpoint = function (breakpoints) {\n    if (breakpoints === void 0) { breakpoints = { laptopL: 1440, laptop: 1024, tablet: 768 }; }\n    return function () {\n        var _a = useState(isBrowser ? window.innerWidth : 0), screen = _a[0], setScreen = _a[1];\n        useEffect(function () {\n            var setSideScreen = function () {\n                setScreen(window.innerWidth);\n            };\n            setSideScreen();\n            on(window, 'resize', setSideScreen);\n            return function () {\n                off(window, 'resize', setSideScreen);\n            };\n        });\n        var sortedBreakpoints = useMemo(function () { return Object.entries(breakpoints).sort(function (a, b) { return (a[1] >= b[1] ? 1 : -1); }); }, [breakpoints]);\n        var result = sortedBreakpoints.reduce(function (acc, _a) {\n            var name = _a[0], width = _a[1];\n            if (screen >= width) {\n                return name;\n            }\n            else {\n                return acc;\n            }\n        }, sortedBreakpoints[0][0]);\n        return result;\n    };\n};\nexport default createBreakpoint;\n", "import { useState } from 'react';\nimport useKey from './useKey';\nvar useKeyPress = function (keyFilter) {\n    var _a = useState([false, null]), state = _a[0], set = _a[1];\n    useKey(keyFilter, function (event) { return set([true, event]); }, { event: 'keydown' }, [state]);\n    useKey(keyFilter, function (event) { return set([false, event]); }, { event: 'keyup' }, [state]);\n    return state;\n};\nexport default useKeyPress;\n", "import { useRef } from 'react';\nvar useLatest = function (value) {\n    var ref = useRef(value);\n    ref.current = value;\n    return ref;\n};\nexport default useLatest;\n", "import { useEffect } from 'react';\nvar useLifecycles = function (mount, unmount) {\n    useEffect(function () {\n        if (mount) {\n            mount();\n        }\n        return function () {\n            if (unmount) {\n                unmount();\n            }\n        };\n    }, []);\n};\nexport default useLifecycles;\n", "import { useMemo, useRef } from 'react';\nimport useUpdate from './useUpdate';\nimport { resolveHookState } from './misc/hookState';\nfunction useList(initialList) {\n    if (initialList === void 0) { initialList = []; }\n    var list = useRef(resolveHookState(initialList));\n    var update = useUpdate();\n    var actions = useMemo(function () {\n        var a = {\n            set: function (newList) {\n                list.current = resolveHookState(newList, list.current);\n                update();\n            },\n            push: function () {\n                var items = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    items[_i] = arguments[_i];\n                }\n                items.length && actions.set(function (curr) { return curr.concat(items); });\n            },\n            updateAt: function (index, item) {\n                actions.set(function (curr) {\n                    var arr = curr.slice();\n                    arr[index] = item;\n                    return arr;\n                });\n            },\n            insertAt: function (index, item) {\n                actions.set(function (curr) {\n                    var arr = curr.slice();\n                    index > arr.length ? (arr[index] = item) : arr.splice(index, 0, item);\n                    return arr;\n                });\n            },\n            update: function (predicate, newItem) {\n                actions.set(function (curr) { return curr.map(function (item) { return (predicate(item, newItem) ? newItem : item); }); });\n            },\n            updateFirst: function (predicate, newItem) {\n                var index = list.current.findIndex(function (item) { return predicate(item, newItem); });\n                index >= 0 && actions.updateAt(index, newItem);\n            },\n            upsert: function (predicate, newItem) {\n                var index = list.current.findIndex(function (item) { return predicate(item, newItem); });\n                index >= 0 ? actions.updateAt(index, newItem) : actions.push(newItem);\n            },\n            sort: function (compareFn) {\n                actions.set(function (curr) { return curr.slice().sort(compareFn); });\n            },\n            filter: function (callbackFn, thisArg) {\n                actions.set(function (curr) { return curr.slice().filter(callbackFn, thisArg); });\n            },\n            removeAt: function (index) {\n                actions.set(function (curr) {\n                    var arr = curr.slice();\n                    arr.splice(index, 1);\n                    return arr;\n                });\n            },\n            clear: function () {\n                actions.set([]);\n            },\n            reset: function () {\n                actions.set(resolveHookState(initialList).slice());\n            },\n        };\n        /**\n         * @deprecated Use removeAt method instead\n         */\n        a.remove = a.removeAt;\n        return a;\n    }, []);\n    return [list.current, actions];\n}\nexport default useList;\n", "import { useCallback, useState, useRef, useLayoutEffect } from 'react';\nimport { isBrowser, noop } from './misc/util';\nvar useLocalStorage = function (key, initialValue, options) {\n    if (!isBrowser) {\n        return [initialValue, noop, noop];\n    }\n    if (!key) {\n        throw new Error('useLocalStorage key may not be falsy');\n    }\n    var deserializer = options\n        ? options.raw\n            ? function (value) { return value; }\n            : options.deserializer\n        : JSON.parse;\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var initializer = useRef(function (key) {\n        try {\n            var serializer = options ? (options.raw ? String : options.serializer) : JSON.stringify;\n            var localStorageValue = localStorage.getItem(key);\n            if (localStorageValue !== null) {\n                return deserializer(localStorageValue);\n            }\n            else {\n                initialValue && localStorage.setItem(key, serializer(initialValue));\n                return initialValue;\n            }\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw. JSON.parse and JSON.stringify\n            // can throw, too.\n            return initialValue;\n        }\n    });\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var _a = useState(function () { return initializer.current(key); }), state = _a[0], setState = _a[1];\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useLayoutEffect(function () { return setState(initializer.current(key)); }, [key]);\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var set = useCallback(function (valOrFunc) {\n        try {\n            var newState = typeof valOrFunc === 'function' ? valOrFunc(state) : valOrFunc;\n            if (typeof newState === 'undefined')\n                return;\n            var value = void 0;\n            if (options)\n                if (options.raw)\n                    if (typeof newState === 'string')\n                        value = newState;\n                    else\n                        value = JSON.stringify(newState);\n                else if (options.serializer)\n                    value = options.serializer(newState);\n                else\n                    value = JSON.stringify(newState);\n            else\n                value = JSON.stringify(newState);\n            localStorage.setItem(key, value);\n            setState(deserializer(value));\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw. Also JSON.stringify can throw.\n        }\n    }, [key, setState]);\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var remove = useCallback(function () {\n        try {\n            localStorage.removeItem(key);\n            setState(undefined);\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw.\n        }\n    }, [key, setState]);\n    return [state, set, remove];\n};\nexport default useLocalStorage;\n", "import { useEffect, useState } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar patchHistoryMethod = function (method) {\n    var history = window.history;\n    var original = history[method];\n    history[method] = function (state) {\n        var result = original.apply(this, arguments);\n        var event = new Event(method.toLowerCase());\n        event.state = state;\n        window.dispatchEvent(event);\n        return result;\n    };\n};\nif (isBrowser) {\n    patchHistoryMethod('pushState');\n    patchHistoryMethod('replaceState');\n}\nvar useLocationServer = function () { return ({\n    trigger: 'load',\n    length: 1,\n}); };\nvar buildState = function (trigger) {\n    var _a = window.history, state = _a.state, length = _a.length;\n    var _b = window.location, hash = _b.hash, host = _b.host, hostname = _b.hostname, href = _b.href, origin = _b.origin, pathname = _b.pathname, port = _b.port, protocol = _b.protocol, search = _b.search;\n    return {\n        trigger: trigger,\n        state: state,\n        length: length,\n        hash: hash,\n        host: host,\n        hostname: hostname,\n        href: href,\n        origin: origin,\n        pathname: pathname,\n        port: port,\n        protocol: protocol,\n        search: search,\n    };\n};\nvar useLocationBrowser = function () {\n    var _a = useState(buildState('load')), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var onPopstate = function () { return setState(buildState('popstate')); };\n        var onPushstate = function () { return setState(buildState('pushstate')); };\n        var onReplacestate = function () { return setState(buildState('replacestate')); };\n        on(window, 'popstate', onPopstate);\n        on(window, 'pushstate', onPushstate);\n        on(window, 'replacestate', onReplacestate);\n        return function () {\n            off(window, 'popstate', onPopstate);\n            off(window, 'pushstate', onPushstate);\n            off(window, 'replacestate', onReplacestate);\n        };\n    }, []);\n    return state;\n};\nvar hasEventConstructor = typeof Event === 'function';\nexport default isBrowser && hasEventConstructor ? useLocationBrowser : useLocationServer;\n", "import { useEffect, useRef } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nexport function getClosestBody(el) {\n    if (!el) {\n        return null;\n    }\n    else if (el.tagName === 'BODY') {\n        return el;\n    }\n    else if (el.tagName === 'IFRAME') {\n        var document_1 = el.contentDocument;\n        return document_1 ? document_1.body : null;\n    }\n    else if (!el.offsetParent) {\n        return null;\n    }\n    return getClosestBody(el.offsetParent);\n}\nfunction preventDefault(rawEvent) {\n    var e = rawEvent || window.event;\n    // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n    if (e.touches.length > 1)\n        return true;\n    if (e.preventDefault)\n        e.preventDefault();\n    return false;\n}\nvar isIosDevice = isBrowser &&\n    window.navigator &&\n    window.navigator.platform &&\n    /iP(ad|hone|od)/.test(window.navigator.platform);\nvar bodies = new Map();\nvar doc = typeof document === 'object' ? document : undefined;\nvar documentListenerAdded = false;\nexport default !doc\n    ? function useLockBodyMock(_locked, _elementRef) {\n        if (_locked === void 0) { _locked = true; }\n    }\n    : function useLockBody(locked, elementRef) {\n        if (locked === void 0) { locked = true; }\n        var bodyRef = useRef(doc.body);\n        elementRef = elementRef || bodyRef;\n        var lock = function (body) {\n            var bodyInfo = bodies.get(body);\n            if (!bodyInfo) {\n                bodies.set(body, { counter: 1, initialOverflow: body.style.overflow });\n                if (isIosDevice) {\n                    if (!documentListenerAdded) {\n                        on(document, 'touchmove', preventDefault, { passive: false });\n                        documentListenerAdded = true;\n                    }\n                }\n                else {\n                    body.style.overflow = 'hidden';\n                }\n            }\n            else {\n                bodies.set(body, {\n                    counter: bodyInfo.counter + 1,\n                    initialOverflow: bodyInfo.initialOverflow,\n                });\n            }\n        };\n        var unlock = function (body) {\n            var bodyInfo = bodies.get(body);\n            if (bodyInfo) {\n                if (bodyInfo.counter === 1) {\n                    bodies.delete(body);\n                    if (isIosDevice) {\n                        body.ontouchmove = null;\n                        if (documentListenerAdded) {\n                            off(document, 'touchmove', preventDefault);\n                            documentListenerAdded = false;\n                        }\n                    }\n                    else {\n                        body.style.overflow = bodyInfo.initialOverflow;\n                    }\n                }\n                else {\n                    bodies.set(body, {\n                        counter: bodyInfo.counter - 1,\n                        initialOverflow: bodyInfo.initialOverflow,\n                    });\n                }\n            }\n        };\n        useEffect(function () {\n            var body = getClosestBody(elementRef.current);\n            if (!body) {\n                return;\n            }\n            if (locked) {\n                lock(body);\n            }\n            else {\n                unlock(body);\n            }\n        }, [locked, elementRef.current]);\n        // clean up, on un-mount\n        useEffect(function () {\n            var body = getClosestBody(elementRef.current);\n            if (!body) {\n                return;\n            }\n            return function () {\n                unlock(body);\n            };\n        }, []);\n    };\n", "import { __spreadArrays } from \"tslib\";\nimport useEffectOnce from './useEffectOnce';\nimport useUpdateEffect from './useUpdateEffect';\nvar useLogger = function (componentName) {\n    var rest = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        rest[_i - 1] = arguments[_i];\n    }\n    useEffectOnce(function () {\n        console.log.apply(console, __spreadArrays([componentName + \" mounted\"], rest));\n        return function () { return console.log(componentName + \" unmounted\"); };\n    });\n    useUpdateEffect(function () {\n        console.log.apply(console, __spreadArrays([componentName + \" updated\"], rest));\n    });\n};\nexport default useLogger;\n", "import { useCallback, useRef } from 'react';\nimport { off, on } from './misc/util';\nvar isTouchEvent = function (ev) {\n    return 'touches' in ev;\n};\nvar preventDefault = function (ev) {\n    if (!isTouchEvent(ev))\n        return;\n    if (ev.touches.length < 2 && ev.preventDefault) {\n        ev.preventDefault();\n    }\n};\nvar useLongPress = function (callback, _a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.isPreventDefault, isPreventDefault = _c === void 0 ? true : _c, _d = _b.delay, delay = _d === void 0 ? 300 : _d;\n    var timeout = useRef();\n    var target = useRef();\n    var start = useCallback(function (event) {\n        // prevent ghost click on mobile devices\n        if (isPreventDefault && event.target) {\n            on(event.target, 'touchend', preventDefault, { passive: false });\n            target.current = event.target;\n        }\n        timeout.current = setTimeout(function () { return callback(event); }, delay);\n    }, [callback, delay, isPreventDefault]);\n    var clear = useCallback(function () {\n        // clearTimeout and removeEventListener\n        timeout.current && clearTimeout(timeout.current);\n        if (isPreventDefault && target.current) {\n            off(target.current, 'touchend', preventDefault);\n        }\n    }, [isPreventDefault]);\n    return {\n        onMouseDown: function (e) { return start(e); },\n        onTouchStart: function (e) { return start(e); },\n        onMouseUp: clear,\n        onMouseLeave: clear,\n        onTouchEnd: clear,\n    };\n};\nexport default useLongPress;\n", "import { __assign, __rest } from \"tslib\";\nimport { useCallback, useMemo, useState } from 'react';\nvar useMap = function (initialMap) {\n    if (initialMap === void 0) { initialMap = {}; }\n    var _a = useState(initialMap), map = _a[0], set = _a[1];\n    var stableActions = useMemo(function () { return ({\n        set: function (key, entry) {\n            set(function (prevMap) {\n                var _a;\n                return (__assign(__assign({}, prevMap), (_a = {}, _a[key] = entry, _a)));\n            });\n        },\n        setAll: function (newMap) {\n            set(newMap);\n        },\n        remove: function (key) {\n            set(function (prevMap) {\n                var _a = prevMap, _b = key, omit = _a[_b], rest = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n                return rest;\n            });\n        },\n        reset: function () { return set(initialMap); },\n    }); }, [set]);\n    var utils = __assign({ get: useCallback(function (key) { return map[key]; }, [map]) }, stableActions);\n    return [map, utils];\n};\nexport default useMap;\n", "import { useEffect, useState } from 'react';\nimport { isBrowser } from './misc/util';\nvar getInitialState = function (query, defaultState) {\n    // Prevent a React hydration mismatch when a default value is provided by not defaulting to window.matchMedia(query).matches.\n    if (defaultState !== undefined) {\n        return defaultState;\n    }\n    if (isBrowser) {\n        return window.matchMedia(query).matches;\n    }\n    // A default value has not been provided, and you are rendering on the server, warn of a possible hydration mismatch when defaulting to false.\n    if (process.env.NODE_ENV !== 'production') {\n        console.warn('`useMedia` When server side rendering, defaultState should be defined to prevent a hydration mismatches.');\n    }\n    return false;\n};\nvar useMedia = function (query, defaultState) {\n    var _a = useState(getInitialState(query, defaultState)), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var mql = window.matchMedia(query);\n        var onChange = function () {\n            if (!mounted) {\n                return;\n            }\n            setState(!!mql.matches);\n        };\n        mql.addEventListener('change', onChange);\n        setState(mql.matches);\n        return function () {\n            mounted = false;\n            mql.removeEventListener('change', onChange);\n        };\n    }, [query]);\n    return state;\n};\nexport default useMedia;\n", "import { useEffect, useState } from 'react';\nimport { isNavigator, noop, off, on } from './misc/util';\nvar useMediaDevices = function () {\n    var _a = useState({}), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var onChange = function () {\n            navigator.mediaDevices\n                .enumerateDevices()\n                .then(function (devices) {\n                if (mounted) {\n                    setState({\n                        devices: devices.map(function (_a) {\n                            var deviceId = _a.deviceId, groupId = _a.groupId, kind = _a.kind, label = _a.label;\n                            return ({\n                                deviceId: deviceId,\n                                groupId: groupId,\n                                kind: kind,\n                                label: label,\n                            });\n                        }),\n                    });\n                }\n            })\n                .catch(noop);\n        };\n        on(navigator.mediaDevices, 'devicechange', onChange);\n        onChange();\n        return function () {\n            mounted = false;\n            off(navigator.mediaDevices, 'devicechange', onChange);\n        };\n    }, []);\n    return state;\n};\nvar useMediaDevicesMock = function () { return ({}); };\nexport default isNavigator && !!navigator.mediaDevices ? useMediaDevices : useMediaDevicesMock;\n", "import { useCallback, useRef, useState } from 'react';\nexport function useMediatedState(mediator, initialState) {\n    var mediatorFn = useRef(mediator);\n    var _a = useState(initialState), state = _a[0], setMediatedState = _a[1];\n    var setState = useCallback(function (newState) {\n        if (mediatorFn.current.length === 2) {\n            mediatorFn.current(newState, setMediatedState);\n        }\n        else {\n            setMediatedState(mediatorFn.current(newState));\n        }\n    }, [state]);\n    return [state, setState];\n}\n", "import { useMemo, useReducer } from 'react';\nvar useMethods = function (createMethods, initialState) {\n    var reducer = useMemo(function () { return function (reducerState, action) {\n        var _a;\n        return (_a = createMethods(reducerState))[action.type].apply(_a, action.payload);\n    }; }, [createMethods]);\n    var _a = useReducer(reducer, initialState), state = _a[0], dispatch = _a[1];\n    var wrappedMethods = useMemo(function () {\n        var actionTypes = Object.keys(createMethods(initialState));\n        return actionTypes.reduce(function (acc, type) {\n            acc[type] = function () {\n                var payload = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    payload[_i] = arguments[_i];\n                }\n                return dispatch({ type: type, payload: payload });\n            };\n            return acc;\n        }, {});\n    }, [createMethods, initialState]);\n    return [state, wrappedMethods];\n};\nexport default useMethods;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nvar defaultState = {\n    acceleration: {\n        x: null,\n        y: null,\n        z: null,\n    },\n    accelerationIncludingGravity: {\n        x: null,\n        y: null,\n        z: null,\n    },\n    rotationRate: {\n        alpha: null,\n        beta: null,\n        gamma: null,\n    },\n    interval: 16,\n};\nvar useMotion = function (initialState) {\n    if (initialState === void 0) { initialState = defaultState; }\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handler = function (event) {\n            var acceleration = event.acceleration, accelerationIncludingGravity = event.accelerationIncludingGravity, rotationRate = event.rotationRate, interval = event.interval;\n            setState({\n                acceleration: {\n                    x: acceleration.x,\n                    y: acceleration.y,\n                    z: acceleration.z,\n                },\n                accelerationIncludingGravity: {\n                    x: accelerationIncludingGravity.x,\n                    y: accelerationIncludingGravity.y,\n                    z: accelerationIncludingGravity.z,\n                },\n                rotationRate: {\n                    alpha: rotationRate.alpha,\n                    beta: rotationRate.beta,\n                    gamma: rotationRate.gamma,\n                },\n                interval: interval,\n            });\n        };\n        on(window, 'devicemotion', handler);\n        return function () {\n            off(window, 'devicemotion', handler);\n        };\n    }, []);\n    return state;\n};\nexport default useMotion;\n", "import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { off, on } from './misc/util';\nvar useMouse = function (ref) {\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.current === 'undefined') {\n            console.error('useMouse expects a single ref argument.');\n        }\n    }\n    var _a = useRafState({\n        docX: 0,\n        docY: 0,\n        posX: 0,\n        posY: 0,\n        elX: 0,\n        elY: 0,\n        elH: 0,\n        elW: 0,\n    }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var moveHandler = function (event) {\n            if (ref && ref.current) {\n                var _a = ref.current.getBoundingClientRect(), left = _a.left, top_1 = _a.top, elW = _a.width, elH = _a.height;\n                var posX = left + window.pageXOffset;\n                var posY = top_1 + window.pageYOffset;\n                var elX = event.pageX - posX;\n                var elY = event.pageY - posY;\n                setState({\n                    docX: event.pageX,\n                    docY: event.pageY,\n                    posX: posX,\n                    posY: posY,\n                    elX: elX,\n                    elY: elY,\n                    elH: elH,\n                    elW: elW,\n                });\n            }\n        };\n        on(document, 'mousemove', moveHandler);\n        return function () {\n            off(document, 'mousemove', moveHandler);\n        };\n    }, [ref]);\n    return state;\n};\nexport default useMouse;\n", "import { useCallback, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useRafState = function (initialState) {\n    var frame = useRef(0);\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    var setRafState = useCallback(function (value) {\n        cancelAnimationFrame(frame.current);\n        frame.current = requestAnimationFrame(function () {\n            setState(value);\n        });\n    }, []);\n    useUnmount(function () {\n        cancelAnimationFrame(frame.current);\n    });\n    return [state, setRafState];\n};\nexport default useRafState;\n", "import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n    var fnRef = useRef(fn);\n    // update the ref each render so if it change the newest callback will be invoked\n    fnRef.current = fn;\n    useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nexport default (function () {\n    var _a = useState(0), mouseWheelScrolled = _a[0], setMouseWheelScrolled = _a[1];\n    useEffect(function () {\n        var updateScroll = function (e) {\n            setMouseWheelScrolled(e.deltaY + mouseWheelScrolled);\n        };\n        on(window, 'wheel', updateScroll, false);\n        return function () { return off(window, 'wheel', updateScroll); };\n    });\n    return mouseWheelScrolled;\n});\n", "import { useEffect, useState } from 'react';\nimport { isNavigator, off, on } from './misc/util';\nvar nav = isNavigator ? navigator : undefined;\nvar conn = nav && (nav.connection || nav.mozConnection || nav.webkitConnection);\nfunction getConnectionState(previousState) {\n    var online = nav === null || nav === void 0 ? void 0 : nav.onLine;\n    var previousOnline = previousState === null || previousState === void 0 ? void 0 : previousState.online;\n    return {\n        online: online,\n        previous: previousOnline,\n        since: online !== previousOnline ? new Date() : previousState === null || previousState === void 0 ? void 0 : previousState.since,\n        downlink: conn === null || conn === void 0 ? void 0 : conn.downlink,\n        downlinkMax: conn === null || conn === void 0 ? void 0 : conn.downlinkMax,\n        effectiveType: conn === null || conn === void 0 ? void 0 : conn.effectiveType,\n        rtt: conn === null || conn === void 0 ? void 0 : conn.rtt,\n        saveData: conn === null || conn === void 0 ? void 0 : conn.saveData,\n        type: conn === null || conn === void 0 ? void 0 : conn.type,\n    };\n}\nexport default function useNetworkState(initialState) {\n    var _a = useState(initialState !== null && initialState !== void 0 ? initialState : getConnectionState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handleStateChange = function () {\n            setState(getConnectionState);\n        };\n        on(window, 'online', handleStateChange, { passive: true });\n        on(window, 'offline', handleStateChange, { passive: true });\n        if (conn) {\n            on(conn, 'change', handleStateChange, { passive: true });\n        }\n        return function () {\n            off(window, 'online', handleStateChange);\n            off(window, 'offline', handleStateChange);\n            if (conn) {\n                off(conn, 'change', handleStateChange);\n            }\n        };\n    }, []);\n    return state;\n}\n", "import { useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nfunction useObservable(observable$, initialValue) {\n    var _a = useState(initialValue), value = _a[0], update = _a[1];\n    useIsomorphicLayoutEffect(function () {\n        var s = observable$.subscribe(update);\n        return function () { return s.unsubscribe(); };\n    }, [observable$]);\n    return value;\n}\nexport default useObservable;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nvar defaultState = {\n    angle: 0,\n    type: 'landscape-primary',\n};\nvar useOrientation = function (initialState) {\n    if (initialState === void 0) { initialState = defaultState; }\n    var _a = useState(initialState), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var screen = window.screen;\n        var mounted = true;\n        var onChange = function () {\n            if (mounted) {\n                var orientation_1 = screen.orientation;\n                if (orientation_1) {\n                    var angle = orientation_1.angle, type = orientation_1.type;\n                    setState({ angle: angle, type: type });\n                }\n                else if (window.orientation !== undefined) {\n                    setState({\n                        angle: typeof window.orientation === 'number' ? window.orientation : 0,\n                        type: '',\n                    });\n                }\n                else {\n                    setState(initialState);\n                }\n            }\n        };\n        on(window, 'orientationchange', onChange);\n        onChange();\n        return function () {\n            mounted = false;\n            off(window, 'orientationchange', onChange);\n        };\n    }, []);\n    return state;\n};\nexport default useOrientation;\n", "import { useEffect } from 'react';\nimport { off, on } from './misc/util';\nvar usePageLeave = function (onPageLeave, args) {\n    if (args === void 0) { args = []; }\n    useEffect(function () {\n        if (!onPageLeave) {\n            return;\n        }\n        var handler = function (event) {\n            event = event ? event : window.event;\n            var from = event.relatedTarget || event.toElement;\n            if (!from || from.nodeName === 'HTML') {\n                onPageLeave();\n            }\n        };\n        on(document, 'mouseout', handler);\n        return function () {\n            off(document, 'mouseout', handler);\n        };\n    }, args);\n};\nexport default usePageLeave;\n", "import { useEffect, useState } from 'react';\nimport { noop, off, on } from './misc/util';\n// const usePermission = <T extends PermissionDescriptor>(permissionDesc: T): IState => {\nvar usePermission = function (permissionDesc) {\n    var _a = useState(''), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var permissionStatus = null;\n        var onChange = function () {\n            if (!mounted) {\n                return;\n            }\n            setState(function () { var _a; return (_a = permissionStatus === null || permissionStatus === void 0 ? void 0 : permissionStatus.state) !== null && _a !== void 0 ? _a : ''; });\n        };\n        navigator.permissions\n            .query(permissionDesc)\n            .then(function (status) {\n            permissionStatus = status;\n            on(permissionStatus, 'change', onChange);\n            onChange();\n        })\n            .catch(noop);\n        return function () {\n            permissionStatus && off(permissionStatus, 'change', onChange);\n            mounted = false;\n            permissionStatus = null;\n        };\n    }, [permissionDesc]);\n    return state;\n};\nexport default usePermission;\n", "import { useEffect, useRef } from 'react';\nexport default function usePrevious(state) {\n    var ref = useRef();\n    useEffect(function () {\n        ref.current = state;\n    });\n    return ref.current;\n}\n", "import { useRef } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nvar strictEquals = function (prev, next) { return prev === next; };\nexport default function usePreviousDistinct(value, compare) {\n    if (compare === void 0) { compare = strictEquals; }\n    var prevRef = useRef();\n    var curRef = useRef(value);\n    var isFirstMount = useFirstMountState();\n    if (!isFirstMount && !compare(curRef.current, value)) {\n        prevRef.current = curRef.current;\n        curRef.current = value;\n    }\n    return prevRef.current;\n}\n", "import { useCallback } from 'react';\nimport useMountedState from './useMountedState';\nvar usePromise = function () {\n    var isMounted = useMountedState();\n    return useCallback(function (promise) {\n        return new Promise(function (resolve, reject) {\n            var onValue = function (value) {\n                isMounted() && resolve(value);\n            };\n            var onError = function (error) {\n                isMounted() && reject(error);\n            };\n            promise.then(onValue, onError);\n        });\n    }, []);\n};\nexport default usePromise;\n", "import { __spreadArrays } from \"tslib\";\nimport { useState } from 'react';\nvar useQueue = function (initialValue) {\n    if (initialValue === void 0) { initialValue = []; }\n    var _a = useState(initialValue), state = _a[0], set = _a[1];\n    return {\n        add: function (value) {\n            set(function (queue) { return __spreadArrays(queue, [value]); });\n        },\n        remove: function () {\n            var result;\n            set(function (_a) {\n                var first = _a[0], rest = _a.slice(1);\n                result = first;\n                return rest;\n            });\n            return result;\n        },\n        get first() {\n            return state[0];\n        },\n        get last() {\n            return state[state.length - 1];\n        },\n        get size() {\n            return state.length;\n        },\n    };\n};\nexport default useQueue;\n", "import { useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nvar useRaf = function (ms, delay) {\n    if (ms === void 0) { ms = 1e12; }\n    if (delay === void 0) { delay = 0; }\n    var _a = useState(0), elapsed = _a[0], set = _a[1];\n    useIsomorphicLayoutEffect(function () {\n        var raf;\n        var timerStop;\n        var start;\n        var onFrame = function () {\n            var time = Math.min(1, (Date.now() - start) / ms);\n            set(time);\n            loop();\n        };\n        var loop = function () {\n            raf = requestAnimationFrame(onFrame);\n        };\n        var onStart = function () {\n            timerStop = setTimeout(function () {\n                cancelAnimationFrame(raf);\n                set(1);\n            }, ms);\n            start = Date.now();\n            loop();\n        };\n        var timerDelay = setTimeout(onStart, delay);\n        return function () {\n            clearTimeout(timerStop);\n            clearTimeout(timerDelay);\n            cancelAnimationFrame(raf);\n        };\n    }, [ms, delay]);\n    return elapsed;\n};\nexport default useRaf;\n", "import { useCallback, useEffect, useMemo, useRef } from 'react';\nexport default function useRafLoop(callback, initiallyActive) {\n    if (initiallyActive === void 0) { initiallyActive = true; }\n    var raf = useRef(null);\n    var rafActivity = useRef(false);\n    var rafCallback = useRef(callback);\n    rafCallback.current = callback;\n    var step = useCallback(function (time) {\n        if (rafActivity.current) {\n            rafCallback.current(time);\n            raf.current = requestAnimationFrame(step);\n        }\n    }, []);\n    var result = useMemo(function () {\n        return [\n            function () {\n                // stop\n                if (rafActivity.current) {\n                    rafActivity.current = false;\n                    raf.current && cancelAnimationFrame(raf.current);\n                }\n            },\n            function () {\n                // start\n                if (!rafActivity.current) {\n                    rafActivity.current = true;\n                    raf.current = requestAnimationFrame(step);\n                }\n            },\n            function () { return rafActivity.current; },\n        ];\n    }, []);\n    useEffect(function () {\n        if (initiallyActive) {\n            result[1]();\n        }\n        return result[0];\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    return result;\n}\n", "import { useEffect, useState } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar getValue = function (search, param) { return new URLSearchParams(search).get(param); };\nvar useSearchParam = function (param) {\n    var location = window.location;\n    var _a = useState(function () { return getValue(location.search, param); }), value = _a[0], setValue = _a[1];\n    useEffect(function () {\n        var onChange = function () {\n            setValue(getValue(location.search, param));\n        };\n        on(window, 'popstate', onChange);\n        on(window, 'pushstate', onChange);\n        on(window, 'replacestate', onChange);\n        return function () {\n            off(window, 'popstate', onChange);\n            off(window, 'pushstate', onChange);\n            off(window, 'replacestate', onChange);\n        };\n    }, []);\n    return value;\n};\nvar useSearchParamServer = function () { return null; };\nexport default isBrowser ? useSearchParam : useSearchParamServer;\n", "import { __assign, __rest } from \"tslib\";\nimport { cloneElement, useEffect, useRef, useState } from 'react';\nimport { render } from 'react-universal-interface';\nimport useLatest from './useLatest';\nimport { noop, off, on } from './misc/util';\nvar useScratch = function (params) {\n    if (params === void 0) { params = {}; }\n    var disabled = params.disabled;\n    var paramsRef = useLatest(params);\n    var _a = useState({ isScratching: false }), state = _a[0], setState = _a[1];\n    var refState = useRef(state);\n    var refScratching = useRef(false);\n    var refAnimationFrame = useRef(null);\n    var _b = useState(null), el = _b[0], setEl = _b[1];\n    useEffect(function () {\n        if (disabled)\n            return;\n        if (!el)\n            return;\n        var onMoveEvent = function (docX, docY) {\n            cancelAnimationFrame(refAnimationFrame.current);\n            refAnimationFrame.current = requestAnimationFrame(function () {\n                var _a = el.getBoundingClientRect(), left = _a.left, top = _a.top;\n                var elX = left + window.scrollX;\n                var elY = top + window.scrollY;\n                var x = docX - elX;\n                var y = docY - elY;\n                setState(function (oldState) {\n                    var newState = __assign(__assign({}, oldState), { dx: x - (oldState.x || 0), dy: y - (oldState.y || 0), end: Date.now(), isScratching: true });\n                    refState.current = newState;\n                    (paramsRef.current.onScratch || noop)(newState);\n                    return newState;\n                });\n            });\n        };\n        var onMouseMove = function (event) {\n            onMoveEvent(event.pageX, event.pageY);\n        };\n        var onTouchMove = function (event) {\n            onMoveEvent(event.changedTouches[0].pageX, event.changedTouches[0].pageY);\n        };\n        var onMouseUp;\n        var onTouchEnd;\n        var stopScratching = function () {\n            if (!refScratching.current)\n                return;\n            refScratching.current = false;\n            refState.current = __assign(__assign({}, refState.current), { isScratching: false });\n            (paramsRef.current.onScratchEnd || noop)(refState.current);\n            setState({ isScratching: false });\n            off(window, 'mousemove', onMouseMove);\n            off(window, 'touchmove', onTouchMove);\n            off(window, 'mouseup', onMouseUp);\n            off(window, 'touchend', onTouchEnd);\n        };\n        onMouseUp = stopScratching;\n        onTouchEnd = stopScratching;\n        var startScratching = function (docX, docY) {\n            if (!refScratching.current)\n                return;\n            var _a = el.getBoundingClientRect(), left = _a.left, top = _a.top;\n            var elX = left + window.scrollX;\n            var elY = top + window.scrollY;\n            var x = docX - elX;\n            var y = docY - elY;\n            var time = Date.now();\n            var newState = {\n                isScratching: true,\n                start: time,\n                end: time,\n                docX: docX,\n                docY: docY,\n                x: x,\n                y: y,\n                dx: 0,\n                dy: 0,\n                elH: el.offsetHeight,\n                elW: el.offsetWidth,\n                elX: elX,\n                elY: elY,\n            };\n            refState.current = newState;\n            (paramsRef.current.onScratchStart || noop)(newState);\n            setState(newState);\n            on(window, 'mousemove', onMouseMove);\n            on(window, 'touchmove', onTouchMove);\n            on(window, 'mouseup', onMouseUp);\n            on(window, 'touchend', onTouchEnd);\n        };\n        var onMouseDown = function (event) {\n            refScratching.current = true;\n            startScratching(event.pageX, event.pageY);\n        };\n        var onTouchStart = function (event) {\n            refScratching.current = true;\n            startScratching(event.changedTouches[0].pageX, event.changedTouches[0].pageY);\n        };\n        on(el, 'mousedown', onMouseDown);\n        on(el, 'touchstart', onTouchStart);\n        return function () {\n            off(el, 'mousedown', onMouseDown);\n            off(el, 'touchstart', onTouchStart);\n            off(window, 'mousemove', onMouseMove);\n            off(window, 'touchmove', onTouchMove);\n            off(window, 'mouseup', onMouseUp);\n            off(window, 'touchend', onTouchEnd);\n            if (refAnimationFrame.current)\n                cancelAnimationFrame(refAnimationFrame.current);\n            refAnimationFrame.current = null;\n            refScratching.current = false;\n            refState.current = { isScratching: false };\n            setState(refState.current);\n        };\n    }, [el, disabled, paramsRef]);\n    return [setEl, state];\n};\nexport var ScratchSensor = function (props) {\n    var children = props.children, params = __rest(props, [\"children\"]);\n    var _a = useScratch(params), ref = _a[0], state = _a[1];\n    var element = render(props, state);\n    return cloneElement(element, __assign(__assign({}, element.props), { ref: function (el) {\n            if (element.props.ref) {\n                if (typeof element.props.ref === 'object')\n                    element.props.ref.current = el;\n                if (typeof element.props.ref === 'function')\n                    element.props.ref(el);\n            }\n            ref(el);\n        } }));\n};\nexport default useScratch;\n", "import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { off, on } from './misc/util';\nvar useScroll = function (ref) {\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.current === 'undefined') {\n            console.error('`useScroll` expects a single ref argument.');\n        }\n    }\n    var _a = useRafState({\n        x: 0,\n        y: 0,\n    }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handler = function () {\n            if (ref.current) {\n                setState({\n                    x: ref.current.scrollLeft,\n                    y: ref.current.scrollTop,\n                });\n            }\n        };\n        if (ref.current) {\n            on(ref.current, 'scroll', handler, {\n                capture: false,\n                passive: true,\n            });\n        }\n        return function () {\n            if (ref.current) {\n                off(ref.current, 'scroll', handler);\n            }\n        };\n    }, [ref]);\n    return state;\n};\nexport default useScroll;\n", "import { useEffect, useState } from 'react';\nimport { off, on } from './misc/util';\nvar useScrolling = function (ref) {\n    var _a = useState(false), scrolling = _a[0], setScrolling = _a[1];\n    useEffect(function () {\n        if (ref.current) {\n            var scrollingTimeout_1;\n            var handleScrollEnd_1 = function () {\n                setScrolling(false);\n            };\n            var handleScroll_1 = function () {\n                setScrolling(true);\n                clearTimeout(scrollingTimeout_1);\n                scrollingTimeout_1 = setTimeout(function () { return handleScrollEnd_1(); }, 150);\n            };\n            on(ref.current, 'scroll', handleScroll_1, false);\n            return function () {\n                if (ref.current) {\n                    off(ref.current, 'scroll', handleScroll_1, false);\n                }\n            };\n        }\n        return function () { };\n    }, [ref]);\n    return scrolling;\n};\nexport default useScrolling;\n", "import { useEffect, useState } from 'react';\nimport { isBrowser } from './misc/util';\nvar useSessionStorage = function (key, initialValue, raw) {\n    if (!isBrowser) {\n        return [initialValue, function () { }];\n    }\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var _a = useState(function () {\n        try {\n            var sessionStorageValue = sessionStorage.getItem(key);\n            if (typeof sessionStorageValue !== 'string') {\n                sessionStorage.setItem(key, raw ? String(initialValue) : JSON.stringify(initialValue));\n                return initialValue;\n            }\n            else {\n                return raw ? sessionStorageValue : JSON.parse(sessionStorageValue || 'null');\n            }\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // sessionStorage can throw. JSON.parse and JSON.stringify\n            // can throw, too.\n            return initialValue;\n        }\n    }), state = _a[0], setState = _a[1];\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useEffect(function () {\n        try {\n            var serializedState = raw ? String(state) : JSON.stringify(state);\n            sessionStorage.setItem(key, serializedState);\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // sessionStorage can throw. Also JSON.stringify can throw.\n        }\n    });\n    return [state, setState];\n};\nexport default useSessionStorage;\n", "import { equal as isShallowEqual } from 'fast-shallow-equal';\nimport useCustomCompareEffect from './useCustomCompareEffect';\nvar isPrimitive = function (val) { return val !== Object(val); };\nvar shallowEqualDepsList = function (prevDeps, nextDeps) {\n    return prevDeps.every(function (dep, index) { return isShallowEqual(dep, nextDeps[index]); });\n};\nvar useShallowCompareEffect = function (effect, deps) {\n    if (process.env.NODE_ENV !== 'production') {\n        if (!(deps instanceof Array) || !deps.length) {\n            console.warn('`useShallowCompareEffect` should not be used with no dependencies. Use React.useEffect instead.');\n        }\n        if (deps.every(isPrimitive)) {\n            console.warn('`useShallowCompareEffect` should not be used with dependencies that are all primitive values. Use React.useEffect instead.');\n        }\n    }\n    useCustomCompareEffect(effect, deps, shallowEqualDepsList);\n};\nexport default useShallowCompareEffect;\n", "import { __spreadArrays } from \"tslib\";\nimport * as React from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar useState = React.useState, useEffect = React.useEffect, useRef = React.useRef;\nvar DRAF = function (callback) { return setTimeout(callback, 35); };\nvar useSize = function (element, _a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.width, width = _c === void 0 ? Infinity : _c, _d = _b.height, height = _d === void 0 ? Infinity : _d;\n    if (!isBrowser) {\n        return [\n            typeof element === 'function' ? element({ width: width, height: height }) : element,\n            { width: width, height: height },\n        ];\n    }\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var _e = useState({ width: width, height: height }), state = _e[0], setState = _e[1];\n    if (typeof element === 'function') {\n        element = element(state);\n    }\n    var style = element.props.style || {};\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    var ref = useRef(null);\n    var window = null;\n    var setSize = function () {\n        var iframe = ref.current;\n        var size = iframe\n            ? {\n                width: iframe.offsetWidth,\n                height: iframe.offsetHeight,\n            }\n            : { width: width, height: height };\n        setState(size);\n    };\n    var onWindow = function (windowToListenOn) {\n        on(windowToListenOn, 'resize', setSize);\n        DRAF(setSize);\n    };\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useEffect(function () {\n        var iframe = ref.current;\n        if (!iframe) {\n            // iframe will be undefined if component is already unmounted\n            return;\n        }\n        if (iframe.contentWindow) {\n            window = iframe.contentWindow;\n            onWindow(window);\n        }\n        else {\n            var onLoad_1 = function () {\n                on(iframe, 'load', onLoad_1);\n                window = iframe.contentWindow;\n                onWindow(window);\n            };\n            off(iframe, 'load', onLoad_1);\n        }\n        return function () {\n            if (window && window.removeEventListener) {\n                off(window, 'resize', setSize);\n            }\n        };\n    }, []);\n    style.position = 'relative';\n    var sized = React.cloneElement.apply(React, __spreadArrays([element, { style: style }], __spreadArrays([\n        React.createElement('iframe', {\n            ref: ref,\n            style: {\n                background: 'transparent',\n                border: 'none',\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n                zIndex: -1,\n            },\n        })\n    ], React.Children.toArray(element.props.children))));\n    return [sized, state];\n};\nexport default useSize;\n", "import { useEffect, useRef } from 'react';\nimport { isBrowser, noop, off, on } from './misc/util';\nimport useMountedState from './useMountedState';\nimport useSetState from './useSetState';\nvar useSlider = function (ref, options) {\n    if (options === void 0) { options = {}; }\n    var isMounted = useMountedState();\n    var isSliding = useRef(false);\n    var valueRef = useRef(0);\n    var frame = useRef(0);\n    var _a = useSetState({\n        isSliding: false,\n        value: 0,\n    }), state = _a[0], setState = _a[1];\n    valueRef.current = state.value;\n    useEffect(function () {\n        if (isBrowser) {\n            var styles = options.styles === undefined ? true : options.styles;\n            var reverse_1 = options.reverse === undefined ? false : options.reverse;\n            if (ref.current && styles) {\n                ref.current.style.userSelect = 'none';\n            }\n            var startScrubbing_1 = function () {\n                if (!isSliding.current && isMounted()) {\n                    (options.onScrubStart || noop)();\n                    isSliding.current = true;\n                    setState({ isSliding: true });\n                    bindEvents_1();\n                }\n            };\n            var stopScrubbing_1 = function () {\n                if (isSliding.current && isMounted()) {\n                    (options.onScrubStop || noop)(valueRef.current);\n                    isSliding.current = false;\n                    setState({ isSliding: false });\n                    unbindEvents_1();\n                }\n            };\n            var onMouseDown_1 = function (event) {\n                startScrubbing_1();\n                onMouseMove_1(event);\n            };\n            var onMouseMove_1 = options.vertical\n                ? function (event) { return onScrub_1(event.clientY); }\n                : function (event) { return onScrub_1(event.clientX); };\n            var onTouchStart_1 = function (event) {\n                startScrubbing_1();\n                onTouchMove_1(event);\n            };\n            var onTouchMove_1 = options.vertical\n                ? function (event) { return onScrub_1(event.changedTouches[0].clientY); }\n                : function (event) { return onScrub_1(event.changedTouches[0].clientX); };\n            var bindEvents_1 = function () {\n                on(document, 'mousemove', onMouseMove_1);\n                on(document, 'mouseup', stopScrubbing_1);\n                on(document, 'touchmove', onTouchMove_1);\n                on(document, 'touchend', stopScrubbing_1);\n            };\n            var unbindEvents_1 = function () {\n                off(document, 'mousemove', onMouseMove_1);\n                off(document, 'mouseup', stopScrubbing_1);\n                off(document, 'touchmove', onTouchMove_1);\n                off(document, 'touchend', stopScrubbing_1);\n            };\n            var onScrub_1 = function (clientXY) {\n                cancelAnimationFrame(frame.current);\n                frame.current = requestAnimationFrame(function () {\n                    if (isMounted() && ref.current) {\n                        var rect = ref.current.getBoundingClientRect();\n                        var pos = options.vertical ? rect.top : rect.left;\n                        var length_1 = options.vertical ? rect.height : rect.width;\n                        // Prevent returning 0 when element is hidden by CSS\n                        if (!length_1) {\n                            return;\n                        }\n                        var value = (clientXY - pos) / length_1;\n                        if (value > 1) {\n                            value = 1;\n                        }\n                        else if (value < 0) {\n                            value = 0;\n                        }\n                        if (reverse_1) {\n                            value = 1 - value;\n                        }\n                        setState({\n                            value: value,\n                        });\n                        (options.onScrub || noop)(value);\n                    }\n                });\n            };\n            on(ref.current, 'mousedown', onMouseDown_1);\n            on(ref.current, 'touchstart', onTouchStart_1);\n            return function () {\n                off(ref.current, 'mousedown', onMouseDown_1);\n                off(ref.current, 'touchstart', onTouchStart_1);\n            };\n        }\n        else {\n            return undefined;\n        }\n    }, [ref, options.vertical]);\n    return state;\n};\nexport default useSlider;\n", "import { __assign } from \"tslib\";\nimport { useCallback, useEffect, useRef, useState } from 'react';\nvar Status;\n(function (Status) {\n    Status[Status[\"init\"] = 0] = \"init\";\n    Status[Status[\"play\"] = 1] = \"play\";\n    Status[Status[\"pause\"] = 2] = \"pause\";\n    Status[Status[\"end\"] = 3] = \"end\";\n})(Status || (Status = {}));\nvar useSpeech = function (text, options) {\n    var mounted = useRef(false);\n    var _a = useState(function () {\n        var _a = options.voice || {}, _b = _a.lang, lang = _b === void 0 ? 'default' : _b, _c = _a.name, name = _c === void 0 ? '' : _c;\n        return {\n            isPlaying: false,\n            status: Status[Status.init],\n            lang: options.lang || 'default',\n            voiceInfo: { lang: lang, name: name },\n            rate: options.rate || 1,\n            pitch: options.pitch || 1,\n            volume: options.volume || 1,\n        };\n    }), state = _a[0], setState = _a[1];\n    var handlePlay = useCallback(function () {\n        if (!mounted.current) {\n            return;\n        }\n        setState(function (preState) {\n            return __assign(__assign({}, preState), { isPlaying: true, status: Status[Status.play] });\n        });\n    }, []);\n    var handlePause = useCallback(function () {\n        if (!mounted.current) {\n            return;\n        }\n        setState(function (preState) {\n            return __assign(__assign({}, preState), { isPlaying: false, status: Status[Status.pause] });\n        });\n    }, []);\n    var handleEnd = useCallback(function () {\n        if (!mounted.current) {\n            return;\n        }\n        setState(function (preState) {\n            return __assign(__assign({}, preState), { isPlaying: false, status: Status[Status.end] });\n        });\n    }, []);\n    useEffect(function () {\n        mounted.current = true;\n        var utterance = new SpeechSynthesisUtterance(text);\n        options.lang && (utterance.lang = options.lang);\n        options.voice && (utterance.voice = options.voice);\n        utterance.rate = options.rate || 1;\n        utterance.pitch = options.pitch || 1;\n        utterance.volume = options.volume || 1;\n        utterance.onstart = handlePlay;\n        utterance.onpause = handlePause;\n        utterance.onresume = handlePlay;\n        utterance.onend = handleEnd;\n        window.speechSynthesis.speak(utterance);\n        return function () {\n            mounted.current = false;\n        };\n    }, []);\n    return state;\n};\nexport default useSpeech;\n", "import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nimport { resolveHookState } from './misc/hookState';\nexport function useStateWithHistory(initialState, capacity, initialHistory) {\n    if (capacity === void 0) { capacity = 10; }\n    if (capacity < 1) {\n        throw new Error(\"Capacity has to be greater than 1, got '\" + capacity + \"'\");\n    }\n    var isFirstMount = useFirstMountState();\n    var _a = useState(initialState), state = _a[0], innerSetState = _a[1];\n    var history = useRef((initialHistory !== null && initialHistory !== void 0 ? initialHistory : []));\n    var historyPosition = useRef(0);\n    // do the states manipulation only on first mount, no sense to load re-renders with useless calculations\n    if (isFirstMount) {\n        if (history.current.length) {\n            // if last element of history !== initial - push initial to history\n            if (history.current[history.current.length - 1] !== initialState) {\n                history.current.push(initialState);\n            }\n            // if initial history bigger that capacity - crop the first elements out\n            if (history.current.length > capacity) {\n                history.current = history.current.slice(history.current.length - capacity);\n            }\n        }\n        else {\n            // initiate the history with initial state\n            history.current.push(initialState);\n        }\n        historyPosition.current = history.current.length && history.current.length - 1;\n    }\n    var setState = useCallback(function (newState) {\n        innerSetState(function (currentState) {\n            newState = resolveHookState(newState, currentState);\n            // is state has changed\n            if (newState !== currentState) {\n                // if current position is not the last - pop element to the right\n                if (historyPosition.current < history.current.length - 1) {\n                    history.current = history.current.slice(0, historyPosition.current + 1);\n                }\n                historyPosition.current = history.current.push(newState) - 1;\n                // if capacity is reached - shift first elements\n                if (history.current.length > capacity) {\n                    history.current = history.current.slice(history.current.length - capacity);\n                }\n            }\n            return newState;\n        });\n    }, [state, capacity]);\n    var historyState = useMemo(function () { return ({\n        history: history.current,\n        position: historyPosition.current,\n        capacity: capacity,\n        back: function (amount) {\n            if (amount === void 0) { amount = 1; }\n            // don't do anything if we already at the left border\n            if (!historyPosition.current) {\n                return;\n            }\n            innerSetState(function () {\n                historyPosition.current -= Math.min(amount, historyPosition.current);\n                return history.current[historyPosition.current];\n            });\n        },\n        forward: function (amount) {\n            if (amount === void 0) { amount = 1; }\n            // don't do anything if we already at the right border\n            if (historyPosition.current === history.current.length - 1) {\n                return;\n            }\n            innerSetState(function () {\n                historyPosition.current = Math.min(historyPosition.current + amount, history.current.length - 1);\n                return history.current[historyPosition.current];\n            });\n        },\n        go: function (position) {\n            if (position === historyPosition.current) {\n                return;\n            }\n            innerSetState(function () {\n                historyPosition.current =\n                    position < 0\n                        ? Math.max(history.current.length + position, 0)\n                        : Math.min(history.current.length - 1, position);\n                return history.current[historyPosition.current];\n            });\n        },\n    }); }, [state]);\n    return [state, setState, historyState];\n}\n", "import { __assign } from \"tslib\";\nimport { useMemo, useRef } from 'react';\nimport useMountedState from './useMountedState';\nimport useUpdate from './useUpdate';\nimport useUpdateEffect from './useUpdateEffect';\nexport default function useStateList(stateSet) {\n    if (stateSet === void 0) { stateSet = []; }\n    var isMounted = useMountedState();\n    var update = useUpdate();\n    var index = useRef(0);\n    // If new state list is shorter that before - switch to the last element\n    useUpdateEffect(function () {\n        if (stateSet.length <= index.current) {\n            index.current = stateSet.length - 1;\n            update();\n        }\n    }, [stateSet.length]);\n    var actions = useMemo(function () { return ({\n        next: function () { return actions.setStateAt(index.current + 1); },\n        prev: function () { return actions.setStateAt(index.current - 1); },\n        setStateAt: function (newIndex) {\n            // do nothing on unmounted component\n            if (!isMounted())\n                return;\n            // do nothing on empty states list\n            if (!stateSet.length)\n                return;\n            // in case new index is equal current - do nothing\n            if (newIndex === index.current)\n                return;\n            // it gives the ability to travel through the left and right borders.\n            // 4ex: if list contains 5 elements, attempt to set index 9 will bring use to 5th element\n            // in case of negative index it will start counting from the right, so -17 will bring us to 4th element\n            index.current =\n                newIndex >= 0\n                    ? newIndex % stateSet.length\n                    : stateSet.length + (newIndex % stateSet.length);\n            update();\n        },\n        setState: function (state) {\n            // do nothing on unmounted component\n            if (!isMounted())\n                return;\n            var newIndex = stateSet.length ? stateSet.indexOf(state) : -1;\n            if (newIndex === -1) {\n                throw new Error(\"State '\" + state + \"' is not a valid state (does not exist in state list)\");\n            }\n            index.current = newIndex;\n            update();\n        },\n    }); }, [stateSet]);\n    return __assign({ state: stateSet[index.current], currentIndex: index.current, isFirst: index.current === 0, isLast: index.current === stateSet.length - 1 }, actions);\n}\n", "import { useEffect, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useThrottle = function (value, ms) {\n    if (ms === void 0) { ms = 200; }\n    var _a = useState(value), state = _a[0], setState = _a[1];\n    var timeout = useRef();\n    var nextValue = useRef(null);\n    var hasNextValue = useRef(0);\n    useEffect(function () {\n        if (!timeout.current) {\n            setState(value);\n            var timeoutCallback_1 = function () {\n                if (hasNextValue.current) {\n                    hasNextValue.current = false;\n                    setState(nextValue.current);\n                    timeout.current = setTimeout(timeoutCallback_1, ms);\n                }\n                else {\n                    timeout.current = undefined;\n                }\n            };\n            timeout.current = setTimeout(timeoutCallback_1, ms);\n        }\n        else {\n            nextValue.current = value;\n            hasNextValue.current = true;\n        }\n    }, [value]);\n    useUnmount(function () {\n        timeout.current && clearTimeout(timeout.current);\n    });\n    return state;\n};\nexport default useThrottle;\n", "import { useEffect, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useThrottleFn = function (fn, ms, args) {\n    if (ms === void 0) { ms = 200; }\n    var _a = useState(null), state = _a[0], setState = _a[1];\n    var timeout = useRef();\n    var nextArgs = useRef();\n    useEffect(function () {\n        if (!timeout.current) {\n            setState(fn.apply(void 0, args));\n            var timeoutCallback_1 = function () {\n                if (nextArgs.current) {\n                    setState(fn.apply(void 0, nextArgs.current));\n                    nextArgs.current = undefined;\n                    timeout.current = setTimeout(timeoutCallback_1, ms);\n                }\n                else {\n                    timeout.current = undefined;\n                }\n            };\n            timeout.current = setTimeout(timeoutCallback_1, ms);\n        }\n        else {\n            nextArgs.current = args;\n        }\n    }, args);\n    useUnmount(function () {\n        timeout.current && clearTimeout(timeout.current);\n    });\n    return state;\n};\nexport default useThrottleFn;\n", "import { useEffect, useRef } from 'react';\nvar DEFAULT_USE_TITLE_OPTIONS = {\n    restoreOnUnmount: false,\n};\nfunction useTitle(title, options) {\n    if (options === void 0) { options = DEFAULT_USE_TITLE_OPTIONS; }\n    var prevTitleRef = useRef(document.title);\n    if (document.title !== title)\n        document.title = title;\n    useEffect(function () {\n        if (options && options.restoreOnUnmount) {\n            return function () {\n                document.title = prevTitleRef.current;\n            };\n        }\n        else {\n            return;\n        }\n    }, []);\n}\nexport default typeof document !== 'undefined' ? useTitle : function (_title) { };\n", "import { easing } from 'ts-easing';\nimport useRaf from './useRaf';\nvar useTween = function (easingName, ms, delay) {\n    if (easingName === void 0) { easingName = 'inCirc'; }\n    if (ms === void 0) { ms = 200; }\n    if (delay === void 0) { delay = 0; }\n    var fn = easing[easingName];\n    var t = useRaf(ms, delay);\n    if (process.env.NODE_ENV !== 'production') {\n        if (typeof fn !== 'function') {\n            console.error('useTween() expected \"easingName\" property to be a valid easing function name, like:' +\n                '\"' +\n                Object.keys(easing).join('\", \"') +\n                '\".');\n            console.trace();\n            return 0;\n        }\n    }\n    return fn(t);\n};\nexport default useTween;\n", "import { useMemo, useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmountPromise = function () {\n    var refUnmounted = useRef(false);\n    useEffectOnce(function () { return function () {\n        refUnmounted.current = true;\n    }; });\n    var wrapper = useMemo(function () {\n        var race = function (promise, onError) {\n            var newPromise = new Promise(function (resolve, reject) {\n                promise.then(function (result) {\n                    if (!refUnmounted.current)\n                        resolve(result);\n                }, function (error) {\n                    if (!refUnmounted.current)\n                        reject(error);\n                    else if (onError)\n                        onError(error);\n                    else\n                        console.error('useUnmountPromise', error);\n                });\n            });\n            return newPromise;\n        };\n        return race;\n    }, []);\n    return wrapper;\n};\nexport default useUnmountPromise;\n", "import { __assign } from \"tslib\";\nimport useList from './useList';\n/**\n * @deprecated Use `useList` hook's upsert action instead\n */\nexport default function useUpsert(predicate, initialList) {\n    if (initialList === void 0) { initialList = []; }\n    var _a = useList(initialList), list = _a[0], listActions = _a[1];\n    return [\n        list,\n        __assign(__assign({}, listActions), { upsert: function (newItem) {\n                listActions.upsert(predicate, newItem);\n            } }),\n    ];\n}\n", "import { useEffect } from 'react';\nimport { isNavigator, noop } from './misc/util';\nvar isVibrationApiSupported = isNavigator && 'vibrate' in navigator;\nfunction useVibrate(enabled, pattern, loop) {\n    if (enabled === void 0) { enabled = true; }\n    if (pattern === void 0) { pattern = [1000, 1000]; }\n    if (loop === void 0) { loop = true; }\n    useEffect(function () {\n        var interval;\n        if (enabled) {\n            navigator.vibrate(pattern);\n            if (loop) {\n                var duration = pattern instanceof Array ? pattern.reduce(function (a, b) { return a + b; }) : pattern;\n                interval = setInterval(function () {\n                    navigator.vibrate(pattern);\n                }, duration);\n            }\n        }\n        return function () {\n            if (enabled) {\n                navigator.vibrate(0);\n                if (loop) {\n                    clearInterval(interval);\n                }\n            }\n        };\n    }, [enabled]);\n}\nexport default isVibrationApiSupported ? useVibrate : noop;\n", "import createHTMLMediaHook from './factory/createHTMLMediaHook';\nvar useVideo = createHTMLMediaHook('video');\nexport default useVideo;\n", "import { useCallback, useEffect, useRef, useState } from 'react';\nexport default function useStateValidator(state, validator, initialState) {\n    if (initialState === void 0) { initialState = [undefined]; }\n    var validatorInner = useRef(validator);\n    var stateInner = useRef(state);\n    validatorInner.current = validator;\n    stateInner.current = state;\n    var _a = useState(initialState), validity = _a[0], setValidity = _a[1];\n    var validate = useCallback(function () {\n        if (validatorInner.current.length >= 2) {\n            validatorInner.current(stateInner.current, setValidity);\n        }\n        else {\n            setValidity(validatorInner.current(stateInner.current));\n        }\n    }, [setValidity]);\n    useEffect(function () {\n        validate();\n    }, [state]);\n    return [validity, validate];\n}\n", "import { scrollbarWidth } from '@xobotyi/scrollbar-width';\nimport { useEffect, useState } from 'react';\nexport function useScrollbarWidth() {\n    var _a = useState(scrollbarWidth()), sbw = _a[0], setSbw = _a[1];\n    // this needed to ensure the scrollbar width in case hook called before the DOM is ready\n    useEffect(function () {\n        if (typeof sbw !== 'undefined') {\n            return;\n        }\n        var raf = requestAnimationFrame(function () {\n            setSbw(scrollbarWidth());\n        });\n        return function () { return cancelAnimationFrame(raf); };\n    }, []);\n    return sbw;\n}\n", "import { useCallback, useEffect, useRef, useState } from 'react';\nexport function useMultiStateValidator(states, validator, initialValidity) {\n    if (initialValidity === void 0) { initialValidity = [undefined]; }\n    if (typeof states !== 'object') {\n        throw new Error('states expected to be an object or array, got ' + typeof states);\n    }\n    var validatorInner = useRef(validator);\n    var statesInner = useRef(states);\n    validatorInner.current = validator;\n    statesInner.current = states;\n    var _a = useState(initialValidity), validity = _a[0], setValidity = _a[1];\n    var validate = useCallback(function () {\n        if (validatorInner.current.length >= 2) {\n            validatorInner.current(statesInner.current, setValidity);\n        }\n        else {\n            setValidity(validatorInner.current(statesInner.current));\n        }\n    }, [setValidity]);\n    useEffect(function () {\n        validate();\n    }, Object.values(states));\n    return [validity, validate];\n}\n", "import { useEffect } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nimport useRafState from './useRafState';\nvar useWindowScroll = function () {\n    var _a = useRafState(function () { return ({\n        x: isBrowser ? window.pageXOffset : 0,\n        y: isBrowser ? window.pageYOffset : 0,\n    }); }), state = _a[0], setState = _a[1];\n    useEffect(function () {\n        var handler = function () {\n            setState(function (state) {\n                var pageXOffset = window.pageXOffset, pageYOffset = window.pageYOffset;\n                //Check state for change, return same state if no change happened to prevent rerender\n                //(see useState/setState documentation). useState/setState is used internally in useRafState/setState.\n                return state.x !== pageXOffset || state.y !== pageYOffset\n                    ? {\n                        x: pageXOffset,\n                        y: pageYOffset,\n                    }\n                    : state;\n            });\n        };\n        //We have to update window scroll at mount, before subscription.\n        //Window scroll may be changed between render and effect handler.\n        handler();\n        on(window, 'scroll', handler, {\n            capture: false,\n            passive: true,\n        });\n        return function () {\n            off(window, 'scroll', handler);\n        };\n    }, []);\n    return state;\n};\nexport default useWindowScroll;\n", "import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { isBrowser, off, on } from './misc/util';\nvar useWindowSize = function (_a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.initialWidth, initialWidth = _c === void 0 ? Infinity : _c, _d = _b.initialHeight, initialHeight = _d === void 0 ? Infinity : _d, onChange = _b.onChange;\n    // Use the useRafState hook to maintain the current window size (width and height)\n    var _e = useRafState({\n        width: isBrowser ? window.innerWidth : initialWidth,\n        height: isBrowser ? window.innerHeight : initialHeight,\n    }), state = _e[0], setState = _e[1];\n    useEffect(function () {\n        // Only run the effect on the browser (to avoid issues with SSR)\n        if (isBrowser) {\n            var handler_1 = function () {\n                var width = window.innerWidth;\n                var height = window.innerHeight;\n                // Update the state with the new window size\n                setState({\n                    width: width,\n                    height: height,\n                });\n                // If an onChange callback is provided, call it with the new dimensions\n                if (onChange)\n                    onChange(width, height);\n            };\n            // Add event listener for the resize event\n            on(window, 'resize', handler_1);\n            // Cleanup function to remove the event listener when the component is unmounted (it's for performance optimization)\n            return function () {\n                off(window, 'resize', handler_1);\n            };\n        }\n    }, []);\n    // Return the current window size (width and height)\n    return state;\n};\nexport default useWindowSize;\n", "import { useMemo, useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport { isBrowser, noop } from './misc/util';\nvar defaultState = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0,\n    bottom: 0,\n    right: 0,\n};\nfunction useMeasure() {\n    var _a = useState(null), element = _a[0], ref = _a[1];\n    var _b = useState(defaultState), rect = _b[0], setRect = _b[1];\n    var observer = useMemo(function () {\n        return new window.ResizeObserver(function (entries) {\n            if (entries[0]) {\n                var _a = entries[0].contentRect, x = _a.x, y = _a.y, width = _a.width, height = _a.height, top_1 = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n                setRect({ x: x, y: y, width: width, height: height, top: top_1, left: left, bottom: bottom, right: right });\n            }\n        });\n    }, []);\n    useIsomorphicLayoutEffect(function () {\n        if (!element)\n            return;\n        observer.observe(element);\n        return function () {\n            observer.disconnect();\n        };\n    }, [element]);\n    return [ref, rect];\n}\nexport default isBrowser && typeof window.ResizeObserver !== 'undefined'\n    ? useMeasure\n    : (function () { return [noop, defaultState]; });\n", "import { useEffect, useMemo, useState } from 'react';\nexport var ZoomState;\n(function (ZoomState) {\n    ZoomState[\"ZOOMING_IN\"] = \"ZOOMING_IN\";\n    ZoomState[\"ZOOMING_OUT\"] = \"ZOOMING_OUT\";\n})(ZoomState || (ZoomState = {}));\nvar usePinchZoom = function (ref) {\n    var cacheRef = useMemo(function () { return ({\n        evCache: [],\n        prevDiff: -1,\n    }); }, [ref.current]);\n    var _a = useState(), zoomingState = _a[0], setZoomingState = _a[1];\n    var pointermove_handler = function (ev) {\n        // This function implements a 2-pointer horizontal pinch/zoom gesture.\n        //\n        // If the distance between the two pointers has increased (zoom in),\n        // the target element's background is changed to 'pink' and if the\n        // distance is decreasing (zoom out), the color is changed to 'lightblue'.\n        //\n        // This function sets the target element's border to 'dashed' to visually\n        // indicate the pointer's target received a move event.\n        // Find this event in the cache and update its record with this event\n        for (var i = 0; i < cacheRef.evCache.length; i++) {\n            if (ev.pointerId == cacheRef.evCache[i].pointerId) {\n                cacheRef.evCache[i] = ev;\n                break;\n            }\n        }\n        // If two pointers are down, check for pinch gestures\n        if (cacheRef.evCache.length == 2) {\n            // console.log(prevDiff)\n            // Calculate the distance between the two pointers\n            var curDiff = Math.abs(cacheRef.evCache[0].clientX - cacheRef.evCache[1].clientX);\n            if (cacheRef.prevDiff > 0) {\n                if (curDiff > cacheRef.prevDiff) {\n                    // The distance between the two pointers has increased\n                    setZoomingState([ZoomState.ZOOMING_IN, curDiff]);\n                }\n                if (curDiff < cacheRef.prevDiff) {\n                    // The distance between the two pointers has decreased\n                    setZoomingState([ZoomState.ZOOMING_OUT, curDiff]);\n                }\n            }\n            // Cache the distance for the next move event\n            cacheRef.prevDiff = curDiff;\n        }\n    };\n    var pointerdown_handler = function (ev) {\n        // The pointerdown event signals the start of a touch interaction.\n        // This event is cached to support 2-finger gestures\n        cacheRef.evCache.push(ev);\n        // console.log('pointerDown', ev);\n    };\n    var pointerup_handler = function (ev) {\n        // Remove this pointer from the cache and reset the target's\n        // background and border\n        remove_event(ev);\n        // If the number of pointers down is less than two then reset diff tracker\n        if (cacheRef.evCache.length < 2) {\n            cacheRef.prevDiff = -1;\n        }\n    };\n    var remove_event = function (ev) {\n        // Remove this event from the target's cache\n        for (var i = 0; i < cacheRef.evCache.length; i++) {\n            if (cacheRef.evCache[i].pointerId == ev.pointerId) {\n                cacheRef.evCache.splice(i, 1);\n                break;\n            }\n        }\n    };\n    useEffect(function () {\n        if (ref === null || ref === void 0 ? void 0 : ref.current) {\n            ref.current.onpointerdown = pointerdown_handler;\n            ref.current.onpointermove = pointermove_handler;\n            ref.current.onpointerup = pointerup_handler;\n            ref.current.onpointercancel = pointerup_handler;\n            ref.current.onpointerout = pointerup_handler;\n            ref.current.onpointerleave = pointerup_handler;\n        }\n    }, [ref === null || ref === void 0 ? void 0 : ref.current]);\n    return zoomingState\n        ? { zoomingState: zoomingState[0], pinchState: zoomingState[1] }\n        : { zoomingState: null, pinchState: 0 };\n};\nexport default usePinchZoom;\n", "import { useRef } from 'react';\nexport function useRendersCount() {\n    return ++useRef(0).current;\n}\n", "import { __assign, __spreadArrays } from \"tslib\";\nimport { useCallback, useMemo, useState } from 'react';\nvar useSet = function (initialSet) {\n    if (initialSet === void 0) { initialSet = new Set(); }\n    var _a = useState(initialSet), set = _a[0], setSet = _a[1];\n    var stableActions = useMemo(function () {\n        var add = function (item) { return setSet(function (prevSet) { return new Set(__spreadArrays(Array.from(prevSet), [item])); }); };\n        var remove = function (item) {\n            return setSet(function (prevSet) { return new Set(Array.from(prevSet).filter(function (i) { return i !== item; })); });\n        };\n        var toggle = function (item) {\n            return setSet(function (prevSet) {\n                return prevSet.has(item)\n                    ? new Set(Array.from(prevSet).filter(function (i) { return i !== item; }))\n                    : new Set(__spreadArrays(Array.from(prevSet), [item]));\n            });\n        };\n        return { add: add, remove: remove, toggle: toggle, reset: function () { return setSet(initialSet); }, clear: function () { return setSet(new Set()); } };\n    }, [setSet]);\n    var utils = __assign({ has: useCallback(function (item) { return set.has(item); }, [set]) }, stableActions);\n    return [set, utils];\n};\nexport default useSet;\n", "import { useState } from 'react';\nimport { resolveHookState } from '../misc/hookState';\nimport useEffectOnce from '../useEffectOnce';\nimport useIsomorphicLayoutEffect from '../useIsomorphicLayoutEffect';\nexport function createGlobalState(initialState) {\n    var store = {\n        state: initialState instanceof Function ? initialState() : initialState,\n        setState: function (nextState) {\n            store.state = resolveHookState(nextState, store.state);\n            store.setters.forEach(function (setter) { return setter(store.state); });\n        },\n        setters: [],\n    };\n    return function () {\n        var _a = useState(store.state), globalState = _a[0], stateSetter = _a[1];\n        useEffectOnce(function () { return function () {\n            store.setters = store.setters.filter(function (setter) { return setter !== stateSetter; });\n        }; });\n        useIsomorphicLayoutEffect(function () {\n            if (!store.setters.includes(stateSetter)) {\n                store.setters.push(stateSetter);\n            }\n        });\n        return [globalState, store.setState];\n    };\n}\nexport default createGlobalState;\n", "import { useCallback, useState } from 'react';\nimport useLifecycles from './useLifecycles';\nimport { off, on } from './misc/util';\n/**\n * read and write url hash, response to url hash change\n */\nexport var useHash = function () {\n    var _a = useState(function () { return window.location.hash; }), hash = _a[0], setHash = _a[1];\n    var onHashChange = useCallback(function () {\n        setHash(window.location.hash);\n    }, []);\n    useLifecycles(function () {\n        on(window, 'hashchange', onHashChange);\n    }, function () {\n        off(window, 'hashchange', onHashChange);\n    });\n    var _setHash = useCallback(function (newHash) {\n        if (newHash !== hash) {\n            window.location.hash = newHash;\n        }\n    }, [hash]);\n    return [hash, _setHash];\n};\n", "var styles = {\"container\":\"TilesContainer-module_container__2hgud\",\"tile\":\"TilesContainer-module_tile__1R3DP\",\"dragging\":\"TilesContainer-module_dragging__2mUA2\",\"indicator\":\"TilesContainer-module_indicator__t_Y_b\"};\n\nexport default styles;\n//# sourceMappingURL=TilesContainer.module.css.js.map\n", "import { Ref, useCallback } from 'react';\n\n/**\n * returns a function that composes multiple refs together.\n * This can be very useful when you have more hooks that create a ref\n * that shall be given to a DOM component, but the component only accepts\n * one ref!\n *\n * Example:\n *\n * ```\n * import { useMeasure } from 'react-use';\n * import { useDrop } from 'react-dnd';\n *\n * const MyComponent = () => {\n *   const [measureRef, measure] = useMeasure<HTMLDivElement>();\n *   const [_, dropRef] = useDrop({accept: 'TILE'});\n *   const reactRef = useRef<HTMLDivElement>(null);\n *\n *   const composedRef = useComposeRef(measureRef, dropRef, reactRef)\n *\n *   return <div ref={composedRef}/>\n * }\n * ```\n * @param refs a list of refs that shall be composed together\n * @returns a new ref that shall be given to the component\n */\nexport const useComposeRef = <T extends HTMLElement>(...refs: Ref<T>[]) => {\n  return useCallback((el: T | null) => {\n    refs.forEach(ref => {\n      if (ref) {\n        if (typeof ref === 'function') ref(el);\n        //@ts-ignore\n        else ref.current = el;\n      }\n    });\n  }, refs);\n};\n", "export const jc = (...s: (string | null | undefined | false)[]) =>\n  s.filter(val => !!val).join(' ');\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\nfunction baseToNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  return +value;\n}\n\nexport default baseToNumber;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "import baseToNumber from './_baseToNumber.js';\nimport baseToString from './_baseToString.js';\n\n/**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\nfunction createMathOperation(operator, defaultValue) {\n  return function(value, other) {\n    var result;\n    if (value === undefined && other === undefined) {\n      return defaultValue;\n    }\n    if (value !== undefined) {\n      result = value;\n    }\n    if (other !== undefined) {\n      if (result === undefined) {\n        return other;\n      }\n      if (typeof value == 'string' || typeof other == 'string') {\n        value = baseToString(value);\n        other = baseToString(other);\n      } else {\n        value = baseToNumber(value);\n        other = baseToNumber(other);\n      }\n      result = operator(value, other);\n    }\n    return result;\n  };\n}\n\nexport default createMathOperation;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\nvar add = createMathOperation(function(augend, addend) {\n  return augend + addend;\n}, 0);\n\nexport default add;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nexport default toFinite;\n", "import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n", "import toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n *   console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n *   asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\nfunction after(n, func) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  n = toInteger(n);\n  return function() {\n    if (--n < 1) {\n      return func.apply(this, arguments);\n    }\n  };\n}\n\nexport default after;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import WeakMap from './_WeakMap.js';\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nexport default metaMap;\n", "import identity from './identity.js';\nimport metaMap from './_metaMap.js';\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n  metaMap.set(func, data);\n  return func;\n};\n\nexport default baseSetData;\n", "import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n", "import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n  return function() {\n    // Use a `switch` statement to work with class constructors. See\n    // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n    // for more details.\n    var args = arguments;\n    switch (args.length) {\n      case 0: return new Ctor;\n      case 1: return new Ctor(args[0]);\n      case 2: return new Ctor(args[0], args[1]);\n      case 3: return new Ctor(args[0], args[1], args[2]);\n      case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n      case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n      case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n      case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n    }\n    var thisBinding = baseCreate(Ctor.prototype),\n        result = Ctor.apply(thisBinding, args);\n\n    // Mimic the constructor's `return` behavior.\n    // See https://es5.github.io/#x13.2.2 for more details.\n    return isObject(result) ? result : thisBinding;\n  };\n}\n\nexport default createCtor;\n", "import createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n  var isBind = bitmask & WRAP_BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return fn.apply(isBind ? thisArg : this, arguments);\n  }\n  return wrapper;\n}\n\nexport default createBind;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersLength = holders.length,\n      leftIndex = -1,\n      leftLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(leftLength + rangeLength),\n      isUncurried = !isCurried;\n\n  while (++leftIndex < leftLength) {\n    result[leftIndex] = partials[leftIndex];\n  }\n  while (++argsIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[holders[argsIndex]] = args[argsIndex];\n    }\n  }\n  while (rangeLength--) {\n    result[leftIndex++] = args[argsIndex++];\n  }\n  return result;\n}\n\nexport default composeArgs;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersIndex = -1,\n      holdersLength = holders.length,\n      rightIndex = -1,\n      rightLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(rangeLength + rightLength),\n      isUncurried = !isCurried;\n\n  while (++argsIndex < rangeLength) {\n    result[argsIndex] = args[argsIndex];\n  }\n  var offset = argsIndex;\n  while (++rightIndex < rightLength) {\n    result[offset + rightIndex] = partials[rightIndex];\n  }\n  while (++holdersIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[offset + holders[holdersIndex]] = args[argsIndex++];\n    }\n  }\n  return result;\n}\n\nexport default composeArgsRight;\n", "/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n  var length = array.length,\n      result = 0;\n\n  while (length--) {\n    if (array[length] === placeholder) {\n      ++result;\n    }\n  }\n  return result;\n}\n\nexport default countHolders;\n", "/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n  // No operation performed.\n}\n\nexport default baseLodash;\n", "import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n  this.__wrapped__ = value;\n  this.__actions__ = [];\n  this.__dir__ = 1;\n  this.__filtered__ = false;\n  this.__iteratees__ = [];\n  this.__takeCount__ = MAX_ARRAY_LENGTH;\n  this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nexport default LazyWrapper;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nexport default noop;\n", "import metaMap from './_metaMap.js';\nimport noop from './noop.js';\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n  return metaMap.get(func);\n};\n\nexport default getData;\n", "/** Used to lookup unminified function names. */\nvar realNames = {};\n\nexport default realNames;\n", "import realNames from './_realNames.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n  var result = (func.name + ''),\n      array = realNames[result],\n      length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n  while (length--) {\n    var data = array[length],\n        otherFunc = data.func;\n    if (otherFunc == null || otherFunc == func) {\n      return data.name;\n    }\n  }\n  return result;\n}\n\nexport default getFuncName;\n", "import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n  this.__wrapped__ = value;\n  this.__actions__ = [];\n  this.__chain__ = !!chainAll;\n  this.__index__ = 0;\n  this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nexport default LodashWrapper;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport copyArray from './_copyArray.js';\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n  if (wrapper instanceof LazyWrapper) {\n    return wrapper.clone();\n  }\n  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n  result.__actions__ = copyArray(wrapper.__actions__);\n  result.__index__  = wrapper.__index__;\n  result.__values__ = wrapper.__values__;\n  return result;\n}\n\nexport default wrapperClone;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport baseLodash from './_baseLodash.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\nimport wrapperClone from './_wrapperClone.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n    if (value instanceof LodashWrapper) {\n      return value;\n    }\n    if (hasOwnProperty.call(value, '__wrapped__')) {\n      return wrapperClone(value);\n    }\n  }\n  return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nexport default lodash;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport lodash from './wrapperLodash.js';\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n *  else `false`.\n */\nfunction isLaziable(func) {\n  var funcName = getFuncName(func),\n      other = lodash[funcName];\n\n  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n    return false;\n  }\n  if (func === other) {\n    return true;\n  }\n  var data = getData(other);\n  return !!data && func === data[0];\n}\n\nexport default isLaziable;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n", "import baseSetData from './_baseSetData.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nexport default setData;\n", "/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n    reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n  var match = source.match(reWrapDetails);\n  return match ? match[1].split(reSplitDetails) : [];\n}\n\nexport default getWrapDetails;\n", "/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n  var length = details.length;\n  if (!length) {\n    return source;\n  }\n  var lastIndex = length - 1;\n  details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n  details = details.join(length > 2 ? ', ' : ' ');\n  return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nexport default insertWrapDetails;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n", "import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n", "import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nexport default baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default strictIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n", "import arrayEach from './_arrayEach.js';\nimport arrayIncludes from './_arrayIncludes.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_CURRY_RIGHT_FLAG = 16,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_PARTIAL_RIGHT_FLAG = 64,\n    WRAP_ARY_FLAG = 128,\n    WRAP_REARG_FLAG = 256,\n    WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n  ['ary', WRAP_ARY_FLAG],\n  ['bind', WRAP_BIND_FLAG],\n  ['bindKey', WRAP_BIND_KEY_FLAG],\n  ['curry', WRAP_CURRY_FLAG],\n  ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n  ['flip', WRAP_FLIP_FLAG],\n  ['partial', WRAP_PARTIAL_FLAG],\n  ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n  ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n  arrayEach(wrapFlags, function(pair) {\n    var value = '_.' + pair[0];\n    if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n      details.push(value);\n    }\n  });\n  return details.sort();\n}\n\nexport default updateWrapDetails;\n", "import getWrapDetails from './_getWrapDetails.js';\nimport insertWrapDetails from './_insertWrapDetails.js';\nimport setToString from './_setToString.js';\nimport updateWrapDetails from './_updateWrapDetails.js';\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n  var source = (reference + '');\n  return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nexport default setWrapToString;\n", "import isLaziable from './_isLaziable.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_BOUND_FLAG = 4,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n  var isCurry = bitmask & WRAP_CURRY_FLAG,\n      newHolders = isCurry ? holders : undefined,\n      newHoldersRight = isCurry ? undefined : holders,\n      newPartials = isCurry ? partials : undefined,\n      newPartialsRight = isCurry ? undefined : partials;\n\n  bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n  bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n  if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n    bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n  }\n  var newData = [\n    func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n    newHoldersRight, argPos, ary, arity\n  ];\n\n  var result = wrapFunc.apply(undefined, newData);\n  if (isLaziable(func)) {\n    setData(result, newData);\n  }\n  result.placeholder = placeholder;\n  return setWrapToString(result, func, bitmask);\n}\n\nexport default createRecurry;\n", "/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n  var object = func;\n  return object.placeholder;\n}\n\nexport default getHolder;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import copyArray from './_copyArray.js';\nimport isIndex from './_isIndex.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n  var arrLength = array.length,\n      length = nativeMin(indexes.length, arrLength),\n      oldArray = copyArray(array);\n\n  while (length--) {\n    var index = indexes[length];\n    array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n  }\n  return array;\n}\n\nexport default reorder;\n", "/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n  var index = -1,\n      length = array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (value === placeholder || value === PLACEHOLDER) {\n      array[index] = PLACEHOLDER;\n      result[resIndex++] = index;\n    }\n  }\n  return result;\n}\n\nexport default replaceHolders;\n", "import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport countHolders from './_countHolders.js';\nimport createCtor from './_createCtor.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport reorder from './_reorder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_CURRY_RIGHT_FLAG = 16,\n    WRAP_ARY_FLAG = 128,\n    WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n *  to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n  var isAry = bitmask & WRAP_ARY_FLAG,\n      isBind = bitmask & WRAP_BIND_FLAG,\n      isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n      isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n      isFlip = bitmask & WRAP_FLIP_FLAG,\n      Ctor = isBindKey ? undefined : createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length;\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    if (isCurried) {\n      var placeholder = getHolder(wrapper),\n          holdersCount = countHolders(args, placeholder);\n    }\n    if (partials) {\n      args = composeArgs(args, partials, holders, isCurried);\n    }\n    if (partialsRight) {\n      args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n    }\n    length -= holdersCount;\n    if (isCurried && length < arity) {\n      var newHolders = replaceHolders(args, placeholder);\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n        args, newHolders, argPos, ary, arity - length\n      );\n    }\n    var thisBinding = isBind ? thisArg : this,\n        fn = isBindKey ? thisBinding[func] : func;\n\n    length = args.length;\n    if (argPos) {\n      args = reorder(args, argPos);\n    } else if (isFlip && length > 1) {\n      args.reverse();\n    }\n    if (isAry && ary < length) {\n      args.length = ary;\n    }\n    if (this && this !== root && this instanceof wrapper) {\n      fn = Ctor || createCtor(fn);\n    }\n    return fn.apply(thisBinding, args);\n  }\n  return wrapper;\n}\n\nexport default createHybrid;\n", "import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport createHybrid from './_createHybrid.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n  var Ctor = createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length,\n        placeholder = getHolder(wrapper);\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n      ? []\n      : replaceHolders(args, placeholder);\n\n    length -= holders.length;\n    if (length < arity) {\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, undefined,\n        args, holders, undefined, undefined, arity - length);\n    }\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return apply(fn, this, args);\n  }\n  return wrapper;\n}\n\nexport default createCurry;\n", "import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n *  the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n  var isBind = bitmask & WRAP_BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var argsIndex = -1,\n        argsLength = arguments.length,\n        leftIndex = -1,\n        leftLength = partials.length,\n        args = Array(leftLength + argsLength),\n        fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n    while (++leftIndex < leftLength) {\n      args[leftIndex] = partials[leftIndex];\n    }\n    while (argsLength--) {\n      args[leftIndex++] = arguments[++argsIndex];\n    }\n    return apply(fn, isBind ? thisArg : this, args);\n  }\n  return wrapper;\n}\n\nexport default createPartial;\n", "import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_BOUND_FLAG = 4,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_ARY_FLAG = 128,\n    WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n  var bitmask = data[1],\n      srcBitmask = source[1],\n      newBitmask = bitmask | srcBitmask,\n      isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n  var isCombo =\n    ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n    ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n    ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n  // Exit early if metadata can't be merged.\n  if (!(isCommon || isCombo)) {\n    return data;\n  }\n  // Use source `thisArg` if available.\n  if (srcBitmask & WRAP_BIND_FLAG) {\n    data[2] = source[2];\n    // Set when currying a bound function.\n    newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n  }\n  // Compose partial arguments.\n  var value = source[3];\n  if (value) {\n    var partials = data[3];\n    data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n    data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n  }\n  // Compose partial right arguments.\n  value = source[5];\n  if (value) {\n    partials = data[5];\n    data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n    data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n  }\n  // Use source `argPos` if available.\n  value = source[7];\n  if (value) {\n    data[7] = value;\n  }\n  // Use source `ary` if it's smaller.\n  if (srcBitmask & WRAP_ARY_FLAG) {\n    data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n  }\n  // Use source `arity` if one is not provided.\n  if (data[9] == null) {\n    data[9] = source[9];\n  }\n  // Use source `func` and merge bitmasks.\n  data[0] = source[0];\n  data[1] = newBitmask;\n\n  return data;\n}\n\nexport default mergeData;\n", "import baseSetData from './_baseSetData.js';\nimport createBind from './_createBind.js';\nimport createCurry from './_createCurry.js';\nimport createHybrid from './_createHybrid.js';\nimport createPartial from './_createPartial.js';\nimport getData from './_getData.js';\nimport mergeData from './_mergeData.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_CURRY_FLAG = 8,\n    WRAP_CURRY_RIGHT_FLAG = 16,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n *    1 - `_.bind`\n *    2 - `_.bindKey`\n *    4 - `_.curry` or `_.curryRight` of a bound function\n *    8 - `_.curry`\n *   16 - `_.curryRight`\n *   32 - `_.partial`\n *   64 - `_.partialRight`\n *  128 - `_.rearg`\n *  256 - `_.ary`\n *  512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n  var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n  if (!isBindKey && typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var length = partials ? partials.length : 0;\n  if (!length) {\n    bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n    partials = holders = undefined;\n  }\n  ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n  arity = arity === undefined ? arity : toInteger(arity);\n  length -= holders ? holders.length : 0;\n\n  if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n    var partialsRight = partials,\n        holdersRight = holders;\n\n    partials = holders = undefined;\n  }\n  var data = isBindKey ? undefined : getData(func);\n\n  var newData = [\n    func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n    argPos, ary, arity\n  ];\n\n  if (data) {\n    mergeData(newData, data);\n  }\n  func = newData[0];\n  bitmask = newData[1];\n  thisArg = newData[2];\n  partials = newData[3];\n  holders = newData[4];\n  arity = newData[9] = newData[9] === undefined\n    ? (isBindKey ? 0 : func.length)\n    : nativeMax(newData[9] - length, 0);\n\n  if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n    bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n  }\n  if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n    var result = createBind(func, bitmask, thisArg);\n  } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n    result = createCurry(func, bitmask, arity);\n  } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n    result = createPartial(func, bitmask, thisArg, partials);\n  } else {\n    result = createHybrid.apply(undefined, newData);\n  }\n  var setter = data ? baseSetData : setData;\n  return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nexport default createWrap;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n  n = guard ? undefined : n;\n  n = (func && n == null) ? func.length : n;\n  return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nexport default ary;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n", "import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n", "import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n", "import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\n", "import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "import assignValue from './_assignValue.js';\nimport copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport isArrayLike from './isArrayLike.js';\nimport isPrototype from './_isPrototype.js';\nimport keys from './keys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nexport default assign;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n  copyObject(source, keysIn(source), object);\n});\n\nexport default assignIn;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keysIn(source), object, customizer);\n});\n\nexport default assignInWith;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n/**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keys(source), object, customizer);\n});\n\nexport default assignWith;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nexport default stringToPath;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "import get from './get.js';\n\n/**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\nfunction baseAt(object, paths) {\n  var index = -1,\n      length = paths.length,\n      result = Array(length),\n      skip = object == null;\n\n  while (++index < length) {\n    result[index] = skip ? undefined : get(object, paths[index]);\n  }\n  return result;\n}\n\nexport default baseAt;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n", "import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n", "import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nexport default baseFlatten;\n", "import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n", "import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n", "import baseAt from './_baseAt.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\nvar at = flatRest(baseAt);\n\nexport default at;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n    errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n  if (!isObjectLike(value)) {\n    return false;\n  }\n  var tag = baseGetTag(value);\n  return tag == errorTag || tag == domExcTag ||\n    (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nexport default isError;\n", "import apply from './_apply.js';\nimport baseRest from './_baseRest.js';\nimport isError from './isError.js';\n\n/**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n *   return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n *   elements = [];\n * }\n */\nvar attempt = baseRest(function(func, args) {\n  try {\n    return apply(func, undefined, args);\n  } catch (e) {\n    return isError(e) ? e : new Error(e);\n  }\n});\n\nexport default attempt;\n", "import toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n  var result;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  n = toInteger(n);\n  return function() {\n    if (--n > 0) {\n      result = func.apply(this, arguments);\n    }\n    if (n <= 1) {\n      func = undefined;\n    }\n    return result;\n  };\n}\n\nexport default before;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n *   return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\nvar bind = baseRest(function(func, thisArg, partials) {\n  var bitmask = WRAP_BIND_FLAG;\n  if (partials.length) {\n    var holders = replaceHolders(partials, getHolder(bind));\n    bitmask |= WRAP_PARTIAL_FLAG;\n  }\n  return createWrap(func, bitmask, thisArg, partials, holders);\n});\n\n// Assign default placeholders.\nbind.placeholder = {};\n\nexport default bind;\n", "import arrayEach from './_arrayEach.js';\nimport baseAssignValue from './_baseAssignValue.js';\nimport bind from './bind.js';\nimport flatRest from './_flatRest.js';\nimport toKey from './_toKey.js';\n\n/**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n *   'label': 'docs',\n *   'click': function() {\n *     console.log('clicked ' + this.label);\n *   }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\nvar bindAll = flatRest(function(object, methodNames) {\n  arrayEach(methodNames, function(key) {\n    key = toKey(key);\n    baseAssignValue(object, key, bind(object[key], object));\n  });\n  return object;\n});\n\nexport default bindAll;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n    WRAP_BIND_KEY_FLAG = 2,\n    WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n *   'user': 'fred',\n *   'greet': function(greeting, punctuation) {\n *     return greeting + ' ' + this.user + punctuation;\n *   }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n *   return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\nvar bindKey = baseRest(function(object, key, partials) {\n  var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n  if (partials.length) {\n    var holders = replaceHolders(partials, getHolder(bindKey));\n    bitmask |= WRAP_PARTIAL_FLAG;\n  }\n  return createWrap(key, bitmask, object, partials, holders);\n});\n\n// Assign default placeholders.\nbindKey.placeholder = {};\n\nexport default bindKey;\n", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n", "import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n", "import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n", "import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n", "import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n", "/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n", "import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n", "/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n", "/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n", "import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n", "import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n", "import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n", "import isArray from './isArray.js';\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n  if (!arguments.length) {\n    return [];\n  }\n  var value = arguments[0];\n  return isArray(value) ? value : [value];\n}\n\nexport default castArray;\n", "import root from './_root.js';\nimport toInteger from './toInteger.js';\nimport toNumber from './toNumber.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n    nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n  var func = Math[methodName];\n  return function(number, precision) {\n    number = toNumber(number);\n    precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n    if (precision && nativeIsFinite(number)) {\n      // Shift with exponential notation to avoid floating-point issues.\n      // See [MDN](https://mdn.io/round#Examples) for more details.\n      var pair = (toString(number) + 'e').split('e'),\n          value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n      pair = (toString(value) + 'e').split('e');\n      return +(pair[0] + 'e' + (+pair[1] - precision));\n    }\n    return func(number);\n  };\n}\n\nexport default createRound;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\nvar ceil = createRound('ceil');\n\nexport default ceil;\n", "import lodash from './wrapperLodash.js';\n\n/**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36 },\n *   { 'user': 'fred',    'age': 40 },\n *   { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n *   .chain(users)\n *   .sortBy('age')\n *   .map(function(o) {\n *     return o.user + ' is ' + o.age;\n *   })\n *   .head()\n *   .value();\n * // => 'pebbles is 1'\n */\nfunction chain(value) {\n  var result = lodash(value);\n  result.__chain__ = true;\n  return result;\n}\n\nexport default chain;\n", "import baseSlice from './_baseSlice.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n  if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n    size = 1;\n  } else {\n    size = nativeMax(toInteger(size), 0);\n  }\n  var length = array == null ? 0 : array.length;\n  if (!length || size < 1) {\n    return [];\n  }\n  var index = 0,\n      resIndex = 0,\n      result = Array(nativeCeil(length / size));\n\n  while (index < length) {\n    result[resIndex++] = baseSlice(array, index, (index += size));\n  }\n  return result;\n}\n\nexport default chunk;\n", "/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n  if (number === number) {\n    if (upper !== undefined) {\n      number = number <= upper ? number : upper;\n    }\n    if (lower !== undefined) {\n      number = number >= lower ? number : lower;\n    }\n  }\n  return number;\n}\n\nexport default baseClamp;\n", "import baseClamp from './_baseClamp.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n  if (upper === undefined) {\n    upper = lower;\n    lower = undefined;\n  }\n  if (upper !== undefined) {\n    upper = toNumber(upper);\n    upper = upper === upper ? upper : 0;\n  }\n  if (lower !== undefined) {\n    lower = toNumber(lower);\n    lower = lower === lower ? lower : 0;\n  }\n  return baseClamp(toNumber(number), lower, upper);\n}\n\nexport default clamp;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n", "import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n", "import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n", "import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n", "import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n", "import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n", "import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n", "import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n", "import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n  return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n *   if (_.isElement(value)) {\n *     return value.cloneNode(true);\n *   }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n *   if (_.isElement(value)) {\n *     return value.cloneNode(false);\n *   }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\nfunction cloneWith(value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneWith;\n", "import LodashWrapper from './_LodashWrapper.js';\n\n/**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\nfunction wrapperCommit() {\n  return new LodashWrapper(this.value(), this.__chain__);\n}\n\nexport default wrapperCommit;\n", "/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (value) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default compact;\n", "import arrayPush from './_arrayPush.js';\nimport baseFlatten from './_baseFlatten.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n  var length = arguments.length;\n  if (!length) {\n    return [];\n  }\n  var args = Array(length - 1),\n      array = arguments[0],\n      index = length;\n\n  while (index--) {\n    args[index - 1] = arguments[index];\n  }\n  return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nexport default concat;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nexport default baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nexport default baseIteratee;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n *   [_.stubTrue,                      _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\nfunction cond(pairs) {\n  var length = pairs == null ? 0 : pairs.length,\n      toIteratee = baseIteratee;\n\n  pairs = !length ? [] : arrayMap(pairs, function(pair) {\n    if (typeof pair[1] != 'function') {\n      throw new TypeError(FUNC_ERROR_TEXT);\n    }\n    return [toIteratee(pair[0]), pair[1]];\n  });\n\n  return baseRest(function(args) {\n    var index = -1;\n    while (++index < length) {\n      var pair = pairs[index];\n      if (apply(pair[0], this, args)) {\n        return apply(pair[1], this, args);\n      }\n    }\n  });\n}\n\nexport default cond;\n", "/**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\nfunction baseConformsTo(object, source, props) {\n  var length = props.length;\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (length--) {\n    var key = props[length],\n        predicate = source[key],\n        value = object[key];\n\n    if ((value === undefined && !(key in object)) || !predicate(value)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default baseConformsTo;\n", "import baseConformsTo from './_baseConformsTo.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseConforms(source) {\n  var props = keys(source);\n  return function(object) {\n    return baseConformsTo(object, source, props);\n  };\n}\n\nexport default baseConforms;\n", "import baseClone from './_baseClone.js';\nimport baseConforms from './_baseConforms.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n *   { 'a': 2, 'b': 1 },\n *   { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\nfunction conforms(source) {\n  return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nexport default conforms;\n", "import baseConformsTo from './_baseConformsTo.js';\nimport keys from './keys.js';\n\n/**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\nfunction conformsTo(object, source) {\n  return source == null || baseConformsTo(object, source, keys(source));\n}\n\nexport default conformsTo;\n", "/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nexport default arrayAggregator;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nexport default createBaseEach;\n", "import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n", "import baseEach from './_baseEach.js';\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nexport default baseAggregator;\n", "import arrayAggregator from './_arrayAggregator.js';\nimport baseAggregator from './_baseAggregator.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nexport default createAggregator;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\nvar countBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    ++result[key];\n  } else {\n    baseAssignValue(result, key, 1);\n  }\n});\n\nexport default countBy;\n", "import baseAssign from './_baseAssign.js';\nimport baseCreate from './_baseCreate.js';\n\n/**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n *   this.x = 0;\n *   this.y = 0;\n * }\n *\n * function Circle() {\n *   Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n *   'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\nfunction create(prototype, properties) {\n  var result = baseCreate(prototype);\n  return properties == null ? result : baseAssign(result, properties);\n}\n\nexport default create;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n *   return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n  arity = guard ? undefined : arity;\n  var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n  result.placeholder = curry.placeholder;\n  return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nexport default curry;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_RIGHT_FLAG = 16;\n\n/**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n *   return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\nfunction curryRight(func, arity, guard) {\n  arity = guard ? undefined : arity;\n  var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n  result.placeholder = curryRight.placeholder;\n  return result;\n}\n\n// Assign default placeholders.\ncurryRight.placeholder = {};\n\nexport default curryRight;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n", "import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n", "/**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\nfunction defaultTo(value, defaultValue) {\n  return (value == null || value !== value) ? defaultValue : value;\n}\n\nexport default defaultTo;\n", "import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n  object = Object(object);\n\n  var index = -1;\n  var length = sources.length;\n  var guard = length > 2 ? sources[2] : undefined;\n\n  if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n    length = 1;\n  }\n\n  while (++index < length) {\n    var source = sources[index];\n    var props = keysIn(source);\n    var propsIndex = -1;\n    var propsLength = props.length;\n\n    while (++propsIndex < propsLength) {\n      var key = props[propsIndex];\n      var value = object[key];\n\n      if (value === undefined ||\n          (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        object[key] = source[key];\n      }\n    }\n  }\n\n  return object;\n});\n\nexport default defaults;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n", "import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n", "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n", "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n", "import baseMerge from './_baseMerge.js';\nimport isObject from './isObject.js';\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n  if (isObject(objValue) && isObject(srcValue)) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, objValue);\n    baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n    stack['delete'](srcValue);\n  }\n  return objValue;\n}\n\nexport default customDefaultsMerge;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   if (_.isArray(objValue)) {\n *     return objValue.concat(srcValue);\n *   }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n  baseMerge(object, source, srcIndex, customizer);\n});\n\nexport default mergeWith;\n", "import apply from './_apply.js';\nimport baseRest from './_baseRest.js';\nimport customDefaultsMerge from './_customDefaultsMerge.js';\nimport mergeWith from './mergeWith.js';\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n  args.push(undefined, customDefaultsMerge);\n  return apply(mergeWith, undefined, args);\n});\n\nexport default defaultsDeep;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nexport default baseDelay;\n", "import baseDelay from './_baseDelay.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n *   console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\nvar defer = baseRest(function(func, args) {\n  return baseDelay(func, 1, args);\n});\n\nexport default defer;\n", "import baseDelay from './_baseDelay.js';\nimport baseRest from './_baseRest.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n *   console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\nvar delay = baseRest(function(func, wait, args) {\n  return baseDelay(func, toNumber(wait) || 0, args);\n});\n\nexport default delay;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arrayIncludesWith;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseDifference;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\n});\n\nexport default difference;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n  var iteratee = last(values);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n    : [];\n});\n\nexport default differenceBy;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\nvar differenceWith = baseRest(function(array, values) {\n  var comparator = last(values);\n  if (isArrayLikeObject(comparator)) {\n    comparator = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n    : [];\n});\n\nexport default differenceWith;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\nvar divide = createMathOperation(function(dividend, divisor) {\n  return dividend / divisor;\n}, 1);\n\nexport default divide;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction drop(array, n, guard) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default drop;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  n = length - n;\n  return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default dropRight;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseWhile(array, predicate, isDrop, fromRight) {\n  var length = array.length,\n      index = fromRight ? length : -1;\n\n  while ((fromRight ? index-- : ++index < length) &&\n    predicate(array[index], index, array)) {}\n\n  return isDrop\n    ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n    : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n}\n\nexport default baseWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropRightWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3), true, true)\n    : [];\n}\n\nexport default dropRightWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3), true)\n    : [];\n}\n\nexport default dropWhile;\n", "import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n  return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n", "import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n *   console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n  var func = isArray(collection) ? arrayEach : baseEach;\n  return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n", "/**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEachRight(array, iteratee) {\n  var length = array == null ? 0 : array.length;\n\n  while (length--) {\n    if (iteratee(array[length], length, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEachRight;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseForRight = createBaseFor(true);\n\nexport default baseForRight;\n", "import baseForRight from './_baseForRight.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwnRight(object, iteratee) {\n  return object && baseForRight(object, iteratee, keys);\n}\n\nexport default baseForOwnRight;\n", "import baseForOwnRight from './_baseForOwnRight.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEachRight = createBaseEach(baseForOwnRight, true);\n\nexport default baseEachRight;\n", "import arrayEachRight from './_arrayEachRight.js';\nimport baseEachRight from './_baseEachRight.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n *   console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\nfunction forEachRight(collection, iteratee) {\n  var func = isArray(collection) ? arrayEachRight : baseEachRight;\n  return func(collection, castFunction(iteratee));\n}\n\nexport default forEachRight;\n", "import baseClamp from './_baseClamp.js';\nimport baseToString from './_baseToString.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n *  else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\nfunction endsWith(string, target, position) {\n  string = toString(string);\n  target = baseToString(target);\n\n  var length = string.length;\n  position = position === undefined\n    ? length\n    : baseClamp(toInteger(position), 0, length);\n\n  var end = position;\n  position -= target.length;\n  return position >= 0 && string.slice(position, end) == target;\n}\n\nexport default endsWith;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\nfunction baseToPairs(object, props) {\n  return arrayMap(props, function(key) {\n    return [key, object[key]];\n  });\n}\n\nexport default baseToPairs;\n", "/**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\nfunction setToPairs(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = [value, value];\n  });\n  return result;\n}\n\nexport default setToPairs;\n", "import baseToPairs from './_baseToPairs.js';\nimport getTag from './_getTag.js';\nimport mapToArray from './_mapToArray.js';\nimport setToPairs from './_setToPairs.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\nfunction createToPairs(keysFunc) {\n  return function(object) {\n    var tag = getTag(object);\n    if (tag == mapTag) {\n      return mapToArray(object);\n    }\n    if (tag == setTag) {\n      return setToPairs(object);\n    }\n    return baseToPairs(object, keysFunc(object));\n  };\n}\n\nexport default createToPairs;\n", "import createToPairs from './_createToPairs.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nvar toPairs = createToPairs(keys);\n\nexport default toPairs;\n", "import createToPairs from './_createToPairs.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\nvar toPairsIn = createToPairs(keysIn);\n\nexport default toPairsIn;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;'\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nexport default escapeHtmlChar;\n", "import escapeHtmlChar from './_escapeHtmlChar.js';\nimport toString from './toString.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n    reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\nfunction escape(string) {\n  string = toString(string);\n  return (string && reHasUnescapedHtml.test(string))\n    ? string.replace(reUnescapedHtml, escapeHtmlChar)\n    : string;\n}\n\nexport default escape;\n", "import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, '\\\\$&')\n    : string;\n}\n\nexport default escapeRegExp;\n", "/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`.\n */\nfunction arrayEvery(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (!predicate(array[index], index, array)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default arrayEvery;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`\n */\nfunction baseEvery(collection, predicate) {\n  var result = true;\n  baseEach(collection, function(value, index, collection) {\n    result = !!predicate(value, index, collection);\n    return result;\n  });\n  return result;\n}\n\nexport default baseEvery;\n", "import arrayEvery from './_arrayEvery.js';\nimport baseEvery from './_baseEvery.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': false },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n  var func = isArray(collection) ? arrayEvery : baseEvery;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default every;\n", "import baseClamp from './_baseClamp.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\nfunction toLength(value) {\n  return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n}\n\nexport default toLength;\n", "import toInteger from './toInteger.js';\nimport toLength from './toLength.js';\n\n/**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\nfunction baseFill(array, value, start, end) {\n  var length = array.length;\n\n  start = toInteger(start);\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = (end === undefined || end > length) ? length : toInteger(end);\n  if (end < 0) {\n    end += length;\n  }\n  end = start > end ? 0 : toLength(end);\n  while (start < end) {\n    array[start++] = value;\n  }\n  return array;\n}\n\nexport default baseFill;\n", "import baseFill from './_baseFill.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\nfunction fill(array, value, start, end) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n    start = 0;\n    end = length;\n  }\n  return baseFill(array, value, start, end);\n}\n\nexport default fill;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n  var result = [];\n  baseEach(collection, function(value, index, collection) {\n    if (predicate(value, index, collection)) {\n      result.push(value);\n    }\n  });\n  return result;\n}\n\nexport default baseFilter;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n", "import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n  return function(collection, predicate, fromIndex) {\n    var iterable = Object(collection);\n    if (!isArrayLike(collection)) {\n      var iteratee = baseIteratee(predicate, 3);\n      collection = keys(collection);\n      predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n    }\n    var index = findIndexFunc(collection, predicate, fromIndex);\n    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n  };\n}\n\nexport default createFind;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n", "import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': true },\n *   { 'user': 'fred',    'age': 40, 'active': false },\n *   { 'user': 'pebbles', 'age': 1,  'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n", "/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n  var result;\n  eachFunc(collection, function(value, key, collection) {\n    if (predicate(value, key, collection)) {\n      result = key;\n      return false;\n    }\n  });\n  return result;\n}\n\nexport default baseFindKey;\n", "import baseFindKey from './_baseFindKey.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n *  else `undefined`.\n * @example\n *\n * var users = {\n *   'barney':  { 'age': 36, 'active': true },\n *   'fred':    { 'age': 40, 'active': false },\n *   'pebbles': { 'age': 1,  'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\nfunction findKey(object, predicate) {\n  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);\n}\n\nexport default findKey;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = length - 1;\n  if (fromIndex !== undefined) {\n    index = toInteger(fromIndex);\n    index = fromIndex < 0\n      ? nativeMax(length + index, 0)\n      : nativeMin(index, length - 1);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nexport default findLastIndex;\n", "import createFind from './_createFind.js';\nimport findLastIndex from './findLastIndex.js';\n\n/**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n *   return n % 2 == 1;\n * });\n * // => 3\n */\nvar findLast = createFind(findLastIndex);\n\nexport default findLast;\n", "import baseFindKey from './_baseFindKey.js';\nimport baseForOwnRight from './_baseForOwnRight.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n *  else `undefined`.\n * @example\n *\n * var users = {\n *   'barney':  { 'age': 36, 'active': true },\n *   'fred':    { 'age': 40, 'active': false },\n *   'pebbles': { 'age': 1,  'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\nfunction findLastKey(object, predicate) {\n  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight);\n}\n\nexport default findLastKey;\n", "/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n  return (array && array.length) ? array[0] : undefined;\n}\n\nexport default head;\n", "import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nexport default baseMap;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n  return baseFlatten(map(collection, iteratee), 1);\n}\n\nexport default flatMap;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMapDeep(collection, iteratee) {\n  return baseFlatten(map(collection, iteratee), INFINITY);\n}\n\nexport default flatMapDeep;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\nimport toInteger from './toInteger.js';\n\n/**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\nfunction flatMapDepth(collection, iteratee, depth) {\n  depth = depth === undefined ? 1 : toInteger(depth);\n  return baseFlatten(map(collection, iteratee), depth);\n}\n\nexport default flatMapDepth;\n", "import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n", "import baseFlatten from './_baseFlatten.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\nfunction flattenDepth(array, depth) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  depth = depth === undefined ? 1 : toInteger(depth);\n  return baseFlatten(array, depth);\n}\n\nexport default flattenDepth;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n *   return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\nfunction flip(func) {\n  return createWrap(func, WRAP_FLIP_FLAG);\n}\n\nexport default flip;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\nvar floor = createRound('floor');\n\nexport default floor;\n", "import LodashWrapper from './_LodashWrapper.js';\nimport flatRest from './_flatRest.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport isArray from './isArray.js';\nimport isLaziable from './_isLaziable.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n    WRAP_PARTIAL_FLAG = 32,\n    WRAP_ARY_FLAG = 128,\n    WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n  return flatRest(function(funcs) {\n    var length = funcs.length,\n        index = length,\n        prereq = LodashWrapper.prototype.thru;\n\n    if (fromRight) {\n      funcs.reverse();\n    }\n    while (index--) {\n      var func = funcs[index];\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n        var wrapper = new LodashWrapper([], true);\n      }\n    }\n    index = wrapper ? index : length;\n    while (++index < length) {\n      func = funcs[index];\n\n      var funcName = getFuncName(func),\n          data = funcName == 'wrapper' ? getData(func) : undefined;\n\n      if (data && isLaziable(data[0]) &&\n            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n            !data[4].length && data[9] == 1\n          ) {\n        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n      } else {\n        wrapper = (func.length == 1 && isLaziable(func))\n          ? wrapper[funcName]()\n          : wrapper.thru(func);\n      }\n    }\n    return function() {\n      var args = arguments,\n          value = args[0];\n\n      if (wrapper && args.length == 1 && isArray(value)) {\n        return wrapper.plant(value).value();\n      }\n      var index = 0,\n          result = length ? funcs[index].apply(this, args) : value;\n\n      while (++index < length) {\n        result = funcs[index].call(this, result);\n      }\n      return result;\n    };\n  });\n}\n\nexport default createFlow;\n", "import createFlow from './_createFlow.js';\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nexport default flow;\n", "import createFlow from './_createFlow.js';\n\n/**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flowRight = createFlow(true);\n\nexport default flowRight;\n", "import baseFor from './_baseFor.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n  return object == null\n    ? object\n    : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nexport default forIn;\n", "import baseForRight from './_baseForRight.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\nfunction forInRight(object, iteratee) {\n  return object == null\n    ? object\n    : baseForRight(object, castFunction(iteratee), keysIn);\n}\n\nexport default forInRight;\n", "import baseForOwn from './_baseForOwn.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n  return object && baseForOwn(object, castFunction(iteratee));\n}\n\nexport default forOwn;\n", "import baseForOwnRight from './_baseForOwnRight.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\nfunction forOwnRight(object, iteratee) {\n  return object && baseForOwnRight(object, castFunction(iteratee));\n}\n\nexport default forOwnRight;\n", "/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n  var index = -1,\n      length = pairs == null ? 0 : pairs.length,\n      result = {};\n\n  while (++index < length) {\n    var pair = pairs[index];\n    result[pair[0]] = pair[1];\n  }\n  return result;\n}\n\nexport default fromPairs;\n", "import arrayFilter from './_arrayFilter.js';\nimport isFunction from './isFunction.js';\n\n/**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\nfunction baseFunctions(object, props) {\n  return arrayFilter(props, function(key) {\n    return isFunction(object[key]);\n  });\n}\n\nexport default baseFunctions;\n", "import baseFunctions from './_baseFunctions.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n *   this.a = _.constant('a');\n *   this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\nfunction functions(object) {\n  return object == null ? [] : baseFunctions(object, keys(object));\n}\n\nexport default functions;\n", "import baseFunctions from './_baseFunctions.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n *   this.a = _.constant('a');\n *   this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\nfunction functionsIn(object) {\n  return object == null ? [] : baseFunctions(object, keysIn(object));\n}\n\nexport default functionsIn;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nexport default groupBy;\n", "/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n *  else `false`.\n */\nfunction baseGt(value, other) {\n  return value > other;\n}\n\nexport default baseGt;\n", "import toNumber from './toNumber.js';\n\n/**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\nfunction createRelationalOperation(operator) {\n  return function(value, other) {\n    if (!(typeof value == 'string' && typeof other == 'string')) {\n      value = toNumber(value);\n      other = toNumber(other);\n    }\n    return operator(value, other);\n  };\n}\n\nexport default createRelationalOperation;\n", "import baseGt from './_baseGt.js';\nimport createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n *  else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\nvar gt = createRelationalOperation(baseGt);\n\nexport default gt;\n", "import createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n *  `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\nvar gte = createRelationalOperation(function(value, other) {\n  return value >= other;\n});\n\nexport default gte;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n  return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n", "import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n  return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\nfunction baseInRange(number, start, end) {\n  return number >= nativeMin(start, end) && number < nativeMax(start, end);\n}\n\nexport default baseInRange;\n", "import baseInRange from './_baseInRange.js';\nimport toFinite from './toFinite.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\nfunction inRange(number, start, end) {\n  start = toFinite(start);\n  if (end === undefined) {\n    end = start;\n    start = 0;\n  } else {\n    end = toFinite(end);\n  }\n  number = toNumber(number);\n  return baseInRange(number, start, end);\n}\n\nexport default inRange;\n", "import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\nexport default baseValues;\n", "import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport toInteger from './toInteger.js';\nimport values from './values.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n  collection = isArrayLike(collection) ? collection : values(collection);\n  fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n  var length = collection.length;\n  if (fromIndex < 0) {\n    fromIndex = nativeMax(length + fromIndex, 0);\n  }\n  return isString(collection)\n    ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n    : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nexport default includes;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\nfunction indexOf(array, value, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseIndexOf(array, value, index);\n}\n\nexport default indexOf;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\nfunction initial(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseSlice(array, 0, -1) : [];\n}\n\nexport default initial;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseIntersection;\n", "import isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nexport default castArrayLikeObject;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n  var mapped = arrayMap(arrays, castArrayLikeObject);\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped)\n    : [];\n});\n\nexport default intersection;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\nvar intersectionBy = baseRest(function(arrays) {\n  var iteratee = last(arrays),\n      mapped = arrayMap(arrays, castArrayLikeObject);\n\n  if (iteratee === last(mapped)) {\n    iteratee = undefined;\n  } else {\n    mapped.pop();\n  }\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped, baseIteratee(iteratee, 2))\n    : [];\n});\n\nexport default intersectionBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\nvar intersectionWith = baseRest(function(arrays) {\n  var comparator = last(arrays),\n      mapped = arrayMap(arrays, castArrayLikeObject);\n\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  if (comparator) {\n    mapped.pop();\n  }\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped, undefined, comparator)\n    : [];\n});\n\nexport default intersectionWith;\n", "import baseForOwn from './_baseForOwn.js';\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n  baseForOwn(object, function(value, key, object) {\n    setter(accumulator, iteratee(value), key, object);\n  });\n  return accumulator;\n}\n\nexport default baseInverter;\n", "import baseInverter from './_baseInverter.js';\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n  return function(object, iteratee) {\n    return baseInverter(object, setter, toIteratee(iteratee), {});\n  };\n}\n\nexport default createInverter;\n", "import constant from './constant.js';\nimport createInverter from './_createInverter.js';\nimport identity from './identity.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  result[value] = key;\n}, constant(identity));\n\nexport default invert;\n", "import baseIteratee from './_baseIteratee.js';\nimport createInverter from './_createInverter.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n *   return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\nvar invertBy = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  if (hasOwnProperty.call(result, value)) {\n    result[value].push(key);\n  } else {\n    result[value] = [key];\n  }\n}, baseIteratee);\n\nexport default invertBy;\n", "import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n", "import apply from './_apply.js';\nimport castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\nfunction baseInvoke(object, path, args) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  var func = object == null ? object : object[toKey(last(path))];\n  return func == null ? undefined : apply(func, object, args);\n}\n\nexport default baseInvoke;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\nvar invoke = baseRest(baseInvoke);\n\nexport default invoke;\n", "import apply from './_apply.js';\nimport baseEach from './_baseEach.js';\nimport baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n *  the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\nvar invokeMap = baseRest(function(collection, path, args) {\n  var index = -1,\n      isFunc = typeof path == 'function',\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value) {\n    result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n  });\n  return result;\n});\n\nexport default invokeMap;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\n\n/**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\nfunction baseIsArrayBuffer(value) {\n  return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n}\n\nexport default baseIsArrayBuffer;\n", "import baseIsArrayBuffer from './_baseIsArrayBuffer.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer;\n\n/**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\nvar isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\nexport default isArrayBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nexport default isBoolean;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar dateTag = '[object Date]';\n\n/**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\nfunction baseIsDate(value) {\n  return isObjectLike(value) && baseGetTag(value) == dateTag;\n}\n\nexport default baseIsDate;\n", "import baseIsDate from './_baseIsDate.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsDate = nodeUtil && nodeUtil.isDate;\n\n/**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\nvar isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\nexport default isDate;\n", "import isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\nfunction isElement(value) {\n  return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nexport default isElement;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default isEmpty;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n *   return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n *   if (isGreeting(objValue) && isGreeting(othValue)) {\n *     return true;\n *   }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  var result = customizer ? customizer(value, other) : undefined;\n  return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n", "import root from './_root.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite;\n\n/**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\nfunction isFinite(value) {\n  return typeof value == 'number' && nativeIsFinite(value);\n}\n\nexport default isFinite;\n", "import toInteger from './toInteger.js';\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n  return typeof value == 'number' && value == toInteger(value);\n}\n\nexport default isInteger;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\n\n/**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\nfunction isMatch(object, source) {\n  return object === source || baseIsMatch(object, source, getMatchData(source));\n}\n\nexport default isMatch;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\n\n/**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n *   return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n *     return true;\n *   }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\nfunction isMatchWith(object, source, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseIsMatch(object, source, getMatchData(source), customizer);\n}\n\nexport default isMatchWith;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nexport default isNumber;\n", "import isNumber from './isNumber.js';\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n  // An `NaN` primitive is the only value that is not equal to itself.\n  // Perform the `toStringTag` check first to avoid errors with some\n  // ActiveX objects in IE.\n  return isNumber(value) && value != +value;\n}\n\nexport default isNaN;\n", "import coreJsData from './_coreJsData.js';\nimport isFunction from './isFunction.js';\nimport stubFalse from './stubFalse.js';\n\n/**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\nvar isMaskable = coreJsData ? isFunction : stubFalse;\n\nexport default isMaskable;\n", "import baseIsNative from './_baseIsNative.js';\nimport isMaskable from './_isMaskable.js';\n\n/** Error message constants. */\nvar CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.';\n\n/**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n  if (isMaskable(value)) {\n    throw new Error(CORE_ERROR_TEXT);\n  }\n  return baseIsNative(value);\n}\n\nexport default isNative;\n", "/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nexport default isNil;\n", "/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n  return value === null;\n}\n\nexport default isNull;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n  return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nexport default baseIsRegExp;\n", "import baseIsRegExp from './_baseIsRegExp.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nexport default isRegExp;\n", "import isInteger from './isInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\nfunction isSafeInteger(value) {\n  return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isSafeInteger;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nexport default isUndefined;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n  return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nexport default isWeakMap;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar weakSetTag = '[object WeakSet]';\n\n/**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\nfunction isWeakSet(value) {\n  return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n}\n\nexport default isWeakSet;\n", "import baseClone from './_baseClone.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n *     return func.test(string);\n *   };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n  return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nexport default iteratee;\n", "/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeJoin = arrayProto.join;\n\n/**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\nfunction join(array, separator) {\n  return array == null ? '' : nativeJoin.call(array, separator);\n}\n\nexport default join;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n  return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nexport default kebabCase;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n *   { 'dir': 'left', 'code': 97 },\n *   { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n *   return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n  baseAssignValue(result, key, value);\n});\n\nexport default keyBy;\n", "/**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictLastIndexOf(array, value, fromIndex) {\n  var index = fromIndex + 1;\n  while (index--) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return index;\n}\n\nexport default strictLastIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictLastIndexOf from './_strictLastIndexOf.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\nfunction lastIndexOf(array, value, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = length;\n  if (fromIndex !== undefined) {\n    index = toInteger(fromIndex);\n    index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n  }\n  return value === value\n    ? strictLastIndexOf(array, value, index)\n    : baseFindIndex(array, baseIsNaN, index, true);\n}\n\nexport default lastIndexOf;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\nvar lowerCase = createCompounder(function(result, word, index) {\n  return result + (index ? ' ' : '') + word.toLowerCase();\n});\n\nexport default lowerCase;\n", "import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\nvar lowerFirst = createCaseFirst('toLowerCase');\n\nexport default lowerFirst;\n", "/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n *  else `false`.\n */\nfunction baseLt(value, other) {\n  return value < other;\n}\n\nexport default baseLt;\n", "import baseLt from './_baseLt.js';\nimport createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n *  else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\nvar lt = createRelationalOperation(baseLt);\n\nexport default lt;\n", "import createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n *  `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\nvar lte = createRelationalOperation(function(value, other) {\n  return value <= other;\n});\n\nexport default lte;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n *   return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, iteratee(value, key, object), value);\n  });\n  return result;\n}\n\nexport default mapKeys;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n *   'fred':    { 'user': 'fred',    'age': 40 },\n *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, key, iteratee(value, key, object));\n  });\n  return result;\n}\n\nexport default mapValues;\n", "import baseClone from './_baseClone.js';\nimport baseMatches from './_baseMatches.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n *   { 'a': 1, 'b': 2, 'c': 3 },\n *   { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matches(source) {\n  return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nexport default matches;\n", "import baseClone from './_baseClone.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n *   { 'a': 1, 'b': 2, 'c': 3 },\n *   { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matchesProperty(path, srcValue) {\n  return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n}\n\nexport default matchesProperty;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n  var index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var value = array[index],\n        current = iteratee(value);\n\n    if (current != null && (computed === undefined\n          ? (current === current && !isSymbol(current))\n          : comparator(current, computed)\n        )) {\n      var computed = current,\n          result = value;\n    }\n  }\n  return result;\n}\n\nexport default baseExtremum;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseGt)\n    : undefined;\n}\n\nexport default max;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n    : undefined;\n}\n\nexport default maxBy;\n", "/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n  var result,\n      index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var current = iteratee(array[index]);\n    if (current !== undefined) {\n      result = result === undefined ? current : (result + current);\n    }\n  }\n  return result;\n}\n\nexport default baseSum;\n", "import baseSum from './_baseSum.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\nfunction baseMean(array, iteratee) {\n  var length = array == null ? 0 : array.length;\n  return length ? (baseSum(array, iteratee) / length) : NAN;\n}\n\nexport default baseMean;\n", "import baseMean from './_baseMean.js';\nimport identity from './identity.js';\n\n/**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\nfunction mean(array) {\n  return baseMean(array, identity);\n}\n\nexport default mean;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseMean from './_baseMean.js';\n\n/**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\nfunction meanBy(array, iteratee) {\n  return baseMean(array, baseIteratee(iteratee, 2));\n}\n\nexport default meanBy;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': _.constant(2) } },\n *   { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\nvar method = baseRest(function(path, args) {\n  return function(object) {\n    return baseInvoke(object, path, args);\n  };\n});\n\nexport default method;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n *     object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\nvar methodOf = baseRest(function(object, args) {\n  return function(path) {\n    return baseInvoke(object, path, args);\n  };\n});\n\nexport default methodOf;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseLt)\n    : undefined;\n}\n\nexport default min;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseLt from './_baseLt.js';\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n    : undefined;\n}\n\nexport default minBy;\n", "import arrayEach from './_arrayEach.js';\nimport arrayPush from './_arrayPush.js';\nimport baseFunctions from './_baseFunctions.js';\nimport copyArray from './_copyArray.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport keys from './keys.js';\n\n/**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n *   return _.filter(string, function(v) {\n *     return /[aeiou]/i.test(v);\n *   });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\nfunction mixin(object, source, options) {\n  var props = keys(source),\n      methodNames = baseFunctions(source, props);\n\n  var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n      isFunc = isFunction(object);\n\n  arrayEach(methodNames, function(methodName) {\n    var func = source[methodName];\n    object[methodName] = func;\n    if (isFunc) {\n      object.prototype[methodName] = function() {\n        var chainAll = this.__chain__;\n        if (chain || chainAll) {\n          var result = object(this.__wrapped__),\n              actions = result.__actions__ = copyArray(this.__actions__);\n\n          actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n          result.__chain__ = chainAll;\n          return result;\n        }\n        return func.apply(object, arrayPush([this.value()], arguments));\n      };\n    }\n  });\n\n  return object;\n}\n\nexport default mixin;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\nvar multiply = createMathOperation(function(multiplier, multiplicand) {\n  return multiplier * multiplicand;\n}, 1);\n\nexport default multiply;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n *   return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n  if (typeof predicate != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  return function() {\n    var args = arguments;\n    switch (args.length) {\n      case 0: return !predicate.call(this);\n      case 1: return !predicate.call(this, args[0]);\n      case 2: return !predicate.call(this, args[0], args[1]);\n      case 3: return !predicate.call(this, args[0], args[1], args[2]);\n    }\n    return !predicate.apply(this, args);\n  };\n}\n\nexport default negate;\n", "/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n  var data,\n      result = [];\n\n  while (!(data = iterator.next()).done) {\n    result.push(data.value);\n  }\n  return result;\n}\n\nexport default iteratorToArray;\n", "import Symbol from './_Symbol.js';\nimport copyArray from './_copyArray.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport iteratorToArray from './_iteratorToArray.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\nimport stringToArray from './_stringToArray.js';\nimport values from './values.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n  if (!value) {\n    return [];\n  }\n  if (isArrayLike(value)) {\n    return isString(value) ? stringToArray(value) : copyArray(value);\n  }\n  if (symIterator && value[symIterator]) {\n    return iteratorToArray(value[symIterator]());\n  }\n  var tag = getTag(value),\n      func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n  return func(value);\n}\n\nexport default toArray;\n", "import toArray from './toArray.js';\n\n/**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\nfunction wrapperNext() {\n  if (this.__values__ === undefined) {\n    this.__values__ = toArray(this.value());\n  }\n  var done = this.__index__ >= this.__values__.length,\n      value = done ? undefined : this.__values__[this.__index__++];\n\n  return { 'done': done, 'value': value };\n}\n\nexport default wrapperNext;\n", "import isIndex from './_isIndex.js';\n\n/**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\nfunction baseNth(array, n) {\n  var length = array.length;\n  if (!length) {\n    return;\n  }\n  n += n < 0 ? length : 0;\n  return isIndex(n, length) ? array[n] : undefined;\n}\n\nexport default baseNth;\n", "import baseNth from './_baseNth.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\nfunction nth(array, n) {\n  return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n}\n\nexport default nth;\n", "import baseNth from './_baseNth.js';\nimport baseRest from './_baseRest.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\nfunction nthArg(n) {\n  n = toInteger(n);\n  return baseRest(function(args) {\n    return baseNth(args, n);\n  });\n}\n\nexport default nthArg;\n", "import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n", "import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n", "import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nexport default omit;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nexport default basePickBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n  if (object == null) {\n    return {};\n  }\n  var props = arrayMap(getAllKeysIn(object), function(prop) {\n    return [prop];\n  });\n  predicate = baseIteratee(predicate);\n  return basePickBy(object, props, function(value, path) {\n    return predicate(value, path[0]);\n  });\n}\n\nexport default pickBy;\n", "import baseIteratee from './_baseIteratee.js';\nimport negate from './negate.js';\nimport pickBy from './pickBy.js';\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n  return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nexport default omitBy;\n", "import before from './before.js';\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n  return before(2, func);\n}\n\nexport default once;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nexport default baseSortBy;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nexport default compareAscending;\n", "import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nexport default compareMultiple;\n", "import arrayMap from './_arrayMap.js';\nimport baseGet from './_baseGet.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        }\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nexport default baseOrderBy;\n", "import baseOrderBy from './_baseOrderBy.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 34 },\n *   { 'user': 'fred',   'age': 40 },\n *   { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n  if (collection == null) {\n    return [];\n  }\n  if (!isArray(iteratees)) {\n    iteratees = iteratees == null ? [] : [iteratees];\n  }\n  orders = guard ? undefined : orders;\n  if (!isArray(orders)) {\n    orders = orders == null ? [] : [orders];\n  }\n  return baseOrderBy(collection, iteratees, orders);\n}\n\nexport default orderBy;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUnary from './_baseUnary.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\nfunction createOver(arrayFunc) {\n  return flatRest(function(iteratees) {\n    iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n    return baseRest(function(args) {\n      var thisArg = this;\n      return arrayFunc(iteratees, function(iteratee) {\n        return apply(iteratee, thisArg, args);\n      });\n    });\n  });\n}\n\nexport default createOver;\n", "import arrayMap from './_arrayMap.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\nvar over = createOver(arrayMap);\n\nexport default over;\n", "import baseRest from './_baseRest.js';\n\n/**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nvar castRest = baseRest;\n\nexport default castRest;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUnary from './_baseUnary.js';\nimport castRest from './_castRest.js';\nimport isArray from './isArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n *  The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n *   return n * 2;\n * }\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n *   return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\nvar overArgs = castRest(function(func, transforms) {\n  transforms = (transforms.length == 1 && isArray(transforms[0]))\n    ? arrayMap(transforms[0], baseUnary(baseIteratee))\n    : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee));\n\n  var funcsLength = transforms.length;\n  return baseRest(function(args) {\n    var index = -1,\n        length = nativeMin(args.length, funcsLength);\n\n    while (++index < length) {\n      args[index] = transforms[index].call(this, args[index]);\n    }\n    return apply(func, this, args);\n  });\n});\n\nexport default overArgs;\n", "import arrayEvery from './_arrayEvery.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n *  The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\nvar overEvery = createOver(arrayEvery);\n\nexport default overEvery;\n", "import arraySome from './_arraySome.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n *  The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\nvar overSome = createOver(arraySome);\n\nexport default overSome;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n  var result = '';\n  if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n    return result;\n  }\n  // Leverage the exponentiation by squaring algorithm for a faster repeat.\n  // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n  do {\n    if (n % 2) {\n      result += string;\n    }\n    n = nativeFloor(n / 2);\n    if (n) {\n      string += string;\n    }\n  } while (n);\n\n  return result;\n}\n\nexport default baseRepeat;\n", "import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n  var result = reUnicode.lastIndex = 0;\n  while (reUnicode.test(string)) {\n    ++result;\n  }\n  return result;\n}\n\nexport default unicodeSize;\n", "import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n  return hasUnicode(string)\n    ? unicodeSize(string)\n    : asciiSize(string);\n}\n\nexport default stringSize;\n", "import baseRepeat from './_baseRepeat.js';\nimport baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringSize from './_stringSize.js';\nimport stringToArray from './_stringToArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\n\n/**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\nfunction createPadding(length, chars) {\n  chars = chars === undefined ? ' ' : baseToString(chars);\n\n  var charsLength = chars.length;\n  if (charsLength < 2) {\n    return charsLength ? baseRepeat(chars, length) : chars;\n  }\n  var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n  return hasUnicode(chars)\n    ? castSlice(stringToArray(result), 0, length).join('')\n    : result.slice(0, length);\n}\n\nexport default createPadding;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeFloor = Math.floor;\n\n/**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => '  abc   '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\nfunction pad(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  if (!length || strLength >= length) {\n    return string;\n  }\n  var mid = (length - strLength) / 2;\n  return (\n    createPadding(nativeFloor(mid), chars) +\n    string +\n    createPadding(nativeCeil(mid), chars)\n  );\n}\n\nexport default pad;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc   '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\nfunction padEnd(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  return (length && strLength < length)\n    ? (string + createPadding(length - strLength, chars))\n    : string;\n}\n\nexport default padEnd;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => '   abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\nfunction padStart(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  return (length && strLength < length)\n    ? (createPadding(length - strLength, chars) + string)\n    : string;\n}\n\nexport default padStart;\n", "import root from './_root.js';\nimport toString from './toString.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeParseInt = root.parseInt;\n\n/**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\nfunction parseInt(string, radix, guard) {\n  if (guard || radix == null) {\n    radix = 0;\n  } else if (radix) {\n    radix = +radix;\n  }\n  return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n}\n\nexport default parseInt;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n *   return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\nvar partial = baseRest(function(func, partials) {\n  var holders = replaceHolders(partials, getHolder(partial));\n  return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartial.placeholder = {};\n\nexport default partial;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n *   return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\nvar partialRight = baseRest(function(func, partials) {\n  var holders = replaceHolders(partials, getHolder(partialRight));\n  return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartialRight.placeholder = {};\n\nexport default partialRight;\n", "import createAggregator from './_createAggregator.js';\n\n/**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': false },\n *   { 'user': 'fred',    'age': 40, 'active': true },\n *   { 'user': 'pebbles', 'age': 1,  'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\nvar partition = createAggregator(function(result, value, key) {\n  result[key ? 0 : 1].push(value);\n}, function() { return [[], []]; });\n\nexport default partition;\n", "import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nexport default basePick;\n", "import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n", "import baseLodash from './_baseLodash.js';\nimport wrapperClone from './_wrapperClone.js';\n\n/**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\nfunction wrapperPlant(value) {\n  var result,\n      parent = this;\n\n  while (parent instanceof baseLodash) {\n    var clone = wrapperClone(parent);\n    clone.__index__ = 0;\n    clone.__values__ = undefined;\n    if (result) {\n      previous.__wrapped__ = clone;\n    } else {\n      result = clone;\n    }\n    var previous = clone;\n    parent = parent.__wrapped__;\n  }\n  previous.__wrapped__ = value;\n  return result;\n}\n\nexport default wrapperPlant;\n", "import baseGet from './_baseGet.js';\n\n/**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n *     object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\nfunction propertyOf(object) {\n  return function(path) {\n    return object == null ? undefined : baseGet(object, path);\n  };\n}\n\nexport default propertyOf;\n", "/**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOfWith(array, value, fromIndex, comparator) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (comparator(array[index], value)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseIndexOfWith;\n", "import arrayMap from './_arrayMap.js';\nimport baseIndexOf from './_baseIndexOf.js';\nimport baseIndexOfWith from './_baseIndexOfWith.js';\nimport baseUnary from './_baseUnary.js';\nimport copyArray from './_copyArray.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAll(array, values, iteratee, comparator) {\n  var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n      index = -1,\n      length = values.length,\n      seen = array;\n\n  if (array === values) {\n    values = copyArray(values);\n  }\n  if (iteratee) {\n    seen = arrayMap(array, baseUnary(iteratee));\n  }\n  while (++index < length) {\n    var fromIndex = 0,\n        value = values[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n      if (seen !== array) {\n        splice.call(seen, fromIndex, 1);\n      }\n      splice.call(array, fromIndex, 1);\n    }\n  }\n  return array;\n}\n\nexport default basePullAll;\n", "import basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\nfunction pullAll(array, values) {\n  return (array && array.length && values && values.length)\n    ? basePullAll(array, values)\n    : array;\n}\n\nexport default pullAll;\n", "import baseRest from './_baseRest.js';\nimport pullAll from './pullAll.js';\n\n/**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\nvar pull = baseRest(pullAll);\n\nexport default pull;\n", "import baseIteratee from './_baseIteratee.js';\nimport basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\nfunction pullAllBy(array, values, iteratee) {\n  return (array && array.length && values && values.length)\n    ? basePullAll(array, values, baseIteratee(iteratee, 2))\n    : array;\n}\n\nexport default pullAllBy;\n", "import basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\nfunction pullAllWith(array, values, comparator) {\n  return (array && array.length && values && values.length)\n    ? basePullAll(array, values, undefined, comparator)\n    : array;\n}\n\nexport default pullAllWith;\n", "import baseUnset from './_baseUnset.js';\nimport isIndex from './_isIndex.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n  var length = array ? indexes.length : 0,\n      lastIndex = length - 1;\n\n  while (length--) {\n    var index = indexes[length];\n    if (length == lastIndex || index !== previous) {\n      var previous = index;\n      if (isIndex(index)) {\n        splice.call(array, index, 1);\n      } else {\n        baseUnset(array, index);\n      }\n    }\n  }\n  return array;\n}\n\nexport default basePullAt;\n", "import arrayMap from './_arrayMap.js';\nimport baseAt from './_baseAt.js';\nimport basePullAt from './_basePullAt.js';\nimport compareAscending from './_compareAscending.js';\nimport flatRest from './_flatRest.js';\nimport isIndex from './_isIndex.js';\n\n/**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\nvar pullAt = flatRest(function(array, indexes) {\n  var length = array == null ? 0 : array.length,\n      result = baseAt(array, indexes);\n\n  basePullAt(array, arrayMap(indexes, function(index) {\n    return isIndex(index, length) ? +index : index;\n  }).sort(compareAscending));\n\n  return result;\n});\n\nexport default pullAt;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n    nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n  return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nexport default baseRandom;\n", "import baseRandom from './_baseRandom.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseFloat = parseFloat;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min,\n    nativeRandom = Math.random;\n\n/**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\nfunction random(lower, upper, floating) {\n  if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n    upper = floating = undefined;\n  }\n  if (floating === undefined) {\n    if (typeof upper == 'boolean') {\n      floating = upper;\n      upper = undefined;\n    }\n    else if (typeof lower == 'boolean') {\n      floating = lower;\n      lower = undefined;\n    }\n  }\n  if (lower === undefined && upper === undefined) {\n    lower = 0;\n    upper = 1;\n  }\n  else {\n    lower = toFinite(lower);\n    if (upper === undefined) {\n      upper = lower;\n      lower = 0;\n    } else {\n      upper = toFinite(upper);\n    }\n  }\n  if (lower > upper) {\n    var temp = lower;\n    lower = upper;\n    upper = temp;\n  }\n  if (floating || lower % 1 || upper % 1) {\n    var rand = nativeRandom();\n    return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n  }\n  return baseRandom(lower, upper);\n}\n\nexport default random;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nexport default baseRange;\n", "import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nexport default createRange;\n", "import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n", "import createRange from './_createRange.js';\n\n/**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\nvar rangeRight = createRange(true);\n\nexport default rangeRight;\n", "import createWrap from './_createWrap.js';\nimport flatRest from './_flatRest.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n *   return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n  return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nexport default rearg;\n", "/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n *  `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n  eachFunc(collection, function(value, index, collection) {\n    accumulator = initAccum\n      ? (initAccum = false, value)\n      : iteratee(accumulator, value, index, collection);\n  });\n  return accumulator;\n}\n\nexport default baseReduce;\n", "import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n *   return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n *   return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduce : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n", "/**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduceRight(array, iteratee, accumulator, initAccum) {\n  var length = array == null ? 0 : array.length;\n  if (initAccum && length) {\n    accumulator = array[--length];\n  }\n  while (length--) {\n    accumulator = iteratee(accumulator, array[length], length, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduceRight;\n", "import arrayReduceRight from './_arrayReduceRight.js';\nimport baseEachRight from './_baseEachRight.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n *   return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\nfunction reduceRight(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduceRight : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n}\n\nexport default reduceRight;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport negate from './negate.js';\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': false },\n *   { 'user': 'fred',   'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nexport default reject;\n", "import baseIteratee from './_baseIteratee.js';\nimport basePullAt from './_basePullAt.js';\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n *   return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n  var result = [];\n  if (!(array && array.length)) {\n    return result;\n  }\n  var index = -1,\n      indexes = [],\n      length = array.length;\n\n  predicate = baseIteratee(predicate, 3);\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result.push(value);\n      indexes.push(index);\n    }\n  }\n  basePullAt(array, indexes);\n  return result;\n}\n\nexport default remove;\n", "import baseRepeat from './_baseRepeat.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\nfunction repeat(string, n, guard) {\n  if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n    n = 1;\n  } else {\n    n = toInteger(n);\n  }\n  return baseRepeat(toString(string), n);\n}\n\nexport default repeat;\n", "import toString from './toString.js';\n\n/**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\nfunction replace() {\n  var args = arguments,\n      string = toString(args[0]);\n\n  return args.length < 3 ? string : string.replace(args[1], args[2]);\n}\n\nexport default replace;\n", "import baseRest from './_baseRest.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n *   return what + ' ' + _.initial(names).join(', ') +\n *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  start = start === undefined ? start : toInteger(start);\n  return baseRest(func, start);\n}\n\nexport default rest;\n", "import castPath from './_castPath.js';\nimport isFunction from './isFunction.js';\nimport toKey from './_toKey.js';\n\n/**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\nfunction result(object, path, defaultValue) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length;\n\n  // Ensure the loop is entered when path is empty.\n  if (!length) {\n    length = 1;\n    object = undefined;\n  }\n  while (++index < length) {\n    var value = object == null ? undefined : object[toKey(path[index])];\n    if (value === undefined) {\n      index = length;\n      value = defaultValue;\n    }\n    object = isFunction(value) ? value.call(object) : value;\n  }\n  return object;\n}\n\nexport default result;\n", "/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeReverse = arrayProto.reverse;\n\n/**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\nfunction reverse(array) {\n  return array == null ? array : nativeReverse.call(array);\n}\n\nexport default reverse;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nexport default round;\n", "import baseRandom from './_baseRandom.js';\n\n/**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\nfunction arraySample(array) {\n  var length = array.length;\n  return length ? array[baseRandom(0, length - 1)] : undefined;\n}\n\nexport default arraySample;\n", "import arraySample from './_arraySample.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\nfunction baseSample(collection) {\n  return arraySample(values(collection));\n}\n\nexport default baseSample;\n", "import arraySample from './_arraySample.js';\nimport baseSample from './_baseSample.js';\nimport isArray from './isArray.js';\n\n/**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\nfunction sample(collection) {\n  var func = isArray(collection) ? arraySample : baseSample;\n  return func(collection);\n}\n\nexport default sample;\n", "import baseRandom from './_baseRandom.js';\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n  var index = -1,\n      length = array.length,\n      lastIndex = length - 1;\n\n  size = size === undefined ? length : size;\n  while (++index < size) {\n    var rand = baseRandom(index, lastIndex),\n        value = array[rand];\n\n    array[rand] = array[index];\n    array[index] = value;\n  }\n  array.length = size;\n  return array;\n}\n\nexport default shuffleSelf;\n", "import baseClamp from './_baseClamp.js';\nimport copyArray from './_copyArray.js';\nimport shuffleSelf from './_shuffleSelf.js';\n\n/**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\nfunction arraySampleSize(array, n) {\n  return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n}\n\nexport default arraySampleSize;\n", "import baseClamp from './_baseClamp.js';\nimport shuffleSelf from './_shuffleSelf.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\nfunction baseSampleSize(collection, n) {\n  var array = values(collection);\n  return shuffleSelf(array, baseClamp(n, 0, array.length));\n}\n\nexport default baseSampleSize;\n", "import arraySampleSize from './_arraySampleSize.js';\nimport baseSampleSize from './_baseSampleSize.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\nfunction sampleSize(collection, n, guard) {\n  if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n    n = 1;\n  } else {\n    n = toInteger(n);\n  }\n  var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n  return func(collection, n);\n}\n\nexport default sampleSize;\n", "import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n  return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n", "import baseSet from './_baseSet.js';\n\n/**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\nfunction setWith(object, path, value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return object == null ? object : baseSet(object, path, value, customizer);\n}\n\nexport default setWith;\n", "import copyArray from './_copyArray.js';\nimport shuffleSelf from './_shuffleSelf.js';\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n  return shuffleSelf(copyArray(array));\n}\n\nexport default arrayShuffle;\n", "import shuffleSelf from './_shuffleSelf.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n  return shuffleSelf(values(collection));\n}\n\nexport default baseShuffle;\n", "import arrayShuffle from './_arrayShuffle.js';\nimport baseShuffle from './_baseShuffle.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n  var func = isArray(collection) ? arrayShuffle : baseShuffle;\n  return func(collection);\n}\n\nexport default shuffle;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n  if (collection == null) {\n    return 0;\n  }\n  if (isArrayLike(collection)) {\n    return isString(collection) ? stringSize(collection) : collection.length;\n  }\n  var tag = getTag(collection);\n  if (tag == mapTag || tag == setTag) {\n    return collection.size;\n  }\n  return baseKeys(collection).length;\n}\n\nexport default size;\n", "import baseSlice from './_baseSlice.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n    start = 0;\n    end = length;\n  }\n  else {\n    start = start == null ? 0 : toInteger(start);\n    end = end === undefined ? length : toInteger(end);\n  }\n  return baseSlice(array, start, end);\n}\n\nexport default slice;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n  return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction baseSome(collection, predicate) {\n  var result;\n\n  baseEach(collection, function(value, index, collection) {\n    result = predicate(value, index, collection);\n    return !result;\n  });\n  return !!result;\n}\n\nexport default baseSome;\n", "import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n *   { 'user': 'barney', 'active': true },\n *   { 'user': 'fred',   'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n  var func = isArray(collection) ? arraySome : baseSome;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n    MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n    nativeMin = Math.min;\n\n/**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n */\nfunction baseSortedIndexBy(array, value, iteratee, retHighest) {\n  var low = 0,\n      high = array == null ? 0 : array.length;\n  if (high === 0) {\n    return 0;\n  }\n\n  value = iteratee(value);\n  var valIsNaN = value !== value,\n      valIsNull = value === null,\n      valIsSymbol = isSymbol(value),\n      valIsUndefined = value === undefined;\n\n  while (low < high) {\n    var mid = nativeFloor((low + high) / 2),\n        computed = iteratee(array[mid]),\n        othIsDefined = computed !== undefined,\n        othIsNull = computed === null,\n        othIsReflexive = computed === computed,\n        othIsSymbol = isSymbol(computed);\n\n    if (valIsNaN) {\n      var setLow = retHighest || othIsReflexive;\n    } else if (valIsUndefined) {\n      setLow = othIsReflexive && (retHighest || othIsDefined);\n    } else if (valIsNull) {\n      setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n    } else if (valIsSymbol) {\n      setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n    } else if (othIsNull || othIsSymbol) {\n      setLow = false;\n    } else {\n      setLow = retHighest ? (computed <= value) : (computed < value);\n    }\n    if (setLow) {\n      low = mid + 1;\n    } else {\n      high = mid;\n    }\n  }\n  return nativeMin(high, MAX_ARRAY_INDEX);\n}\n\nexport default baseSortedIndexBy;\n", "import baseSortedIndexBy from './_baseSortedIndexBy.js';\nimport identity from './identity.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n    HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n/**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n */\nfunction baseSortedIndex(array, value, retHighest) {\n  var low = 0,\n      high = array == null ? low : array.length;\n\n  if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n    while (low < high) {\n      var mid = (low + high) >>> 1,\n          computed = array[mid];\n\n      if (computed !== null && !isSymbol(computed) &&\n          (retHighest ? (computed <= value) : (computed < value))) {\n        low = mid + 1;\n      } else {\n        high = mid;\n      }\n    }\n    return high;\n  }\n  return baseSortedIndexBy(array, value, identity, retHighest);\n}\n\nexport default baseSortedIndex;\n", "import baseSortedIndex from './_baseSortedIndex.js';\n\n/**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\nfunction sortedIndex(array, value) {\n  return baseSortedIndex(array, value);\n}\n\nexport default sortedIndex;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedIndexBy from './_baseSortedIndexBy.js';\n\n/**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\nfunction sortedIndexBy(array, value, iteratee) {\n  return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2));\n}\n\nexport default sortedIndexBy;\n", "import baseSortedIndex from './_baseSortedIndex.js';\nimport eq from './eq.js';\n\n/**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\nfunction sortedIndexOf(array, value) {\n  var length = array == null ? 0 : array.length;\n  if (length) {\n    var index = baseSortedIndex(array, value);\n    if (index < length && eq(array[index], value)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default sortedIndexOf;\n", "import baseSortedIndex from './_baseSortedIndex.js';\n\n/**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\nfunction sortedLastIndex(array, value) {\n  return baseSortedIndex(array, value, true);\n}\n\nexport default sortedLastIndex;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedIndexBy from './_baseSortedIndexBy.js';\n\n/**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n *  into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\nfunction sortedLastIndexBy(array, value, iteratee) {\n  return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2), true);\n}\n\nexport default sortedLastIndexBy;\n", "import baseSortedIndex from './_baseSortedIndex.js';\nimport eq from './eq.js';\n\n/**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\nfunction sortedLastIndexOf(array, value) {\n  var length = array == null ? 0 : array.length;\n  if (length) {\n    var index = baseSortedIndex(array, value, true) - 1;\n    if (eq(array[index], value)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default sortedLastIndexOf;\n", "import eq from './eq.js';\n\n/**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseSortedUniq(array, iteratee) {\n  var index = -1,\n      length = array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    if (!index || !eq(computed, seen)) {\n      var seen = computed;\n      result[resIndex++] = value === 0 ? 0 : value;\n    }\n  }\n  return result;\n}\n\nexport default baseSortedUniq;\n", "import baseSortedUniq from './_baseSortedUniq.js';\n\n/**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\nfunction sortedUniq(array) {\n  return (array && array.length)\n    ? baseSortedUniq(array)\n    : [];\n}\n\nexport default sortedUniq;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedUniq from './_baseSortedUniq.js';\n\n/**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\nfunction sortedUniqBy(array, iteratee) {\n  return (array && array.length)\n    ? baseSortedUniq(array, baseIteratee(iteratee, 2))\n    : [];\n}\n\nexport default sortedUniqBy;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport isRegExp from './isRegExp.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\nfunction split(string, separator, limit) {\n  if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n    separator = limit = undefined;\n  }\n  limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n  if (!limit) {\n    return [];\n  }\n  string = toString(string);\n  if (string && (\n        typeof separator == 'string' ||\n        (separator != null && !isRegExp(separator))\n      )) {\n    separator = baseToString(separator);\n    if (!separator && hasUnicode(string)) {\n      return castSlice(stringToArray(string), 0, limit);\n    }\n  }\n  return string.split(separator, limit);\n}\n\nexport default split;\n", "import apply from './_apply.js';\nimport arrayPush from './_arrayPush.js';\nimport baseRest from './_baseRest.js';\nimport castSlice from './_castSlice.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n *   return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n *   Promise.resolve(40),\n *   Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n *   return x + y;\n * }));\n * // => a Promise of 76\n */\nfunction spread(func, start) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  start = start == null ? 0 : nativeMax(toInteger(start), 0);\n  return baseRest(function(args) {\n    var array = args[start],\n        otherArgs = castSlice(args, 0, start);\n\n    if (array) {\n      arrayPush(otherArgs, array);\n    }\n    return apply(func, this, otherArgs);\n  });\n}\n\nexport default spread;\n", "import createCompounder from './_createCompounder.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\nvar startCase = createCompounder(function(result, word, index) {\n  return result + (index ? ' ' : '') + upperFirst(word);\n});\n\nexport default startCase;\n", "import baseClamp from './_baseClamp.js';\nimport baseToString from './_baseToString.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n *  else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\nfunction startsWith(string, target, position) {\n  string = toString(string);\n  position = position == null\n    ? 0\n    : baseClamp(toInteger(position), 0, string.length);\n\n  target = baseToString(target);\n  return string.slice(position, position + target.length) == target;\n}\n\nexport default startsWith;\n", "/**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\nfunction stubObject() {\n  return {};\n}\n\nexport default stubObject;\n", "/**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\nfunction stubString() {\n  return '';\n}\n\nexport default stubString;\n", "/**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\nfunction stubTrue() {\n  return true;\n}\n\nexport default stubTrue;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\nvar subtract = createMathOperation(function(minuend, subtrahend) {\n  return minuend - subtrahend;\n}, 0);\n\nexport default subtract;\n", "import baseSum from './_baseSum.js';\nimport identity from './identity.js';\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n  return (array && array.length)\n    ? baseSum(array, identity)\n    : 0;\n}\n\nexport default sum;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSum from './_baseSum.js';\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n  return (array && array.length)\n    ? baseSum(array, baseIteratee(iteratee, 2))\n    : 0;\n}\n\nexport default sumBy;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\nfunction tail(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseSlice(array, 1, length) : [];\n}\n\nexport default tail;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n  if (!(array && array.length)) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default take;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\nfunction takeRight(array, n, guard) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return [];\n  }\n  n = (guard || n === undefined) ? 1 : toInteger(n);\n  n = length - n;\n  return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default takeRight;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\nfunction takeRightWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3), false, true)\n    : [];\n}\n\nexport default takeRightWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\nfunction takeWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3))\n    : [];\n}\n\nexport default takeWhile;\n", "/**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n *  .tap(function(array) {\n *    // Mutate input array.\n *    array.pop();\n *  })\n *  .reverse()\n *  .value();\n * // => [2, 1]\n */\nfunction tap(value, interceptor) {\n  interceptor(value);\n  return value;\n}\n\nexport default tap;\n", "import eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsAssignIn(objValue, srcValue, key, object) {\n  if (objValue === undefined ||\n      (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n    return srcValue;\n  }\n  return objValue;\n}\n\nexport default customDefaultsAssignIn;\n", "/** Used to escape characters for inclusion in compiled string literals. */\nvar stringEscapes = {\n  '\\\\': '\\\\',\n  \"'\": \"'\",\n  '\\n': 'n',\n  '\\r': 'r',\n  '\\u2028': 'u2028',\n  '\\u2029': 'u2029'\n};\n\n/**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nfunction escapeStringChar(chr) {\n  return '\\\\' + stringEscapes[chr];\n}\n\nexport default escapeStringChar;\n", "/** Used to match template delimiters. */\nvar reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\nexport default reInterpolate;\n", "/** Used to match template delimiters. */\nvar reEscape = /<%-([\\s\\S]+?)%>/g;\n\nexport default reEscape;\n", "/** Used to match template delimiters. */\nvar reEvaluate = /<%([\\s\\S]+?)%>/g;\n\nexport default reEvaluate;\n", "import escape from './escape.js';\nimport reEscape from './_reEscape.js';\nimport reEvaluate from './_reEvaluate.js';\nimport reInterpolate from './_reInterpolate.js';\n\n/**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\nvar templateSettings = {\n\n  /**\n   * Used to detect `data` property values to be HTML-escaped.\n   *\n   * @memberOf _.templateSettings\n   * @type {RegExp}\n   */\n  'escape': reEscape,\n\n  /**\n   * Used to detect code to be evaluated.\n   *\n   * @memberOf _.templateSettings\n   * @type {RegExp}\n   */\n  'evaluate': reEvaluate,\n\n  /**\n   * Used to detect `data` property values to inject.\n   *\n   * @memberOf _.templateSettings\n   * @type {RegExp}\n   */\n  'interpolate': reInterpolate,\n\n  /**\n   * Used to reference the data object in the template text.\n   *\n   * @memberOf _.templateSettings\n   * @type {string}\n   */\n  'variable': '',\n\n  /**\n   * Used to import variables into the compiled template.\n   *\n   * @memberOf _.templateSettings\n   * @type {Object}\n   */\n  'imports': {\n\n    /**\n     * A reference to the `lodash` function.\n     *\n     * @memberOf _.templateSettings.imports\n     * @type {Function}\n     */\n    '_': { 'escape': escape }\n  }\n};\n\nexport default templateSettings;\n", "import assignInWith from './assignInWith.js';\nimport attempt from './attempt.js';\nimport baseValues from './_baseValues.js';\nimport customDefaultsAssignIn from './_customDefaultsAssignIn.js';\nimport escapeStringChar from './_escapeStringChar.js';\nimport isError from './isError.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keys from './keys.js';\nimport reInterpolate from './_reInterpolate.js';\nimport templateSettings from './templateSettings.js';\nimport toString from './toString.js';\n\n/** Error message constants. */\nvar INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n/** Used to match empty string literals in compiled template source. */\nvar reEmptyStringLeading = /\\b__p \\+= '';/g,\n    reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n    reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n/**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\nvar reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n/**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\nvar reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n/** Used to ensure capturing order of template delimiters. */\nvar reNoMatch = /($^)/;\n\n/** Used to match unescaped characters in compiled string literals. */\nvar reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n *  The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n *  The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n *  An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n *  The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='templateSources[n]']\n *  The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n *  The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b>&lt;script&gt;</b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * //   var __t, __p = '';\n * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * //   return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n *   var JST = {\\\n *     \"main\": ' + _.template(mainText).source + '\\\n *   };\\\n * ');\n */\nfunction template(string, options, guard) {\n  // Based on John Resig's `tmpl` implementation\n  // (http://ejohn.org/blog/javascript-micro-templating/)\n  // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n  var settings = templateSettings.imports._.templateSettings || templateSettings;\n\n  if (guard && isIterateeCall(string, options, guard)) {\n    options = undefined;\n  }\n  string = toString(string);\n  options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n  var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n      importsKeys = keys(imports),\n      importsValues = baseValues(imports, importsKeys);\n\n  var isEscaping,\n      isEvaluating,\n      index = 0,\n      interpolate = options.interpolate || reNoMatch,\n      source = \"__p += '\";\n\n  // Compile the regexp to match each delimiter.\n  var reDelimiters = RegExp(\n    (options.escape || reNoMatch).source + '|' +\n    interpolate.source + '|' +\n    (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n    (options.evaluate || reNoMatch).source + '|$'\n  , 'g');\n\n  // Use a sourceURL for easier debugging.\n  // The sourceURL gets injected into the source that's eval-ed, so be careful\n  // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n  // and escape the comment, thus injecting code that gets evaled.\n  var sourceURL = hasOwnProperty.call(options, 'sourceURL')\n    ? ('//# sourceURL=' +\n       (options.sourceURL + '').replace(/\\s/g, ' ') +\n       '\\n')\n    : '';\n\n  string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n    interpolateValue || (interpolateValue = esTemplateValue);\n\n    // Escape characters that can't be included in string literals.\n    source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n    // Replace delimiters with snippets.\n    if (escapeValue) {\n      isEscaping = true;\n      source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n    }\n    if (evaluateValue) {\n      isEvaluating = true;\n      source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n    }\n    if (interpolateValue) {\n      source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n    }\n    index = offset + match.length;\n\n    // The JS engine embedded in Adobe products needs `match` returned in\n    // order to produce the correct `offset` value.\n    return match;\n  });\n\n  source += \"';\\n\";\n\n  // If `variable` is not specified wrap a with-statement around the generated\n  // code to add the data object to the top of the scope chain.\n  var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n  if (!variable) {\n    source = 'with (obj) {\\n' + source + '\\n}\\n';\n  }\n  // Throw an error if a forbidden character was found in `variable`, to prevent\n  // potential command injection attacks.\n  else if (reForbiddenIdentifierChars.test(variable)) {\n    throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n  }\n\n  // Cleanup code by stripping empty strings.\n  source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n    .replace(reEmptyStringMiddle, '$1')\n    .replace(reEmptyStringTrailing, '$1;');\n\n  // Frame code as the function body.\n  source = 'function(' + (variable || 'obj') + ') {\\n' +\n    (variable\n      ? ''\n      : 'obj || (obj = {});\\n'\n    ) +\n    \"var __t, __p = ''\" +\n    (isEscaping\n       ? ', __e = _.escape'\n       : ''\n    ) +\n    (isEvaluating\n      ? ', __j = Array.prototype.join;\\n' +\n        \"function print() { __p += __j.call(arguments, '') }\\n\"\n      : ';\\n'\n    ) +\n    source +\n    'return __p\\n}';\n\n  var result = attempt(function() {\n    return Function(importsKeys, sourceURL + 'return ' + source)\n      .apply(undefined, importsValues);\n  });\n\n  // Provide the compiled function's source by its `toString` method or\n  // the `source` property as a convenience for inlining compiled templates.\n  result.source = source;\n  if (isError(result)) {\n    throw result;\n  }\n  return result;\n}\n\nexport default template;\n", "import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nexport default throttle;\n", "/**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _('  abc  ')\n *  .chain()\n *  .trim()\n *  .thru(function(value) {\n *    return [value];\n *  })\n *  .value();\n * // => ['abc']\n */\nfunction thru(value, interceptor) {\n  return interceptor(value);\n}\n\nexport default thru;\n", "import baseTimes from './_baseTimes.js';\nimport castFunction from './_castFunction.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n *  _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\nfunction times(n, iteratee) {\n  n = toInteger(n);\n  if (n < 1 || n > MAX_SAFE_INTEGER) {\n    return [];\n  }\n  var index = MAX_ARRAY_LENGTH,\n      length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n  iteratee = castFunction(iteratee);\n  n -= MAX_ARRAY_LENGTH;\n\n  var result = baseTimes(length, iteratee);\n  while (++index < n) {\n    iteratee(index);\n  }\n  return result;\n}\n\nexport default times;\n", "/**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\nfunction wrapperToIterator() {\n  return this;\n}\n\nexport default wrapperToIterator;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport arrayPush from './_arrayPush.js';\nimport arrayReduce from './_arrayReduce.js';\n\n/**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\nfunction baseWrapperValue(value, actions) {\n  var result = value;\n  if (result instanceof LazyWrapper) {\n    result = result.value();\n  }\n  return arrayReduce(actions, function(result, action) {\n    return action.func.apply(action.thisArg, arrayPush([result], action.args));\n  }, result);\n}\n\nexport default baseWrapperValue;\n", "import baseWrapperValue from './_baseWrapperValue.js';\n\n/**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\nfunction wrapperValue() {\n  return baseWrapperValue(this.__wrapped__, this.__actions__);\n}\n\nexport default wrapperValue;\n", "import toString from './toString.js';\n\n/**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\nfunction toLower(value) {\n  return toString(value).toLowerCase();\n}\n\nexport default toLower;\n", "import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n  if (isArray(value)) {\n    return arrayMap(value, toKey);\n  }\n  return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n", "import baseClamp from './_baseClamp.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\nfunction toSafeInteger(value) {\n  return value\n    ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n    : (value === 0 ? value : 0);\n}\n\nexport default toSafeInteger;\n", "import toString from './toString.js';\n\n/**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\nfunction toUpper(value) {\n  return toString(value).toUpperCase();\n}\n\nexport default toUpper;\n", "import arrayEach from './_arrayEach.js';\nimport baseCreate from './_baseCreate.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\nimport getPrototype from './_getPrototype.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isTypedArray from './isTypedArray.js';\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n *   result.push(n *= n);\n *   return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n  var isArr = isArray(object),\n      isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n  iteratee = baseIteratee(iteratee, 4);\n  if (accumulator == null) {\n    var Ctor = object && object.constructor;\n    if (isArrLike) {\n      accumulator = isArr ? new Ctor : [];\n    }\n    else if (isObject(object)) {\n      accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n    }\n    else {\n      accumulator = {};\n    }\n  }\n  (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n    return iteratee(accumulator, value, index, object);\n  });\n  return accumulator;\n}\n\nexport default transform;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n  var index = strSymbols.length;\n\n  while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n  return index;\n}\n\nexport default charsEndIndex;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n  var index = -1,\n      length = strSymbols.length;\n\n  while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n  return index;\n}\n\nexport default charsStartIndex;\n", "import baseToString from './_baseToString.js';\nimport baseTrim from './_baseTrim.js';\nimport castSlice from './_castSlice.js';\nimport charsEndIndex from './_charsEndIndex.js';\nimport charsStartIndex from './_charsStartIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim('  abc  ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map(['  foo  ', '  bar  '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === undefined)) {\n    return baseTrim(string);\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string),\n      chrSymbols = stringToArray(chars),\n      start = charsStartIndex(strSymbols, chrSymbols),\n      end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n  return castSlice(strSymbols, start, end).join('');\n}\n\nexport default trim;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport charsEndIndex from './_charsEndIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\nimport trimmedEndIndex from './_trimmedEndIndex.js';\n\n/**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd('  abc  ');\n * // => '  abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\nfunction trimEnd(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === undefined)) {\n    return string.slice(0, trimmedEndIndex(string) + 1);\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string),\n      end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n  return castSlice(strSymbols, 0, end).join('');\n}\n\nexport default trimEnd;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport charsStartIndex from './_charsStartIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart('  abc  ');\n * // => 'abc  '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\nfunction trimStart(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === undefined)) {\n    return string.replace(reTrimStart, '');\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string),\n      start = charsStartIndex(strSymbols, stringToArray(chars));\n\n  return castSlice(strSymbols, start).join('');\n}\n\nexport default trimStart;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport isObject from './isObject.js';\nimport isRegExp from './isRegExp.js';\nimport stringSize from './_stringSize.js';\nimport stringToArray from './_stringToArray.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n    DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n  var length = DEFAULT_TRUNC_LENGTH,\n      omission = DEFAULT_TRUNC_OMISSION;\n\n  if (isObject(options)) {\n    var separator = 'separator' in options ? options.separator : separator;\n    length = 'length' in options ? toInteger(options.length) : length;\n    omission = 'omission' in options ? baseToString(options.omission) : omission;\n  }\n  string = toString(string);\n\n  var strLength = string.length;\n  if (hasUnicode(string)) {\n    var strSymbols = stringToArray(string);\n    strLength = strSymbols.length;\n  }\n  if (length >= strLength) {\n    return string;\n  }\n  var end = length - stringSize(omission);\n  if (end < 1) {\n    return omission;\n  }\n  var result = strSymbols\n    ? castSlice(strSymbols, 0, end).join('')\n    : string.slice(0, end);\n\n  if (separator === undefined) {\n    return result + omission;\n  }\n  if (strSymbols) {\n    end += (result.length - end);\n  }\n  if (isRegExp(separator)) {\n    if (string.slice(end).search(separator)) {\n      var match,\n          substring = result;\n\n      if (!separator.global) {\n        separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n      }\n      separator.lastIndex = 0;\n      while ((match = separator.exec(substring))) {\n        var newEnd = match.index;\n      }\n      result = result.slice(0, newEnd === undefined ? end : newEnd);\n    }\n  } else if (string.indexOf(baseToString(separator), end) != end) {\n    var index = result.lastIndexOf(separator);\n    if (index > -1) {\n      result = result.slice(0, index);\n    }\n  }\n  return result + omission;\n}\n\nexport default truncate;\n", "import ary from './ary.js';\n\n/**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\nfunction unary(func) {\n  return ary(func, 1);\n}\n\nexport default unary;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n  '&amp;': '&',\n  '&lt;': '<',\n  '&gt;': '>',\n  '&quot;': '\"',\n  '&#39;': \"'\"\n};\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\nexport default unescapeHtmlChar;\n", "import toString from './toString.js';\nimport unescapeHtmlChar from './_unescapeHtmlChar.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n    reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n  string = toString(string);\n  return (string && reHasEscapedHtml.test(string))\n    ? string.replace(reEscapedHtml, unescapeHtmlChar)\n    : string;\n}\n\nexport default unescape;\n", "import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nexport default createSet;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseUniq;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nvar unionBy = baseRest(function(arrays) {\n  var iteratee = last(arrays);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));\n});\n\nexport default unionBy;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\nvar unionWith = baseRest(function(arrays) {\n  var comparator = last(arrays);\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n});\n\nexport default unionWith;\n", "import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n", "import baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nexport default uniqWith;\n", "import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n  var id = ++idCounter;\n  return toString(prefix) + id;\n}\n\nexport default uniqueId;\n", "import baseUnset from './_baseUnset.js';\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n  return object == null ? true : baseUnset(object, path);\n}\n\nexport default unset;\n", "import arrayFilter from './_arrayFilter.js';\nimport arrayMap from './_arrayMap.js';\nimport baseProperty from './_baseProperty.js';\nimport baseTimes from './_baseTimes.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nfunction unzip(array) {\n  if (!(array && array.length)) {\n    return [];\n  }\n  var length = 0;\n  array = arrayFilter(array, function(group) {\n    if (isArrayLikeObject(group)) {\n      length = nativeMax(group.length, length);\n      return true;\n    }\n  });\n  return baseTimes(length, function(index) {\n    return arrayMap(array, baseProperty(index));\n  });\n}\n\nexport default unzip;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport unzip from './unzip.js';\n\n/**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n *  regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\nfunction unzipWith(array, iteratee) {\n  if (!(array && array.length)) {\n    return [];\n  }\n  var result = unzip(array);\n  if (iteratee == null) {\n    return result;\n  }\n  return arrayMap(result, function(group) {\n    return apply(iteratee, undefined, group);\n  });\n}\n\nexport default unzipWith;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\n\n/**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseUpdate(object, path, updater, customizer) {\n  return baseSet(object, path, updater(baseGet(object, path)), customizer);\n}\n\nexport default baseUpdate;\n", "import baseUpdate from './_baseUpdate.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\nfunction update(object, path, updater) {\n  return object == null ? object : baseUpdate(object, path, castFunction(updater));\n}\n\nexport default update;\n", "import baseUpdate from './_baseUpdate.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\nfunction updateWith(object, path, updater, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n}\n\nexport default updateWith;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\nvar upperCase = createCompounder(function(result, word, index) {\n  return result + (index ? ' ' : '') + word.toUpperCase();\n});\n\nexport default upperCase;\n", "import baseValues from './_baseValues.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\nfunction valuesIn(object) {\n  return object == null ? [] : baseValues(object, keysIn(object));\n}\n\nexport default valuesIn;\n", "import baseDifference from './_baseDifference.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, values)\n    : [];\n});\n\nexport default without;\n", "import castFunction from './_castFunction.js';\nimport partial from './partial.js';\n\n/**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n *   return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, &amp; pebbles</p>'\n */\nfunction wrap(value, wrapper) {\n  return partial(castFunction(wrapper), value);\n}\n\nexport default wrap;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport baseAt from './_baseAt.js';\nimport flatRest from './_flatRest.js';\nimport isIndex from './_isIndex.js';\nimport thru from './thru.js';\n\n/**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\nvar wrapperAt = flatRest(function(paths) {\n  var length = paths.length,\n      start = length ? paths[0] : 0,\n      value = this.__wrapped__,\n      interceptor = function(object) { return baseAt(object, paths); };\n\n  if (length > 1 || this.__actions__.length ||\n      !(value instanceof LazyWrapper) || !isIndex(start)) {\n    return this.thru(interceptor);\n  }\n  value = value.slice(start, +start + (length ? 1 : 0));\n  value.__actions__.push({\n    'func': thru,\n    'args': [interceptor],\n    'thisArg': undefined\n  });\n  return new LodashWrapper(value, this.__chain__).thru(function(array) {\n    if (length && !array.length) {\n      array.push(undefined);\n    }\n    return array;\n  });\n});\n\nexport default wrapperAt;\n", "import chain from './chain.js';\n\n/**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n *   .chain()\n *   .head()\n *   .pick('user')\n *   .value();\n * // => { 'user': 'barney' }\n */\nfunction wrapperChain() {\n  return chain(this);\n}\n\nexport default wrapperChain;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport reverse from './reverse.js';\nimport thru from './thru.js';\n\n/**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\nfunction wrapperReverse() {\n  var value = this.__wrapped__;\n  if (value instanceof LazyWrapper) {\n    var wrapped = value;\n    if (this.__actions__.length) {\n      wrapped = new LazyWrapper(this);\n    }\n    wrapped = wrapped.reverse();\n    wrapped.__actions__.push({\n      'func': thru,\n      'args': [reverse],\n      'thisArg': undefined\n    });\n    return new LodashWrapper(wrapped, this.__chain__);\n  }\n  return this.thru(reverse);\n}\n\nexport default wrapperReverse;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n  var length = arrays.length;\n  if (length < 2) {\n    return length ? baseUniq(arrays[0]) : [];\n  }\n  var index = -1,\n      result = Array(length);\n\n  while (++index < length) {\n    var array = arrays[index],\n        othIndex = -1;\n\n    while (++othIndex < length) {\n      if (othIndex != index) {\n        result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n      }\n    }\n  }\n  return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n}\n\nexport default baseXor;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseRest from './_baseRest.js';\nimport baseXor from './_baseXor.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = baseRest(function(arrays) {\n  return baseXor(arrayFilter(arrays, isArrayLikeObject));\n});\n\nexport default xor;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseXor from './_baseXor.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar xorBy = baseRest(function(arrays) {\n  var iteratee = last(arrays);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return baseXor(arrayFilter(arrays, isArrayLikeObject), baseIteratee(iteratee, 2));\n});\n\nexport default xorBy;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseRest from './_baseRest.js';\nimport baseXor from './_baseXor.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\nvar xorWith = baseRest(function(arrays) {\n  var comparator = last(arrays);\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n});\n\nexport default xorWith;\n", "import baseRest from './_baseRest.js';\nimport unzip from './unzip.js';\n\n/**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nvar zip = baseRest(unzip);\n\nexport default zip;\n", "/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n  var index = -1,\n      length = props.length,\n      valsLength = values.length,\n      result = {};\n\n  while (++index < length) {\n    var value = index < valsLength ? values[index] : undefined;\n    assignFunc(result, props[index], value);\n  }\n  return result;\n}\n\nexport default baseZipObject;\n", "import assignValue from './_assignValue.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n  return baseZipObject(props || [], values || [], assignValue);\n}\n\nexport default zipObject;\n", "import baseSet from './_baseSet.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\nfunction zipObjectDeep(props, values) {\n  return baseZipObject(props || [], values || [], baseSet);\n}\n\nexport default zipObjectDeep;\n", "import baseRest from './_baseRest.js';\nimport unzipWith from './unzipWith.js';\n\n/**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n *  grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n *   return a + b + c;\n * });\n * // => [111, 222]\n */\nvar zipWith = baseRest(function(arrays) {\n  var length = arrays.length,\n      iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n  iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n  return unzipWith(arrays, iteratee);\n});\n\nexport default zipWith;\n", "import chunk from './chunk.js';\nimport compact from './compact.js';\nimport concat from './concat.js';\nimport difference from './difference.js';\nimport differenceBy from './differenceBy.js';\nimport differenceWith from './differenceWith.js';\nimport drop from './drop.js';\nimport dropRight from './dropRight.js';\nimport dropRightWhile from './dropRightWhile.js';\nimport dropWhile from './dropWhile.js';\nimport fill from './fill.js';\nimport findIndex from './findIndex.js';\nimport findLastIndex from './findLastIndex.js';\nimport first from './first.js';\nimport flatten from './flatten.js';\nimport flattenDeep from './flattenDeep.js';\nimport flattenDepth from './flattenDepth.js';\nimport fromPairs from './fromPairs.js';\nimport head from './head.js';\nimport indexOf from './indexOf.js';\nimport initial from './initial.js';\nimport intersection from './intersection.js';\nimport intersectionBy from './intersectionBy.js';\nimport intersectionWith from './intersectionWith.js';\nimport join from './join.js';\nimport last from './last.js';\nimport lastIndexOf from './lastIndexOf.js';\nimport nth from './nth.js';\nimport pull from './pull.js';\nimport pullAll from './pullAll.js';\nimport pullAllBy from './pullAllBy.js';\nimport pullAllWith from './pullAllWith.js';\nimport pullAt from './pullAt.js';\nimport remove from './remove.js';\nimport reverse from './reverse.js';\nimport slice from './slice.js';\nimport sortedIndex from './sortedIndex.js';\nimport sortedIndexBy from './sortedIndexBy.js';\nimport sortedIndexOf from './sortedIndexOf.js';\nimport sortedLastIndex from './sortedLastIndex.js';\nimport sortedLastIndexBy from './sortedLastIndexBy.js';\nimport sortedLastIndexOf from './sortedLastIndexOf.js';\nimport sortedUniq from './sortedUniq.js';\nimport sortedUniqBy from './sortedUniqBy.js';\nimport tail from './tail.js';\nimport take from './take.js';\nimport takeRight from './takeRight.js';\nimport takeRightWhile from './takeRightWhile.js';\nimport takeWhile from './takeWhile.js';\nimport union from './union.js';\nimport unionBy from './unionBy.js';\nimport unionWith from './unionWith.js';\nimport uniq from './uniq.js';\nimport uniqBy from './uniqBy.js';\nimport uniqWith from './uniqWith.js';\nimport unzip from './unzip.js';\nimport unzipWith from './unzipWith.js';\nimport without from './without.js';\nimport xor from './xor.js';\nimport xorBy from './xorBy.js';\nimport xorWith from './xorWith.js';\nimport zip from './zip.js';\nimport zipObject from './zipObject.js';\nimport zipObjectDeep from './zipObjectDeep.js';\nimport zipWith from './zipWith.js';\n\nexport default {\n  chunk, compact, concat, difference, differenceBy,\n  differenceWith, drop, dropRight, dropRightWhile, dropWhile,\n  fill, findIndex, findLastIndex, first, flatten,\n  flattenDeep, flattenDepth, fromPairs, head, indexOf,\n  initial, intersection, intersectionBy, intersectionWith, join,\n  last, lastIndexOf, nth, pull, pullAll,\n  pullAllBy, pullAllWith, pullAt, remove, reverse,\n  slice, sortedIndex, sortedIndexBy, sortedIndexOf, sortedLastIndex,\n  sortedLastIndexBy, sortedLastIndexOf, sortedUniq, sortedUniqBy, tail,\n  take, takeRight, takeRightWhile, takeWhile, union,\n  unionBy, unionWith, uniq, uniqBy, uniqWith,\n  unzip, unzipWith, without, xor, xorBy,\n  xorWith, zip, zipObject, zipObjectDeep, zipWith\n};\n", "import countBy from './countBy.js';\nimport each from './each.js';\nimport eachRight from './eachRight.js';\nimport every from './every.js';\nimport filter from './filter.js';\nimport find from './find.js';\nimport findLast from './findLast.js';\nimport flatMap from './flatMap.js';\nimport flatMapDeep from './flatMapDeep.js';\nimport flatMapDepth from './flatMapDepth.js';\nimport forEach from './forEach.js';\nimport forEachRight from './forEachRight.js';\nimport groupBy from './groupBy.js';\nimport includes from './includes.js';\nimport invokeMap from './invokeMap.js';\nimport keyBy from './keyBy.js';\nimport map from './map.js';\nimport orderBy from './orderBy.js';\nimport partition from './partition.js';\nimport reduce from './reduce.js';\nimport reduceRight from './reduceRight.js';\nimport reject from './reject.js';\nimport sample from './sample.js';\nimport sampleSize from './sampleSize.js';\nimport shuffle from './shuffle.js';\nimport size from './size.js';\nimport some from './some.js';\nimport sortBy from './sortBy.js';\n\nexport default {\n  countBy, each, eachRight, every, filter,\n  find, findLast, flatMap, flatMapDeep, flatMapDepth,\n  forEach, forEachRight, groupBy, includes, invokeMap,\n  keyBy, map, orderBy, partition, reduce,\n  reduceRight, reject, sample, sampleSize, shuffle,\n  size, some, sortBy\n};\n", "import now from './now.js';\n\nexport default {\n  now\n};\n", "import after from './after.js';\nimport ary from './ary.js';\nimport before from './before.js';\nimport bind from './bind.js';\nimport bindKey from './bindKey.js';\nimport curry from './curry.js';\nimport curryRight from './curryRight.js';\nimport debounce from './debounce.js';\nimport defer from './defer.js';\nimport delay from './delay.js';\nimport flip from './flip.js';\nimport memoize from './memoize.js';\nimport negate from './negate.js';\nimport once from './once.js';\nimport overArgs from './overArgs.js';\nimport partial from './partial.js';\nimport partialRight from './partialRight.js';\nimport rearg from './rearg.js';\nimport rest from './rest.js';\nimport spread from './spread.js';\nimport throttle from './throttle.js';\nimport unary from './unary.js';\nimport wrap from './wrap.js';\n\nexport default {\n  after, ary, before, bind, bindKey,\n  curry, curryRight, debounce, defer, delay,\n  flip, memoize, negate, once, overArgs,\n  partial, partialRight, rearg, rest, spread,\n  throttle, unary, wrap\n};\n", "import castArray from './castArray.js';\nimport clone from './clone.js';\nimport cloneDeep from './cloneDeep.js';\nimport cloneDeepWith from './cloneDeepWith.js';\nimport cloneWith from './cloneWith.js';\nimport conformsTo from './conformsTo.js';\nimport eq from './eq.js';\nimport gt from './gt.js';\nimport gte from './gte.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport isArrayLike from './isArrayLike.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBoolean from './isBoolean.js';\nimport isBuffer from './isBuffer.js';\nimport isDate from './isDate.js';\nimport isElement from './isElement.js';\nimport isEmpty from './isEmpty.js';\nimport isEqual from './isEqual.js';\nimport isEqualWith from './isEqualWith.js';\nimport isError from './isError.js';\nimport isFinite from './isFinite.js';\nimport isFunction from './isFunction.js';\nimport isInteger from './isInteger.js';\nimport isLength from './isLength.js';\nimport isMap from './isMap.js';\nimport isMatch from './isMatch.js';\nimport isMatchWith from './isMatchWith.js';\nimport isNaN from './isNaN.js';\nimport isNative from './isNative.js';\nimport isNil from './isNil.js';\nimport isNull from './isNull.js';\nimport isNumber from './isNumber.js';\nimport isObject from './isObject.js';\nimport isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\nimport isRegExp from './isRegExp.js';\nimport isSafeInteger from './isSafeInteger.js';\nimport isSet from './isSet.js';\nimport isString from './isString.js';\nimport isSymbol from './isSymbol.js';\nimport isTypedArray from './isTypedArray.js';\nimport isUndefined from './isUndefined.js';\nimport isWeakMap from './isWeakMap.js';\nimport isWeakSet from './isWeakSet.js';\nimport lt from './lt.js';\nimport lte from './lte.js';\nimport toArray from './toArray.js';\nimport toFinite from './toFinite.js';\nimport toInteger from './toInteger.js';\nimport toLength from './toLength.js';\nimport toNumber from './toNumber.js';\nimport toPlainObject from './toPlainObject.js';\nimport toSafeInteger from './toSafeInteger.js';\nimport toString from './toString.js';\n\nexport default {\n  castArray, clone, cloneDeep, cloneDeepWith, cloneWith,\n  conformsTo, eq, gt, gte, isArguments,\n  isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean,\n  isBuffer, isDate, isElement, isEmpty, isEqual,\n  isEqualWith, isError, isFinite, isFunction, isInteger,\n  isLength, isMap, isMatch, isMatchWith, isNaN,\n  isNative, isNil, isNull, isNumber, isObject,\n  isObjectLike, isPlainObject, isRegExp, isSafeInteger, isSet,\n  isString, isSymbol, isTypedArray, isUndefined, isWeakMap,\n  isWeakSet, lt, lte, toArray, toFinite,\n  toInteger, toLength, toNumber, toPlainObject, toSafeInteger,\n  toString\n};\n", "import add from './add.js';\nimport ceil from './ceil.js';\nimport divide from './divide.js';\nimport floor from './floor.js';\nimport max from './max.js';\nimport maxBy from './maxBy.js';\nimport mean from './mean.js';\nimport meanBy from './meanBy.js';\nimport min from './min.js';\nimport minBy from './minBy.js';\nimport multiply from './multiply.js';\nimport round from './round.js';\nimport subtract from './subtract.js';\nimport sum from './sum.js';\nimport sumBy from './sumBy.js';\n\nexport default {\n  add, ceil, divide, floor, max,\n  maxBy, mean, meanBy, min, minBy,\n  multiply, round, subtract, sum, sumBy\n};\n", "import clamp from './clamp.js';\nimport inRange from './inRange.js';\nimport random from './random.js';\n\nexport default {\n  clamp, inRange, random\n};\n", "import assign from './assign.js';\nimport assignIn from './assignIn.js';\nimport assignInWith from './assignInWith.js';\nimport assignWith from './assignWith.js';\nimport at from './at.js';\nimport create from './create.js';\nimport defaults from './defaults.js';\nimport defaultsDeep from './defaultsDeep.js';\nimport entries from './entries.js';\nimport entriesIn from './entriesIn.js';\nimport extend from './extend.js';\nimport extendWith from './extendWith.js';\nimport findKey from './findKey.js';\nimport findLastKey from './findLastKey.js';\nimport forIn from './forIn.js';\nimport forInRight from './forInRight.js';\nimport forOwn from './forOwn.js';\nimport forOwnRight from './forOwnRight.js';\nimport functions from './functions.js';\nimport functionsIn from './functionsIn.js';\nimport get from './get.js';\nimport has from './has.js';\nimport hasIn from './hasIn.js';\nimport invert from './invert.js';\nimport invertBy from './invertBy.js';\nimport invoke from './invoke.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\nimport mapKeys from './mapKeys.js';\nimport mapValues from './mapValues.js';\nimport merge from './merge.js';\nimport mergeWith from './mergeWith.js';\nimport omit from './omit.js';\nimport omitBy from './omitBy.js';\nimport pick from './pick.js';\nimport pickBy from './pickBy.js';\nimport result from './result.js';\nimport set from './set.js';\nimport setWith from './setWith.js';\nimport toPairs from './toPairs.js';\nimport toPairsIn from './toPairsIn.js';\nimport transform from './transform.js';\nimport unset from './unset.js';\nimport update from './update.js';\nimport updateWith from './updateWith.js';\nimport values from './values.js';\nimport valuesIn from './valuesIn.js';\n\nexport default {\n  assign, assignIn, assignInWith, assignWith, at,\n  create, defaults, defaultsDeep, entries, entriesIn,\n  extend, extendWith, findKey, findLastKey, forIn,\n  forInRight, forOwn, forOwnRight, functions, functionsIn,\n  get, has, hasIn, invert, invertBy,\n  invoke, keys, keysIn, mapKeys, mapValues,\n  merge, mergeWith, omit, omitBy, pick,\n  pickBy, result, set, setWith, toPairs,\n  toPairsIn, transform, unset, update, updateWith,\n  values, valuesIn\n};\n", "import at from './wrapperAt.js';\nimport chain from './chain.js';\nimport commit from './commit.js';\nimport lodash from './wrapperLodash.js';\nimport next from './next.js';\nimport plant from './plant.js';\nimport reverse from './wrapperReverse.js';\nimport tap from './tap.js';\nimport thru from './thru.js';\nimport toIterator from './toIterator.js';\nimport toJSON from './toJSON.js';\nimport value from './wrapperValue.js';\nimport valueOf from './valueOf.js';\nimport wrapperChain from './wrapperChain.js';\n\nexport default {\n  at, chain, commit, lodash, next,\n  plant, reverse, tap, thru, toIterator,\n  toJSON, value, valueOf, wrapperChain\n};\n", "import camelCase from './camelCase.js';\nimport capitalize from './capitalize.js';\nimport deburr from './deburr.js';\nimport endsWith from './endsWith.js';\nimport escape from './escape.js';\nimport escapeRegExp from './escapeRegExp.js';\nimport kebabCase from './kebabCase.js';\nimport lowerCase from './lowerCase.js';\nimport lowerFirst from './lowerFirst.js';\nimport pad from './pad.js';\nimport padEnd from './padEnd.js';\nimport padStart from './padStart.js';\nimport parseInt from './parseInt.js';\nimport repeat from './repeat.js';\nimport replace from './replace.js';\nimport snakeCase from './snakeCase.js';\nimport split from './split.js';\nimport startCase from './startCase.js';\nimport startsWith from './startsWith.js';\nimport template from './template.js';\nimport templateSettings from './templateSettings.js';\nimport toLower from './toLower.js';\nimport toUpper from './toUpper.js';\nimport trim from './trim.js';\nimport trimEnd from './trimEnd.js';\nimport trimStart from './trimStart.js';\nimport truncate from './truncate.js';\nimport unescape from './unescape.js';\nimport upperCase from './upperCase.js';\nimport upperFirst from './upperFirst.js';\nimport words from './words.js';\n\nexport default {\n  camelCase, capitalize, deburr, endsWith, escape,\n  escapeRegExp, kebabCase, lowerCase, lowerFirst, pad,\n  padEnd, padStart, parseInt, repeat, replace,\n  snakeCase, split, startCase, startsWith, template,\n  templateSettings, toLower, toUpper, trim, trimEnd,\n  trimStart, truncate, unescape, upperCase, upperFirst,\n  words\n};\n", "import attempt from './attempt.js';\nimport bindAll from './bindAll.js';\nimport cond from './cond.js';\nimport conforms from './conforms.js';\nimport constant from './constant.js';\nimport defaultTo from './defaultTo.js';\nimport flow from './flow.js';\nimport flowRight from './flowRight.js';\nimport identity from './identity.js';\nimport iteratee from './iteratee.js';\nimport matches from './matches.js';\nimport matchesProperty from './matchesProperty.js';\nimport method from './method.js';\nimport methodOf from './methodOf.js';\nimport mixin from './mixin.js';\nimport noop from './noop.js';\nimport nthArg from './nthArg.js';\nimport over from './over.js';\nimport overEvery from './overEvery.js';\nimport overSome from './overSome.js';\nimport property from './property.js';\nimport propertyOf from './propertyOf.js';\nimport range from './range.js';\nimport rangeRight from './rangeRight.js';\nimport stubArray from './stubArray.js';\nimport stubFalse from './stubFalse.js';\nimport stubObject from './stubObject.js';\nimport stubString from './stubString.js';\nimport stubTrue from './stubTrue.js';\nimport times from './times.js';\nimport toPath from './toPath.js';\nimport uniqueId from './uniqueId.js';\n\nexport default {\n  attempt, bindAll, cond, conforms, constant,\n  defaultTo, flow, flowRight, identity, iteratee,\n  matches, matchesProperty, method, methodOf, mixin,\n  noop, nthArg, over, overEvery, overSome,\n  property, propertyOf, range, rangeRight, stubArray,\n  stubFalse, stubObject, stubString, stubTrue, times,\n  toPath, uniqueId\n};\n", "import LazyWrapper from './_LazyWrapper.js';\nimport copyArray from './_copyArray.js';\n\n/**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\nfunction lazyClone() {\n  var result = new LazyWrapper(this.__wrapped__);\n  result.__actions__ = copyArray(this.__actions__);\n  result.__dir__ = this.__dir__;\n  result.__filtered__ = this.__filtered__;\n  result.__iteratees__ = copyArray(this.__iteratees__);\n  result.__takeCount__ = this.__takeCount__;\n  result.__views__ = copyArray(this.__views__);\n  return result;\n}\n\nexport default lazyClone;\n", "import LazyWrapper from './_LazyWrapper.js';\n\n/**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\nfunction lazyReverse() {\n  if (this.__filtered__) {\n    var result = new LazyWrapper(this);\n    result.__dir__ = -1;\n    result.__filtered__ = true;\n  } else {\n    result = this.clone();\n    result.__dir__ *= -1;\n  }\n  return result;\n}\n\nexport default lazyReverse;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n *  positions of the view.\n */\nfunction getView(start, end, transforms) {\n  var index = -1,\n      length = transforms.length;\n\n  while (++index < length) {\n    var data = transforms[index],\n        size = data.size;\n\n    switch (data.type) {\n      case 'drop':      start += size; break;\n      case 'dropRight': end -= size; break;\n      case 'take':      end = nativeMin(end, start + size); break;\n      case 'takeRight': start = nativeMax(start, end - size); break;\n    }\n  }\n  return { 'start': start, 'end': end };\n}\n\nexport default getView;\n", "import baseWrapperValue from './_baseWrapperValue.js';\nimport getView from './_getView.js';\nimport isArray from './isArray.js';\n\n/** Used to indicate the type of lazy iteratees. */\nvar LAZY_FILTER_FLAG = 1,\n    LAZY_MAP_FLAG = 2;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\nfunction lazyValue() {\n  var array = this.__wrapped__.value(),\n      dir = this.__dir__,\n      isArr = isArray(array),\n      isRight = dir < 0,\n      arrLength = isArr ? array.length : 0,\n      view = getView(0, arrLength, this.__views__),\n      start = view.start,\n      end = view.end,\n      length = end - start,\n      index = isRight ? end : (start - 1),\n      iteratees = this.__iteratees__,\n      iterLength = iteratees.length,\n      resIndex = 0,\n      takeCount = nativeMin(length, this.__takeCount__);\n\n  if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n    return baseWrapperValue(array, this.__actions__);\n  }\n  var result = [];\n\n  outer:\n  while (length-- && resIndex < takeCount) {\n    index += dir;\n\n    var iterIndex = -1,\n        value = array[index];\n\n    while (++iterIndex < iterLength) {\n      var data = iteratees[iterIndex],\n          iteratee = data.iteratee,\n          type = data.type,\n          computed = iteratee(value);\n\n      if (type == LAZY_MAP_FLAG) {\n        value = computed;\n      } else if (!computed) {\n        if (type == LAZY_FILTER_FLAG) {\n          continue outer;\n        } else {\n          break outer;\n        }\n      }\n    }\n    result[resIndex++] = value;\n  }\n  return result;\n}\n\nexport default lazyValue;\n", "/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nimport array from './array.js';\nimport collection from './collection.js';\nimport date from './date.js';\nimport func from './function.js';\nimport lang from './lang.js';\nimport math from './math.js';\nimport number from './number.js';\nimport object from './object.js';\nimport seq from './seq.js';\nimport string from './string.js';\nimport util from './util.js';\nimport LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport Symbol from './_Symbol.js';\nimport arrayEach from './_arrayEach.js';\nimport arrayPush from './_arrayPush.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseFunctions from './_baseFunctions.js';\nimport baseInvoke from './_baseInvoke.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport createHybrid from './_createHybrid.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport isObject from './isObject.js';\nimport keys from './keys.js';\nimport last from './last.js';\nimport lazyClone from './_lazyClone.js';\nimport lazyReverse from './_lazyReverse.js';\nimport lazyValue from './_lazyValue.js';\nimport _mixin from './mixin.js';\nimport negate from './negate.js';\nimport realNames from './_realNames.js';\nimport thru from './thru.js';\nimport toInteger from './toInteger.js';\nimport lodash from './wrapperLodash.js';\n\n/** Used as the semantic version number. */\nvar VERSION = '4.17.21';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_KEY_FLAG = 2;\n\n/** Used to indicate the type of lazy iteratees. */\nvar LAZY_FILTER_FLAG = 1,\n    LAZY_WHILE_FLAG = 3;\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n// wrap `_.mixin` so it works when provided only one argument\nvar mixin = (function(func) {\n  return function(object, source, options) {\n    if (options == null) {\n      var isObj = isObject(source),\n          props = isObj && keys(source),\n          methodNames = props && props.length && baseFunctions(source, props);\n\n      if (!(methodNames ? methodNames.length : isObj)) {\n        options = source;\n        source = object;\n        object = this;\n      }\n    }\n    return func(object, source, options);\n  };\n}(_mixin));\n\n// Add methods that return wrapped values in chain sequences.\nlodash.after = func.after;\nlodash.ary = func.ary;\nlodash.assign = object.assign;\nlodash.assignIn = object.assignIn;\nlodash.assignInWith = object.assignInWith;\nlodash.assignWith = object.assignWith;\nlodash.at = object.at;\nlodash.before = func.before;\nlodash.bind = func.bind;\nlodash.bindAll = util.bindAll;\nlodash.bindKey = func.bindKey;\nlodash.castArray = lang.castArray;\nlodash.chain = seq.chain;\nlodash.chunk = array.chunk;\nlodash.compact = array.compact;\nlodash.concat = array.concat;\nlodash.cond = util.cond;\nlodash.conforms = util.conforms;\nlodash.constant = util.constant;\nlodash.countBy = collection.countBy;\nlodash.create = object.create;\nlodash.curry = func.curry;\nlodash.curryRight = func.curryRight;\nlodash.debounce = func.debounce;\nlodash.defaults = object.defaults;\nlodash.defaultsDeep = object.defaultsDeep;\nlodash.defer = func.defer;\nlodash.delay = func.delay;\nlodash.difference = array.difference;\nlodash.differenceBy = array.differenceBy;\nlodash.differenceWith = array.differenceWith;\nlodash.drop = array.drop;\nlodash.dropRight = array.dropRight;\nlodash.dropRightWhile = array.dropRightWhile;\nlodash.dropWhile = array.dropWhile;\nlodash.fill = array.fill;\nlodash.filter = collection.filter;\nlodash.flatMap = collection.flatMap;\nlodash.flatMapDeep = collection.flatMapDeep;\nlodash.flatMapDepth = collection.flatMapDepth;\nlodash.flatten = array.flatten;\nlodash.flattenDeep = array.flattenDeep;\nlodash.flattenDepth = array.flattenDepth;\nlodash.flip = func.flip;\nlodash.flow = util.flow;\nlodash.flowRight = util.flowRight;\nlodash.fromPairs = array.fromPairs;\nlodash.functions = object.functions;\nlodash.functionsIn = object.functionsIn;\nlodash.groupBy = collection.groupBy;\nlodash.initial = array.initial;\nlodash.intersection = array.intersection;\nlodash.intersectionBy = array.intersectionBy;\nlodash.intersectionWith = array.intersectionWith;\nlodash.invert = object.invert;\nlodash.invertBy = object.invertBy;\nlodash.invokeMap = collection.invokeMap;\nlodash.iteratee = util.iteratee;\nlodash.keyBy = collection.keyBy;\nlodash.keys = keys;\nlodash.keysIn = object.keysIn;\nlodash.map = collection.map;\nlodash.mapKeys = object.mapKeys;\nlodash.mapValues = object.mapValues;\nlodash.matches = util.matches;\nlodash.matchesProperty = util.matchesProperty;\nlodash.memoize = func.memoize;\nlodash.merge = object.merge;\nlodash.mergeWith = object.mergeWith;\nlodash.method = util.method;\nlodash.methodOf = util.methodOf;\nlodash.mixin = mixin;\nlodash.negate = negate;\nlodash.nthArg = util.nthArg;\nlodash.omit = object.omit;\nlodash.omitBy = object.omitBy;\nlodash.once = func.once;\nlodash.orderBy = collection.orderBy;\nlodash.over = util.over;\nlodash.overArgs = func.overArgs;\nlodash.overEvery = util.overEvery;\nlodash.overSome = util.overSome;\nlodash.partial = func.partial;\nlodash.partialRight = func.partialRight;\nlodash.partition = collection.partition;\nlodash.pick = object.pick;\nlodash.pickBy = object.pickBy;\nlodash.property = util.property;\nlodash.propertyOf = util.propertyOf;\nlodash.pull = array.pull;\nlodash.pullAll = array.pullAll;\nlodash.pullAllBy = array.pullAllBy;\nlodash.pullAllWith = array.pullAllWith;\nlodash.pullAt = array.pullAt;\nlodash.range = util.range;\nlodash.rangeRight = util.rangeRight;\nlodash.rearg = func.rearg;\nlodash.reject = collection.reject;\nlodash.remove = array.remove;\nlodash.rest = func.rest;\nlodash.reverse = array.reverse;\nlodash.sampleSize = collection.sampleSize;\nlodash.set = object.set;\nlodash.setWith = object.setWith;\nlodash.shuffle = collection.shuffle;\nlodash.slice = array.slice;\nlodash.sortBy = collection.sortBy;\nlodash.sortedUniq = array.sortedUniq;\nlodash.sortedUniqBy = array.sortedUniqBy;\nlodash.split = string.split;\nlodash.spread = func.spread;\nlodash.tail = array.tail;\nlodash.take = array.take;\nlodash.takeRight = array.takeRight;\nlodash.takeRightWhile = array.takeRightWhile;\nlodash.takeWhile = array.takeWhile;\nlodash.tap = seq.tap;\nlodash.throttle = func.throttle;\nlodash.thru = thru;\nlodash.toArray = lang.toArray;\nlodash.toPairs = object.toPairs;\nlodash.toPairsIn = object.toPairsIn;\nlodash.toPath = util.toPath;\nlodash.toPlainObject = lang.toPlainObject;\nlodash.transform = object.transform;\nlodash.unary = func.unary;\nlodash.union = array.union;\nlodash.unionBy = array.unionBy;\nlodash.unionWith = array.unionWith;\nlodash.uniq = array.uniq;\nlodash.uniqBy = array.uniqBy;\nlodash.uniqWith = array.uniqWith;\nlodash.unset = object.unset;\nlodash.unzip = array.unzip;\nlodash.unzipWith = array.unzipWith;\nlodash.update = object.update;\nlodash.updateWith = object.updateWith;\nlodash.values = object.values;\nlodash.valuesIn = object.valuesIn;\nlodash.without = array.without;\nlodash.words = string.words;\nlodash.wrap = func.wrap;\nlodash.xor = array.xor;\nlodash.xorBy = array.xorBy;\nlodash.xorWith = array.xorWith;\nlodash.zip = array.zip;\nlodash.zipObject = array.zipObject;\nlodash.zipObjectDeep = array.zipObjectDeep;\nlodash.zipWith = array.zipWith;\n\n// Add aliases.\nlodash.entries = object.toPairs;\nlodash.entriesIn = object.toPairsIn;\nlodash.extend = object.assignIn;\nlodash.extendWith = object.assignInWith;\n\n// Add methods to `lodash.prototype`.\nmixin(lodash, lodash);\n\n// Add methods that return unwrapped values in chain sequences.\nlodash.add = math.add;\nlodash.attempt = util.attempt;\nlodash.camelCase = string.camelCase;\nlodash.capitalize = string.capitalize;\nlodash.ceil = math.ceil;\nlodash.clamp = number.clamp;\nlodash.clone = lang.clone;\nlodash.cloneDeep = lang.cloneDeep;\nlodash.cloneDeepWith = lang.cloneDeepWith;\nlodash.cloneWith = lang.cloneWith;\nlodash.conformsTo = lang.conformsTo;\nlodash.deburr = string.deburr;\nlodash.defaultTo = util.defaultTo;\nlodash.divide = math.divide;\nlodash.endsWith = string.endsWith;\nlodash.eq = lang.eq;\nlodash.escape = string.escape;\nlodash.escapeRegExp = string.escapeRegExp;\nlodash.every = collection.every;\nlodash.find = collection.find;\nlodash.findIndex = array.findIndex;\nlodash.findKey = object.findKey;\nlodash.findLast = collection.findLast;\nlodash.findLastIndex = array.findLastIndex;\nlodash.findLastKey = object.findLastKey;\nlodash.floor = math.floor;\nlodash.forEach = collection.forEach;\nlodash.forEachRight = collection.forEachRight;\nlodash.forIn = object.forIn;\nlodash.forInRight = object.forInRight;\nlodash.forOwn = object.forOwn;\nlodash.forOwnRight = object.forOwnRight;\nlodash.get = object.get;\nlodash.gt = lang.gt;\nlodash.gte = lang.gte;\nlodash.has = object.has;\nlodash.hasIn = object.hasIn;\nlodash.head = array.head;\nlodash.identity = identity;\nlodash.includes = collection.includes;\nlodash.indexOf = array.indexOf;\nlodash.inRange = number.inRange;\nlodash.invoke = object.invoke;\nlodash.isArguments = lang.isArguments;\nlodash.isArray = isArray;\nlodash.isArrayBuffer = lang.isArrayBuffer;\nlodash.isArrayLike = lang.isArrayLike;\nlodash.isArrayLikeObject = lang.isArrayLikeObject;\nlodash.isBoolean = lang.isBoolean;\nlodash.isBuffer = lang.isBuffer;\nlodash.isDate = lang.isDate;\nlodash.isElement = lang.isElement;\nlodash.isEmpty = lang.isEmpty;\nlodash.isEqual = lang.isEqual;\nlodash.isEqualWith = lang.isEqualWith;\nlodash.isError = lang.isError;\nlodash.isFinite = lang.isFinite;\nlodash.isFunction = lang.isFunction;\nlodash.isInteger = lang.isInteger;\nlodash.isLength = lang.isLength;\nlodash.isMap = lang.isMap;\nlodash.isMatch = lang.isMatch;\nlodash.isMatchWith = lang.isMatchWith;\nlodash.isNaN = lang.isNaN;\nlodash.isNative = lang.isNative;\nlodash.isNil = lang.isNil;\nlodash.isNull = lang.isNull;\nlodash.isNumber = lang.isNumber;\nlodash.isObject = isObject;\nlodash.isObjectLike = lang.isObjectLike;\nlodash.isPlainObject = lang.isPlainObject;\nlodash.isRegExp = lang.isRegExp;\nlodash.isSafeInteger = lang.isSafeInteger;\nlodash.isSet = lang.isSet;\nlodash.isString = lang.isString;\nlodash.isSymbol = lang.isSymbol;\nlodash.isTypedArray = lang.isTypedArray;\nlodash.isUndefined = lang.isUndefined;\nlodash.isWeakMap = lang.isWeakMap;\nlodash.isWeakSet = lang.isWeakSet;\nlodash.join = array.join;\nlodash.kebabCase = string.kebabCase;\nlodash.last = last;\nlodash.lastIndexOf = array.lastIndexOf;\nlodash.lowerCase = string.lowerCase;\nlodash.lowerFirst = string.lowerFirst;\nlodash.lt = lang.lt;\nlodash.lte = lang.lte;\nlodash.max = math.max;\nlodash.maxBy = math.maxBy;\nlodash.mean = math.mean;\nlodash.meanBy = math.meanBy;\nlodash.min = math.min;\nlodash.minBy = math.minBy;\nlodash.stubArray = util.stubArray;\nlodash.stubFalse = util.stubFalse;\nlodash.stubObject = util.stubObject;\nlodash.stubString = util.stubString;\nlodash.stubTrue = util.stubTrue;\nlodash.multiply = math.multiply;\nlodash.nth = array.nth;\nlodash.noop = util.noop;\nlodash.now = date.now;\nlodash.pad = string.pad;\nlodash.padEnd = string.padEnd;\nlodash.padStart = string.padStart;\nlodash.parseInt = string.parseInt;\nlodash.random = number.random;\nlodash.reduce = collection.reduce;\nlodash.reduceRight = collection.reduceRight;\nlodash.repeat = string.repeat;\nlodash.replace = string.replace;\nlodash.result = object.result;\nlodash.round = math.round;\nlodash.sample = collection.sample;\nlodash.size = collection.size;\nlodash.snakeCase = string.snakeCase;\nlodash.some = collection.some;\nlodash.sortedIndex = array.sortedIndex;\nlodash.sortedIndexBy = array.sortedIndexBy;\nlodash.sortedIndexOf = array.sortedIndexOf;\nlodash.sortedLastIndex = array.sortedLastIndex;\nlodash.sortedLastIndexBy = array.sortedLastIndexBy;\nlodash.sortedLastIndexOf = array.sortedLastIndexOf;\nlodash.startCase = string.startCase;\nlodash.startsWith = string.startsWith;\nlodash.subtract = math.subtract;\nlodash.sum = math.sum;\nlodash.sumBy = math.sumBy;\nlodash.template = string.template;\nlodash.times = util.times;\nlodash.toFinite = lang.toFinite;\nlodash.toInteger = toInteger;\nlodash.toLength = lang.toLength;\nlodash.toLower = string.toLower;\nlodash.toNumber = lang.toNumber;\nlodash.toSafeInteger = lang.toSafeInteger;\nlodash.toString = lang.toString;\nlodash.toUpper = string.toUpper;\nlodash.trim = string.trim;\nlodash.trimEnd = string.trimEnd;\nlodash.trimStart = string.trimStart;\nlodash.truncate = string.truncate;\nlodash.unescape = string.unescape;\nlodash.uniqueId = util.uniqueId;\nlodash.upperCase = string.upperCase;\nlodash.upperFirst = string.upperFirst;\n\n// Add aliases.\nlodash.each = collection.forEach;\nlodash.eachRight = collection.forEachRight;\nlodash.first = array.head;\n\nmixin(lodash, (function() {\n  var source = {};\n  baseForOwn(lodash, function(func, methodName) {\n    if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n      source[methodName] = func;\n    }\n  });\n  return source;\n}()), { 'chain': false });\n\n/**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\nlodash.VERSION = VERSION;\n(lodash.templateSettings = string.templateSettings).imports._ = lodash;\n\n// Assign default placeholders.\narrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n  lodash[methodName].placeholder = lodash;\n});\n\n// Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\narrayEach(['drop', 'take'], function(methodName, index) {\n  LazyWrapper.prototype[methodName] = function(n) {\n    n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n    var result = (this.__filtered__ && !index)\n      ? new LazyWrapper(this)\n      : this.clone();\n\n    if (result.__filtered__) {\n      result.__takeCount__ = nativeMin(n, result.__takeCount__);\n    } else {\n      result.__views__.push({\n        'size': nativeMin(n, MAX_ARRAY_LENGTH),\n        'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n      });\n    }\n    return result;\n  };\n\n  LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n    return this.reverse()[methodName](n).reverse();\n  };\n});\n\n// Add `LazyWrapper` methods that accept an `iteratee` value.\narrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n  var type = index + 1,\n      isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n  LazyWrapper.prototype[methodName] = function(iteratee) {\n    var result = this.clone();\n    result.__iteratees__.push({\n      'iteratee': baseIteratee(iteratee, 3),\n      'type': type\n    });\n    result.__filtered__ = result.__filtered__ || isFilter;\n    return result;\n  };\n});\n\n// Add `LazyWrapper` methods for `_.head` and `_.last`.\narrayEach(['head', 'last'], function(methodName, index) {\n  var takeName = 'take' + (index ? 'Right' : '');\n\n  LazyWrapper.prototype[methodName] = function() {\n    return this[takeName](1).value()[0];\n  };\n});\n\n// Add `LazyWrapper` methods for `_.initial` and `_.tail`.\narrayEach(['initial', 'tail'], function(methodName, index) {\n  var dropName = 'drop' + (index ? '' : 'Right');\n\n  LazyWrapper.prototype[methodName] = function() {\n    return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n  };\n});\n\nLazyWrapper.prototype.compact = function() {\n  return this.filter(identity);\n};\n\nLazyWrapper.prototype.find = function(predicate) {\n  return this.filter(predicate).head();\n};\n\nLazyWrapper.prototype.findLast = function(predicate) {\n  return this.reverse().find(predicate);\n};\n\nLazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n  if (typeof path == 'function') {\n    return new LazyWrapper(this);\n  }\n  return this.map(function(value) {\n    return baseInvoke(value, path, args);\n  });\n});\n\nLazyWrapper.prototype.reject = function(predicate) {\n  return this.filter(negate(baseIteratee(predicate)));\n};\n\nLazyWrapper.prototype.slice = function(start, end) {\n  start = toInteger(start);\n\n  var result = this;\n  if (result.__filtered__ && (start > 0 || end < 0)) {\n    return new LazyWrapper(result);\n  }\n  if (start < 0) {\n    result = result.takeRight(-start);\n  } else if (start) {\n    result = result.drop(start);\n  }\n  if (end !== undefined) {\n    end = toInteger(end);\n    result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n  }\n  return result;\n};\n\nLazyWrapper.prototype.takeRightWhile = function(predicate) {\n  return this.reverse().takeWhile(predicate).reverse();\n};\n\nLazyWrapper.prototype.toArray = function() {\n  return this.take(MAX_ARRAY_LENGTH);\n};\n\n// Add `LazyWrapper` methods to `lodash.prototype`.\nbaseForOwn(LazyWrapper.prototype, function(func, methodName) {\n  var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n      isTaker = /^(?:head|last)$/.test(methodName),\n      lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n      retUnwrapped = isTaker || /^find/.test(methodName);\n\n  if (!lodashFunc) {\n    return;\n  }\n  lodash.prototype[methodName] = function() {\n    var value = this.__wrapped__,\n        args = isTaker ? [1] : arguments,\n        isLazy = value instanceof LazyWrapper,\n        iteratee = args[0],\n        useLazy = isLazy || isArray(value);\n\n    var interceptor = function(value) {\n      var result = lodashFunc.apply(lodash, arrayPush([value], args));\n      return (isTaker && chainAll) ? result[0] : result;\n    };\n\n    if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n      // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n      isLazy = useLazy = false;\n    }\n    var chainAll = this.__chain__,\n        isHybrid = !!this.__actions__.length,\n        isUnwrapped = retUnwrapped && !chainAll,\n        onlyLazy = isLazy && !isHybrid;\n\n    if (!retUnwrapped && useLazy) {\n      value = onlyLazy ? value : new LazyWrapper(this);\n      var result = func.apply(value, args);\n      result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n      return new LodashWrapper(result, chainAll);\n    }\n    if (isUnwrapped && onlyLazy) {\n      return func.apply(this, args);\n    }\n    result = this.thru(interceptor);\n    return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n  };\n});\n\n// Add `Array` methods to `lodash.prototype`.\narrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n  var func = arrayProto[methodName],\n      chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n      retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n  lodash.prototype[methodName] = function() {\n    var args = arguments;\n    if (retUnwrapped && !this.__chain__) {\n      var value = this.value();\n      return func.apply(isArray(value) ? value : [], args);\n    }\n    return this[chainName](function(value) {\n      return func.apply(isArray(value) ? value : [], args);\n    });\n  };\n});\n\n// Map minified method names to their real names.\nbaseForOwn(LazyWrapper.prototype, function(func, methodName) {\n  var lodashFunc = lodash[methodName];\n  if (lodashFunc) {\n    var key = lodashFunc.name + '';\n    if (!hasOwnProperty.call(realNames, key)) {\n      realNames[key] = [];\n    }\n    realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n  }\n});\n\nrealNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n  'name': 'wrapper',\n  'func': undefined\n}];\n\n// Add methods to `LazyWrapper`.\nLazyWrapper.prototype.clone = lazyClone;\nLazyWrapper.prototype.reverse = lazyReverse;\nLazyWrapper.prototype.value = lazyValue;\n\n// Add chain sequence methods to the `lodash` wrapper.\nlodash.prototype.at = seq.at;\nlodash.prototype.chain = seq.wrapperChain;\nlodash.prototype.commit = seq.commit;\nlodash.prototype.next = seq.next;\nlodash.prototype.plant = seq.plant;\nlodash.prototype.reverse = seq.reverse;\nlodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = seq.value;\n\n// Add lazy aliases.\nlodash.prototype.first = lodash.prototype.head;\n\nif (symIterator) {\n  lodash.prototype[symIterator] = seq.toIterator;\n}\n\nexport default lodash;\n", "import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTileTable } from './useTileTable';\nimport { useMeasure } from 'react-use';\nimport styles from './TilesContainer.module.css';\nimport { useComposeRef } from '../utils/useComposedRef';\nimport { jc } from '../utils/joinclasses';\nimport { isEqual } from 'lodash-es';\nimport {\n  TileInfo,\n  RenderTileFunction,\n  RenderInsertIndicatorFunction,\n  RenderTileProps,\n} from './model';\n\nexport interface TilesContainerBaseProps<T> {\n  /**\n   * width/height ration\n   */\n  data: T[];\n  renderTile: RenderTileFunction<T>;\n  renderInsertIndicator?: RenderInsertIndicatorFunction;\n  ratio?: number;\n  forceTileHeight?: number;\n  acceptsDrop?: (source: T, target: T) => boolean;\n  onTileDrop?: (source: T, target: T) => boolean;\n  tileSize?: (data: T) => { rowSpan: number; colSpan: number };\n  disabled?: boolean;\n  onReorderTiles?: (reorderedData: T[]) => void;\n  activeBorderSize?: number;\n  strategy?: 'reorder' | 'move';\n}\n\nexport interface TilesContainerColsProps<T> extends TilesContainerBaseProps<T> {\n  columns: number;\n}\n\nexport interface TilesContainerForcedSizeProps<T>\n  extends TilesContainerBaseProps<T> {\n  forceTileWidth: number;\n}\n\nconst TileUI = React.memo(\n  <T,>({\n    renderTile,\n    ...props\n  }: { renderTile: RenderTileFunction<T> } & RenderTileProps<T>) => {\n    return renderTile(props);\n  }\n);\n\nconst isTilesContainerForcedSizeProps = <T,>(\n  props: TilesContainerBaseProps<T>\n): props is TilesContainerForcedSizeProps<T> => !!(props as any).forceTileWidth;\n\nconst isTilesContainerColsProps = <T,>(\n  props: TilesContainerBaseProps<T>\n): props is TilesContainerColsProps<T> => !!(props as any).columns;\n\nexport type TilesContainerProps<T> =\n  | TilesContainerColsProps<T>\n  | TilesContainerForcedSizeProps<T>;\n\nconst defaultTileSize = () => ({ rowSpan: 1, colSpan: 1 });\n\ntype DataWithKeys<T> = {\n  item: T;\n  key: number;\n};\n\nlet lastKey = 0;\nconst dataWithKeys = <T,>(\n  data: T[],\n  dataWithKeys: DataWithKeys<T>[]\n): DataWithKeys<T>[] => {\n  return data.map(item => {\n    const existingItem = dataWithKeys.find(k => k.item === item);\n    return existingItem || { item, key: lastKey++ };\n  });\n};\n\nexport const TilesContainer = <T,>(props: TilesContainerProps<T>) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const [measureRef, measure] = useMeasure<HTMLDivElement>();\n\n  const forceTileWidth = isTilesContainerForcedSizeProps(props)\n    ? props.forceTileWidth\n    : 0;\n  const columns = isTilesContainerColsProps(props)\n    ? props.columns\n    : forceTileWidth\n    ? Math.floor(measure.width / forceTileWidth)\n    : 4;\n  const {\n    onReorderTiles,\n    ratio = 1,\n    forceTileHeight,\n    data: propsData,\n    acceptsDrop,\n    onTileDrop,\n    tileSize = defaultTileSize,\n    renderTile,\n    renderInsertIndicator,\n    activeBorderSize = 24,\n    disabled,\n    strategy = 'move',\n  } = props;\n\n  const tileWidth = forceTileWidth || measure.width / columns;\n  const tileHeight = forceTileHeight || tileWidth / ratio;\n\n  const [data, setData] = useState<DataWithKeys<T>[]>(() =>\n    dataWithKeys(propsData, [])\n  );\n  useEffect(\n    () => setData(curr => dataWithKeys(propsData, curr)),\n    [propsData, setData]\n  );\n\n  //extract the tiles from the props\n  const propsTiles = useMemo(() => {\n    const tiles: TileInfo<T>[] = [];\n    data.forEach(({ item: tile, key }) =>\n      tiles.push({\n        key,\n        ...tileSize(tile),\n        data: tile,\n      })\n    );\n    return tiles;\n  }, [data, tileSize]);\n\n  const { bind, renderTileProps, tableHeight, insertIndicatorPosition } =\n    useTileTable({\n      columns,\n      strategy,\n      enabled: !disabled,\n      elementHeight: tileHeight,\n      elementWidth: tileWidth,\n      activeBorderSize,\n      currentTiles: propsTiles,\n      canAcceptDrop: (source, target) => {\n        return acceptsDrop ? acceptsDrop(source.data, target.data) : false;\n      },\n      changeTilesOrder: tiles => {\n        const newData = tiles.map(tile => tile.data);\n        const actualData = data.map(tile => tile.item);\n        if (!isEqual(actualData, newData)) {\n          setData(curr => dataWithKeys(newData, curr));\n          onReorderTiles && onReorderTiles(newData);\n        }\n      },\n      didDrop: (source, target) => {\n        setData(tiles => tiles.filter(tile => tile.item !== source.data));\n        onTileDrop && onTileDrop(source.data, target.data);\n      },\n    });\n\n  const insertIndicator = useMemo(() => {\n    if (!insertIndicatorPosition || !renderInsertIndicator) {\n      return null;\n    }\n    const { x, y } = insertIndicatorPosition;\n    return (\n      <div\n        className={styles.indicator}\n        style={{\n          top: `${y}px`,\n          left: `${x}px`,\n          height: `${tileHeight}px`,\n          width: `${tileWidth}px`,\n        }}\n      >\n        {renderInsertIndicator()}\n      </div>\n    );\n  }, [insertIndicatorPosition, renderInsertIndicator, tileHeight, tileWidth]);\n\n  const tiles = useMemo(\n    () =>\n      renderTileProps.map(({ x, y, key, ...props }) => (\n        <div\n          className={jc(styles.tile, props.isDragging && styles.dragging)}\n          key={`K-${key}`}\n          style={{\n            top: `${y}px`,\n            left: `${x}px`,\n            width: `${props.colSpan * tileWidth}px`,\n            height: `${props.rowSpan * tileHeight}px`,\n          }}\n          {...bind(props.data)}\n        >\n          <TileUI {...props} renderTile={renderTile as any} />\n        </div>\n      )),\n    [renderTileProps, renderTile, bind, tileWidth, tileHeight]\n  );\n\n  return (\n    <div\n      className={styles.container}\n      ref={useComposeRef(containerRef, measureRef)}\n      style={{ height: `${tableHeight}px`, minWidth: `${tileWidth}px` }}\n    >\n      {insertIndicator}\n      {tiles}\n    </div>\n  );\n};\n"],
+  "mappings": "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U;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAC1B,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACtF,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACt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",
   "names": ["e", "result", "reject", "v", "d", "b", "__assign", "o", "require_react", "exports", "module", "keys", "exports", "module", "result", "set", "e", "get", "exports", "module", "range", "exports", "module", "range", "e", "format", "err", "exports", "assign", "parent", "exports", "module", "exports", "exports", "exports", "property", "exports", "cssToTree", "exports", "module", "document", "screenfull", "reject", "render", "exports", "React", "exports", "exports", "React", "exports", "exports", "exports", "exports", "keys", "require_lib", "exports", "min", "max", "constant", "ownKeys", "e", "r", "result", "values", "rubberband", "transform", "remove", "e", "keys", "result", "window", "transform", "rest", "remove", "Engine", "isNative", "React", "newTable", "interceptTiles", "col", "TableUtils.pointToLocation", "TableUtils.tableSize", "TilesUtils.getTileTouchPoint", "TableUtils.trimLocation", "TilesTableUtils.interceptTiles", "tiles", "TableUtils.newTable", "TableUtils.placeInTable", "TableUtils.fitsInTable", "TableUtils.findFirstFittingPosition", "tiles", "touchPoint", "touchedTile", "TableUtils.pointToLocation", "TableUtils.tableSize", "TilesUtils.getTileTouchPoint", "reorderStrategy", "moveStrategy", "TilesTableUtils.tilesListToTable", "TilesTableUtils.tableToTilesList", "bind", "_a", "_b", "dragging", "tap", "state", "result", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "React", "import_react", "import_react", "set", "result", "import_react", "noop", "isBrowser", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "isBrowser", "addonCSSOM", "addonVCSSOM", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "React", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "method", "result", "isBrowser", "import_react", "isBrowser", "import_react", "import_react", "import_react", "import_react", "_a", "noop", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "nav", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "React", "import_react", "import_react", "Status", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "_a", "isBrowser", "noop", "import_react", "ZoomState", "import_react", "import_react", "import_react", "import_react", "Symbol", "e", "result", "objectProto", "nativeObjectToString", "symToStringTag", "iteratee", "result", "result", "result", "NAN", "INFINITY", "result", "identity", "e", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "result", "result", "result", "nativeMax", "result", "result", "noop", "objectProto", "hasOwnProperty", "result", "result", "objectProto", "hasOwnProperty", "e", "iteratee", "WRAP_BIND_FLAG", "WRAP_BIND_FLAG", "WRAP_BIND_KEY_FLAG", "WRAP_CURRY_FLAG", "WRAP_PARTIAL_FLAG", "WRAP_PARTIAL_RIGHT_FLAG", "ary", "result", "reorder", "reorder_default", "result", "WRAP_BIND_FLAG", "WRAP_BIND_KEY_FLAG", "WRAP_CURRY_FLAG", "WRAP_CURRY_RIGHT_FLAG", "WRAP_ARY_FLAG", "WRAP_FLIP_FLAG", "ary", "reorder_default", "WRAP_BIND_FLAG", "PLACEHOLDER", "WRAP_BIND_FLAG", "WRAP_BIND_KEY_FLAG", "WRAP_CURRY_BOUND_FLAG", "WRAP_CURRY_FLAG", "WRAP_ARY_FLAG", "WRAP_REARG_FLAG", "nativeMin", "FUNC_ERROR_TEXT", "WRAP_BIND_FLAG", "WRAP_BIND_KEY_FLAG", "WRAP_CURRY_FLAG", "WRAP_CURRY_RIGHT_FLAG", "WRAP_PARTIAL_FLAG", "WRAP_PARTIAL_RIGHT_FLAG", "nativeMax", "ary", "result", "WRAP_ARY_FLAG", "objectProto", "hasOwnProperty", "nativeMax", "transform", "MAX_SAFE_INTEGER", "objectProto", "iteratee", "result", "objectProto", "hasOwnProperty", "argsTag", "funcTag", "freeExports", "freeModule", "moduleExports", "e", "objectProto", "hasOwnProperty", "result", "transform", "objectProto", "hasOwnProperty", "result", "objectProto", "hasOwnProperty", "result", "objectProto", "hasOwnProperty", "result", "result", "objectProto", "hasOwnProperty", "result", "objectProto", "hasOwnProperty", "HASH_UNDEFINED", "Map", "map", "result", "size", "FUNC_ERROR_TEXT", "result", "result", "result", "INFINITY", "result", "result", "result", "values", "result", "objectTag", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "errorTag", "e", "FUNC_ERROR_TEXT", "result", "WRAP_BIND_FLAG", "WRAP_PARTIAL_FLAG", "WRAP_BIND_FLAG", "WRAP_BIND_KEY_FLAG", "WRAP_PARTIAL_FLAG", "result", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsZWJ", "capitalize", "iteratee", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsCombo", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsApos", "result", "nativeMin", "chain", "result", "nativeMax", "size", "result", "clamp", "result", "freeExports", "freeModule", "moduleExports", "Buffer", "result", "result", "objectProto", "propertyIsEnumerable", "nativeGetSymbols", "result", "result", "Promise", "Set", "mapTag", "objectTag", "setTag", "weakMapTag", "dataViewTag", "result", "objectProto", "hasOwnProperty", "result", "result", "result", "symbolProto", "boolTag", "dateTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "mapTag", "setTag", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "symbolTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "result", "key", "CLONE_SYMBOLS_FLAG", "CLONE_DEEP_FLAG", "CLONE_SYMBOLS_FLAG", "CLONE_DEEP_FLAG", "CLONE_SYMBOLS_FLAG", "CLONE_SYMBOLS_FLAG", "result", "HASH_UNDEFINED", "values", "result", "othValue", "map", "result", "set", "result", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "symbolProto", "symbolValueOf", "result", "COMPARE_PARTIAL_FLAG", "objectProto", "hasOwnProperty", "result", "COMPARE_PARTIAL_FLAG", "argsTag", "arrayTag", "objectTag", "objectProto", "hasOwnProperty", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "result", "result", "result", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "FUNC_ERROR_TEXT", "CLONE_DEEP_FLAG", "iteratee", "iteratee", "iteratee", "iteratee", "iteratee", "collection", "iteratee", "objectProto", "hasOwnProperty", "result", "create", "result", "WRAP_CURRY_FLAG", "result", "WRAP_CURRY_RIGHT_FLAG", "result", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "result", "objectProto", "hasOwnProperty", "FUNC_ERROR_TEXT", "LARGE_ARRAY_SIZE", "values", "iteratee", "includes", "result", "values", "values", "iteratee", "values", "iteratee", "iteratee", "iteratee", "iteratee", "set", "result", "mapTag", "setTag", "escape", "reRegExpChar", "result", "collection", "MAX_ARRAY_LENGTH", "result", "collection", "iteratee", "nativeMax", "result", "collection", "nativeMax", "nativeMin", "iteratee", "result", "collection", "iteratee", "iteratee", "INFINITY", "iteratee", "iteratee", "INFINITY", "WRAP_FLIP_FLAG", "FUNC_ERROR_TEXT", "WRAP_CURRY_FLAG", "WRAP_PARTIAL_FLAG", "WRAP_ARY_FLAG", "WRAP_REARG_FLAG", "index", "result", "iteratee", "iteratee", "iteratee", "iteratee", "result", "objectProto", "hasOwnProperty", "result", "objectProto", "hasOwnProperty", "nativeMax", "nativeMin", "stringTag", "nativeMax", "nativeMax", "nativeMin", "iteratee", "includes", "result", "iteratee", "iteratee", "object", "iteratee", "objectProto", "nativeObjectToString", "result", "objectProto", "hasOwnProperty", "nativeObjectToString", "result", "result", "arrayBufferTag", "boolTag", "dateTag", "mapTag", "setTag", "objectProto", "hasOwnProperty", "result", "nativeIsFinite", "isFinite", "numberTag", "regexpTag", "MAX_SAFE_INTEGER", "weakMapTag", "CLONE_DEEP_FLAG", "arrayProto", "result", "result", "nativeMax", "nativeMin", "result", "iteratee", "result", "object", "iteratee", "result", "object", "CLONE_DEEP_FLAG", "CLONE_DEEP_FLAG", "iteratee", "result", "iteratee", "iteratee", "result", "NAN", "iteratee", "iteratee", "iteratee", "chain", "result", "FUNC_ERROR_TEXT", "result", "mapTag", "setTag", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "result", "result", "result", "iteratee", "result", "collection", "iteratee", "nativeMin", "MAX_SAFE_INTEGER", "result", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "result", "nativeCeil", "result", "nativeCeil", "nativeFloor", "reTrimStart", "parseInt", "WRAP_PARTIAL_FLAG", "WRAP_PARTIAL_RIGHT_FLAG", "result", "result", "parent", "clone", "arrayProto", "splice", "values", "iteratee", "indexOf", "values", "values", "iteratee", "values", "arrayProto", "splice", "result", "nativeFloor", "nativeMin", "nativeRandom", "nativeCeil", "nativeMax", "result", "WRAP_REARG_FLAG", "iteratee", "collection", "iteratee", "iteratee", "iteratee", "result", "FUNC_ERROR_TEXT", "arrayProto", "size", "mapTag", "setTag", "result", "result", "collection", "MAX_ARRAY_LENGTH", "nativeFloor", "nativeMin", "iteratee", "MAX_ARRAY_LENGTH", "iteratee", "iteratee", "iteratee", "result", "iteratee", "MAX_ARRAY_LENGTH", "FUNC_ERROR_TEXT", "nativeMax", "result", "iteratee", "objectProto", "hasOwnProperty", "objectProto", "hasOwnProperty", "result", "FUNC_ERROR_TEXT", "throttle", "MAX_SAFE_INTEGER", "MAX_ARRAY_LENGTH", "nativeMin", "iteratee", "result", "result", "MAX_SAFE_INTEGER", "iteratee", "object", "reTrimStart", "reFlags", "result", "INFINITY", "values", "LARGE_ARRAY_SIZE", "iteratee", "includes", "result", "set", "iteratee", "iteratee", "nativeMax", "iteratee", "result", "result", "values", "iteratee", "result", "iteratee", "values", "result", "values", "values", "iteratee", "result", "result", "nativeMax", "nativeMin", "size", "nativeMin", "result", "iteratee", "WRAP_BIND_KEY_FLAG", "LAZY_FILTER_FLAG", "MAX_ARRAY_LENGTH", "arrayProto", "objectProto", "hasOwnProperty", "symIterator", "nativeMax", "nativeMin", "mixin", "result", "iteratee", "value", "React", "dataWithKeys", "setData", "tiles", "_a", "bind", "props"]
 }
Index: imaps-frontend/node_modules/.vite/deps/uuid.js
===================================================================
--- imaps-frontend/node_modules/.vite/deps/uuid.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/uuid.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,528 @@
+import "./chunk-V4OQ3NZ2.js";
+
+// node_modules/uuid/dist/esm-browser/max.js
+var max_default = "ffffffff-ffff-ffff-ffff-ffffffffffff";
+
+// node_modules/uuid/dist/esm-browser/nil.js
+var nil_default = "00000000-0000-0000-0000-000000000000";
+
+// node_modules/uuid/dist/esm-browser/regex.js
+var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;
+
+// node_modules/uuid/dist/esm-browser/validate.js
+function validate(uuid) {
+  return typeof uuid === "string" && regex_default.test(uuid);
+}
+var validate_default = validate;
+
+// node_modules/uuid/dist/esm-browser/parse.js
+function parse(uuid) {
+  if (!validate_default(uuid)) {
+    throw TypeError("Invalid UUID");
+  }
+  let v;
+  return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, v >>> 16 & 255, v >>> 8 & 255, v & 255, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255, v / 4294967296 & 255, v >>> 24 & 255, v >>> 16 & 255, v >>> 8 & 255, v & 255);
+}
+var parse_default = parse;
+
+// node_modules/uuid/dist/esm-browser/stringify.js
+var byteToHex = [];
+for (let i = 0; i < 256; ++i) {
+  byteToHex.push((i + 256).toString(16).slice(1));
+}
+function unsafeStringify(arr, offset = 0) {
+  return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
+}
+function stringify(arr, offset = 0) {
+  const uuid = unsafeStringify(arr, offset);
+  if (!validate_default(uuid)) {
+    throw TypeError("Stringified UUID is invalid");
+  }
+  return uuid;
+}
+var stringify_default = stringify;
+
+// node_modules/uuid/dist/esm-browser/rng.js
+var getRandomValues;
+var rnds8 = new Uint8Array(16);
+function rng() {
+  if (!getRandomValues) {
+    if (typeof crypto === "undefined" || !crypto.getRandomValues) {
+      throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
+    }
+    getRandomValues = crypto.getRandomValues.bind(crypto);
+  }
+  return getRandomValues(rnds8);
+}
+
+// node_modules/uuid/dist/esm-browser/v1.js
+var _state = {};
+function v1(options, buf, offset) {
+  var _a;
+  let bytes;
+  const isV6 = (options == null ? void 0 : options._v6) ?? false;
+  if (options) {
+    const optionsKeys = Object.keys(options);
+    if (optionsKeys.length === 1 && optionsKeys[0] === "_v6") {
+      options = void 0;
+    }
+  }
+  if (options) {
+    bytes = v1Bytes(options.random ?? ((_a = options.rng) == null ? void 0 : _a.call(options)) ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);
+  } else {
+    const now = Date.now();
+    const rnds = rng();
+    updateV1State(_state, now, rnds);
+    bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? void 0 : _state.clockseq, isV6 ? void 0 : _state.node, buf, offset);
+  }
+  return buf ? bytes : unsafeStringify(bytes);
+}
+function updateV1State(state, now, rnds) {
+  state.msecs ?? (state.msecs = -Infinity);
+  state.nsecs ?? (state.nsecs = 0);
+  if (now === state.msecs) {
+    state.nsecs++;
+    if (state.nsecs >= 1e4) {
+      state.node = void 0;
+      state.nsecs = 0;
+    }
+  } else if (now > state.msecs) {
+    state.nsecs = 0;
+  } else if (now < state.msecs) {
+    state.node = void 0;
+  }
+  if (!state.node) {
+    state.node = rnds.slice(10, 16);
+    state.node[0] |= 1;
+    state.clockseq = (rnds[8] << 8 | rnds[9]) & 16383;
+  }
+  state.msecs = now;
+  return state;
+}
+function v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {
+  if (!buf) {
+    buf = new Uint8Array(16);
+    offset = 0;
+  }
+  msecs ?? (msecs = Date.now());
+  nsecs ?? (nsecs = 0);
+  clockseq ?? (clockseq = (rnds[8] << 8 | rnds[9]) & 16383);
+  node ?? (node = rnds.slice(10, 16));
+  msecs += 122192928e5;
+  const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296;
+  buf[offset++] = tl >>> 24 & 255;
+  buf[offset++] = tl >>> 16 & 255;
+  buf[offset++] = tl >>> 8 & 255;
+  buf[offset++] = tl & 255;
+  const tmh = msecs / 4294967296 * 1e4 & 268435455;
+  buf[offset++] = tmh >>> 8 & 255;
+  buf[offset++] = tmh & 255;
+  buf[offset++] = tmh >>> 24 & 15 | 16;
+  buf[offset++] = tmh >>> 16 & 255;
+  buf[offset++] = clockseq >>> 8 | 128;
+  buf[offset++] = clockseq & 255;
+  for (let n = 0; n < 6; ++n) {
+    buf[offset++] = node[n];
+  }
+  return buf;
+}
+var v1_default = v1;
+
+// node_modules/uuid/dist/esm-browser/v1ToV6.js
+function v1ToV6(uuid) {
+  const v1Bytes2 = typeof uuid === "string" ? parse_default(uuid) : uuid;
+  const v6Bytes = _v1ToV6(v1Bytes2);
+  return typeof uuid === "string" ? unsafeStringify(v6Bytes) : v6Bytes;
+}
+function _v1ToV6(v1Bytes2) {
+  return Uint8Array.of((v1Bytes2[6] & 15) << 4 | v1Bytes2[7] >> 4 & 15, (v1Bytes2[7] & 15) << 4 | (v1Bytes2[4] & 240) >> 4, (v1Bytes2[4] & 15) << 4 | (v1Bytes2[5] & 240) >> 4, (v1Bytes2[5] & 15) << 4 | (v1Bytes2[0] & 240) >> 4, (v1Bytes2[0] & 15) << 4 | (v1Bytes2[1] & 240) >> 4, (v1Bytes2[1] & 15) << 4 | (v1Bytes2[2] & 240) >> 4, 96 | v1Bytes2[2] & 15, v1Bytes2[3], v1Bytes2[8], v1Bytes2[9], v1Bytes2[10], v1Bytes2[11], v1Bytes2[12], v1Bytes2[13], v1Bytes2[14], v1Bytes2[15]);
+}
+
+// node_modules/uuid/dist/esm-browser/md5.js
+function md5(bytes) {
+  const words = uint8ToUint32(bytes);
+  const md5Bytes = wordsToMd5(words, bytes.length * 8);
+  return uint32ToUint8(md5Bytes);
+}
+function uint32ToUint8(input) {
+  const bytes = new Uint8Array(input.length * 4);
+  for (let i = 0; i < input.length * 4; i++) {
+    bytes[i] = input[i >> 2] >>> i % 4 * 8 & 255;
+  }
+  return bytes;
+}
+function getOutputLength(inputLength8) {
+  return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;
+}
+function wordsToMd5(x, len) {
+  const xpad = new Uint32Array(getOutputLength(len)).fill(0);
+  xpad.set(x);
+  xpad[len >> 5] |= 128 << len % 32;
+  xpad[xpad.length - 1] = len;
+  x = xpad;
+  let a = 1732584193;
+  let b = -271733879;
+  let c = -1732584194;
+  let d = 271733878;
+  for (let i = 0; i < x.length; i += 16) {
+    const olda = a;
+    const oldb = b;
+    const oldc = c;
+    const oldd = d;
+    a = md5ff(a, b, c, d, x[i], 7, -680876936);
+    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
+    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
+    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
+    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
+    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
+    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
+    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
+    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
+    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
+    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
+    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
+    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
+    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
+    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
+    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
+    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
+    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
+    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
+    b = md5gg(b, c, d, a, x[i], 20, -373897302);
+    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
+    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
+    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
+    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
+    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
+    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
+    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
+    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
+    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
+    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
+    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
+    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
+    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
+    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
+    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
+    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
+    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
+    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
+    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
+    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
+    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
+    d = md5hh(d, a, b, c, x[i], 11, -358537222);
+    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
+    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
+    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
+    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
+    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
+    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
+    a = md5ii(a, b, c, d, x[i], 6, -198630844);
+    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
+    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
+    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
+    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
+    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
+    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
+    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
+    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
+    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
+    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
+    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
+    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
+    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
+    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
+    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
+    a = safeAdd(a, olda);
+    b = safeAdd(b, oldb);
+    c = safeAdd(c, oldc);
+    d = safeAdd(d, oldd);
+  }
+  return Uint32Array.of(a, b, c, d);
+}
+function uint8ToUint32(input) {
+  if (input.length === 0) {
+    return new Uint32Array();
+  }
+  const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0);
+  for (let i = 0; i < input.length; i++) {
+    output[i >> 2] |= (input[i] & 255) << i % 4 * 8;
+  }
+  return output;
+}
+function safeAdd(x, y) {
+  const lsw = (x & 65535) + (y & 65535);
+  const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+  return msw << 16 | lsw & 65535;
+}
+function bitRotateLeft(num, cnt) {
+  return num << cnt | num >>> 32 - cnt;
+}
+function md5cmn(q, a, b, x, s, t) {
+  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
+}
+function md5ff(a, b, c, d, x, s, t) {
+  return md5cmn(b & c | ~b & d, a, b, x, s, t);
+}
+function md5gg(a, b, c, d, x, s, t) {
+  return md5cmn(b & d | c & ~d, a, b, x, s, t);
+}
+function md5hh(a, b, c, d, x, s, t) {
+  return md5cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5ii(a, b, c, d, x, s, t) {
+  return md5cmn(c ^ (b | ~d), a, b, x, s, t);
+}
+var md5_default = md5;
+
+// node_modules/uuid/dist/esm-browser/v35.js
+function stringToBytes(str) {
+  str = unescape(encodeURIComponent(str));
+  const bytes = new Uint8Array(str.length);
+  for (let i = 0; i < str.length; ++i) {
+    bytes[i] = str.charCodeAt(i);
+  }
+  return bytes;
+}
+var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
+var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
+function v35(version2, hash, value, namespace, buf, offset) {
+  const valueBytes = typeof value === "string" ? stringToBytes(value) : value;
+  const namespaceBytes = typeof namespace === "string" ? parse_default(namespace) : namespace;
+  if (typeof namespace === "string") {
+    namespace = parse_default(namespace);
+  }
+  if ((namespace == null ? void 0 : namespace.length) !== 16) {
+    throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
+  }
+  let bytes = new Uint8Array(16 + valueBytes.length);
+  bytes.set(namespaceBytes);
+  bytes.set(valueBytes, namespaceBytes.length);
+  bytes = hash(bytes);
+  bytes[6] = bytes[6] & 15 | version2;
+  bytes[8] = bytes[8] & 63 | 128;
+  if (buf) {
+    offset = offset || 0;
+    for (let i = 0; i < 16; ++i) {
+      buf[offset + i] = bytes[i];
+    }
+    return buf;
+  }
+  return unsafeStringify(bytes);
+}
+
+// node_modules/uuid/dist/esm-browser/v3.js
+function v3(value, namespace, buf, offset) {
+  return v35(48, md5_default, value, namespace, buf, offset);
+}
+v3.DNS = DNS;
+v3.URL = URL;
+var v3_default = v3;
+
+// node_modules/uuid/dist/esm-browser/native.js
+var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
+var native_default = { randomUUID };
+
+// node_modules/uuid/dist/esm-browser/v4.js
+function v4(options, buf, offset) {
+  if (native_default.randomUUID && !buf && !options) {
+    return native_default.randomUUID();
+  }
+  options = options || {};
+  const rnds = options.random || (options.rng || rng)();
+  rnds[6] = rnds[6] & 15 | 64;
+  rnds[8] = rnds[8] & 63 | 128;
+  if (buf) {
+    offset = offset || 0;
+    for (let i = 0; i < 16; ++i) {
+      buf[offset + i] = rnds[i];
+    }
+    return buf;
+  }
+  return unsafeStringify(rnds);
+}
+var v4_default = v4;
+
+// node_modules/uuid/dist/esm-browser/sha1.js
+function f(s, x, y, z) {
+  switch (s) {
+    case 0:
+      return x & y ^ ~x & z;
+    case 1:
+      return x ^ y ^ z;
+    case 2:
+      return x & y ^ x & z ^ y & z;
+    case 3:
+      return x ^ y ^ z;
+  }
+}
+function ROTL(x, n) {
+  return x << n | x >>> 32 - n;
+}
+function sha1(bytes) {
+  const K = [1518500249, 1859775393, 2400959708, 3395469782];
+  const H = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];
+  const newBytes = new Uint8Array(bytes.length + 1);
+  newBytes.set(bytes);
+  newBytes[bytes.length] = 128;
+  bytes = newBytes;
+  const l = bytes.length / 4 + 2;
+  const N = Math.ceil(l / 16);
+  const M = new Array(N);
+  for (let i = 0; i < N; ++i) {
+    const arr = new Uint32Array(16);
+    for (let j = 0; j < 16; ++j) {
+      arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];
+    }
+    M[i] = arr;
+  }
+  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
+  M[N - 1][14] = Math.floor(M[N - 1][14]);
+  M[N - 1][15] = (bytes.length - 1) * 8 & 4294967295;
+  for (let i = 0; i < N; ++i) {
+    const W = new Uint32Array(80);
+    for (let t = 0; t < 16; ++t) {
+      W[t] = M[i][t];
+    }
+    for (let t = 16; t < 80; ++t) {
+      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
+    }
+    let a = H[0];
+    let b = H[1];
+    let c = H[2];
+    let d = H[3];
+    let e = H[4];
+    for (let t = 0; t < 80; ++t) {
+      const s = Math.floor(t / 20);
+      const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
+      e = d;
+      d = c;
+      c = ROTL(b, 30) >>> 0;
+      b = a;
+      a = T;
+    }
+    H[0] = H[0] + a >>> 0;
+    H[1] = H[1] + b >>> 0;
+    H[2] = H[2] + c >>> 0;
+    H[3] = H[3] + d >>> 0;
+    H[4] = H[4] + e >>> 0;
+  }
+  return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);
+}
+var sha1_default = sha1;
+
+// node_modules/uuid/dist/esm-browser/v5.js
+function v5(value, namespace, buf, offset) {
+  return v35(80, sha1_default, value, namespace, buf, offset);
+}
+v5.DNS = DNS;
+v5.URL = URL;
+var v5_default = v5;
+
+// node_modules/uuid/dist/esm-browser/v6.js
+function v6(options, buf, offset) {
+  options ?? (options = {});
+  offset ?? (offset = 0);
+  let bytes = v1_default({ ...options, _v6: true }, new Uint8Array(16));
+  bytes = v1ToV6(bytes);
+  if (buf) {
+    for (let i = 0; i < 16; i++) {
+      buf[offset + i] = bytes[i];
+    }
+    return buf;
+  }
+  return unsafeStringify(bytes);
+}
+var v6_default = v6;
+
+// node_modules/uuid/dist/esm-browser/v6ToV1.js
+function v6ToV1(uuid) {
+  const v6Bytes = typeof uuid === "string" ? parse_default(uuid) : uuid;
+  const v1Bytes2 = _v6ToV1(v6Bytes);
+  return typeof uuid === "string" ? unsafeStringify(v1Bytes2) : v1Bytes2;
+}
+function _v6ToV1(v6Bytes) {
+  return Uint8Array.of((v6Bytes[3] & 15) << 4 | v6Bytes[4] >> 4 & 15, (v6Bytes[4] & 15) << 4 | (v6Bytes[5] & 240) >> 4, (v6Bytes[5] & 15) << 4 | v6Bytes[6] & 15, v6Bytes[7], (v6Bytes[1] & 15) << 4 | (v6Bytes[2] & 240) >> 4, (v6Bytes[2] & 15) << 4 | (v6Bytes[3] & 240) >> 4, 16 | (v6Bytes[0] & 240) >> 4, (v6Bytes[0] & 15) << 4 | (v6Bytes[1] & 240) >> 4, v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);
+}
+
+// node_modules/uuid/dist/esm-browser/v7.js
+var _state2 = {};
+function v7(options, buf, offset) {
+  var _a;
+  let bytes;
+  if (options) {
+    bytes = v7Bytes(options.random ?? ((_a = options.rng) == null ? void 0 : _a.call(options)) ?? rng(), options.msecs, options.seq, buf, offset);
+  } else {
+    const now = Date.now();
+    const rnds = rng();
+    updateV7State(_state2, now, rnds);
+    bytes = v7Bytes(rnds, _state2.msecs, _state2.seq, buf, offset);
+  }
+  return buf ? bytes : unsafeStringify(bytes);
+}
+function updateV7State(state, now, rnds) {
+  state.msecs ?? (state.msecs = -Infinity);
+  state.seq ?? (state.seq = 0);
+  if (now > state.msecs) {
+    state.seq = rnds[6] << 23 | rnds[7] << 16 | rnds[8] << 8 | rnds[9];
+    state.msecs = now;
+  } else {
+    state.seq = state.seq + 1 | 0;
+    if (state.seq === 0) {
+      state.msecs++;
+    }
+  }
+  return state;
+}
+function v7Bytes(rnds, msecs, seq, buf, offset = 0) {
+  if (!buf) {
+    buf = new Uint8Array(16);
+    offset = 0;
+  }
+  msecs ?? (msecs = Date.now());
+  seq ?? (seq = rnds[6] * 127 << 24 | rnds[7] << 16 | rnds[8] << 8 | rnds[9]);
+  buf[offset++] = msecs / 1099511627776 & 255;
+  buf[offset++] = msecs / 4294967296 & 255;
+  buf[offset++] = msecs / 16777216 & 255;
+  buf[offset++] = msecs / 65536 & 255;
+  buf[offset++] = msecs / 256 & 255;
+  buf[offset++] = msecs & 255;
+  buf[offset++] = 112 | seq >>> 28 & 15;
+  buf[offset++] = seq >>> 20 & 255;
+  buf[offset++] = 128 | seq >>> 14 & 63;
+  buf[offset++] = seq >>> 6 & 255;
+  buf[offset++] = seq << 2 & 255 | rnds[10] & 3;
+  buf[offset++] = rnds[11];
+  buf[offset++] = rnds[12];
+  buf[offset++] = rnds[13];
+  buf[offset++] = rnds[14];
+  buf[offset++] = rnds[15];
+  return buf;
+}
+var v7_default = v7;
+
+// node_modules/uuid/dist/esm-browser/version.js
+function version(uuid) {
+  if (!validate_default(uuid)) {
+    throw TypeError("Invalid UUID");
+  }
+  return parseInt(uuid.slice(14, 15), 16);
+}
+var version_default = version;
+export {
+  max_default as MAX,
+  nil_default as NIL,
+  parse_default as parse,
+  stringify_default as stringify,
+  v1_default as v1,
+  v1ToV6,
+  v3_default as v3,
+  v4_default as v4,
+  v5_default as v5,
+  v6_default as v6,
+  v6ToV1,
+  v7_default as v7,
+  validate_default as validate,
+  version_default as version
+};
+//# sourceMappingURL=uuid.js.map
Index: imaps-frontend/node_modules/.vite/deps/uuid.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/uuid.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/.vite/deps/uuid.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": ["../../uuid/dist/esm-browser/max.js", "../../uuid/dist/esm-browser/nil.js", "../../uuid/dist/esm-browser/regex.js", "../../uuid/dist/esm-browser/validate.js", "../../uuid/dist/esm-browser/parse.js", "../../uuid/dist/esm-browser/stringify.js", "../../uuid/dist/esm-browser/rng.js", "../../uuid/dist/esm-browser/v1.js", "../../uuid/dist/esm-browser/v1ToV6.js", "../../uuid/dist/esm-browser/md5.js", "../../uuid/dist/esm-browser/v35.js", "../../uuid/dist/esm-browser/v3.js", "../../uuid/dist/esm-browser/native.js", "../../uuid/dist/esm-browser/v4.js", "../../uuid/dist/esm-browser/sha1.js", "../../uuid/dist/esm-browser/v5.js", "../../uuid/dist/esm-browser/v6.js", "../../uuid/dist/esm-browser/v6ToV1.js", "../../uuid/dist/esm-browser/v7.js", "../../uuid/dist/esm-browser/version.js"],
+  "sourcesContent": ["export default 'ffffffff-ffff-ffff-ffff-ffffffffffff';\n", "export default '00000000-0000-0000-0000-000000000000';\n", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n", "import REGEX from './regex.js';\nfunction validate(uuid) {\n    return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;\n", "import validate from './validate.js';\nfunction parse(uuid) {\n    if (!validate(uuid)) {\n        throw TypeError('Invalid UUID');\n    }\n    let v;\n    return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexport default parse;\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v1(options, buf, offset) {\n    let bytes;\n    const isV6 = options?._v6 ?? false;\n    if (options) {\n        const optionsKeys = Object.keys(options);\n        if (optionsKeys.length === 1 && optionsKeys[0] === '_v6') {\n            options = undefined;\n        }\n    }\n    if (options) {\n        bytes = v1Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);\n    }\n    else {\n        const now = Date.now();\n        const rnds = rng();\n        updateV1State(_state, now, rnds);\n        bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? undefined : _state.clockseq, isV6 ? undefined : _state.node, buf, offset);\n    }\n    return buf ? bytes : unsafeStringify(bytes);\n}\nexport function updateV1State(state, now, rnds) {\n    state.msecs ??= -Infinity;\n    state.nsecs ??= 0;\n    if (now === state.msecs) {\n        state.nsecs++;\n        if (state.nsecs >= 10000) {\n            state.node = undefined;\n            state.nsecs = 0;\n        }\n    }\n    else if (now > state.msecs) {\n        state.nsecs = 0;\n    }\n    else if (now < state.msecs) {\n        state.node = undefined;\n    }\n    if (!state.node) {\n        state.node = rnds.slice(10, 16);\n        state.node[0] |= 0x01;\n        state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n    }\n    state.msecs = now;\n    return state;\n}\nfunction v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {\n    if (!buf) {\n        buf = new Uint8Array(16);\n        offset = 0;\n    }\n    msecs ??= Date.now();\n    nsecs ??= 0;\n    clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n    node ??= rnds.slice(10, 16);\n    msecs += 12219292800000;\n    const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n    buf[offset++] = (tl >>> 24) & 0xff;\n    buf[offset++] = (tl >>> 16) & 0xff;\n    buf[offset++] = (tl >>> 8) & 0xff;\n    buf[offset++] = tl & 0xff;\n    const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n    buf[offset++] = (tmh >>> 8) & 0xff;\n    buf[offset++] = tmh & 0xff;\n    buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10;\n    buf[offset++] = (tmh >>> 16) & 0xff;\n    buf[offset++] = (clockseq >>> 8) | 0x80;\n    buf[offset++] = clockseq & 0xff;\n    for (let n = 0; n < 6; ++n) {\n        buf[offset++] = node[n];\n    }\n    return buf;\n}\nexport default v1;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v1ToV6(uuid) {\n    const v1Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n    const v6Bytes = _v1ToV6(v1Bytes);\n    return typeof uuid === 'string' ? unsafeStringify(v6Bytes) : v6Bytes;\n}\nfunction _v1ToV6(v1Bytes) {\n    return Uint8Array.of(((v1Bytes[6] & 0x0f) << 4) | ((v1Bytes[7] >> 4) & 0x0f), ((v1Bytes[7] & 0x0f) << 4) | ((v1Bytes[4] & 0xf0) >> 4), ((v1Bytes[4] & 0x0f) << 4) | ((v1Bytes[5] & 0xf0) >> 4), ((v1Bytes[5] & 0x0f) << 4) | ((v1Bytes[0] & 0xf0) >> 4), ((v1Bytes[0] & 0x0f) << 4) | ((v1Bytes[1] & 0xf0) >> 4), ((v1Bytes[1] & 0x0f) << 4) | ((v1Bytes[2] & 0xf0) >> 4), 0x60 | (v1Bytes[2] & 0x0f), v1Bytes[3], v1Bytes[8], v1Bytes[9], v1Bytes[10], v1Bytes[11], v1Bytes[12], v1Bytes[13], v1Bytes[14], v1Bytes[15]);\n}\n", "function md5(bytes) {\n    const words = uint8ToUint32(bytes);\n    const md5Bytes = wordsToMd5(words, bytes.length * 8);\n    return uint32ToUint8(md5Bytes);\n}\nfunction uint32ToUint8(input) {\n    const bytes = new Uint8Array(input.length * 4);\n    for (let i = 0; i < input.length * 4; i++) {\n        bytes[i] = (input[i >> 2] >>> ((i % 4) * 8)) & 0xff;\n    }\n    return bytes;\n}\nfunction getOutputLength(inputLength8) {\n    return (((inputLength8 + 64) >>> 9) << 4) + 14 + 1;\n}\nfunction wordsToMd5(x, len) {\n    const xpad = new Uint32Array(getOutputLength(len)).fill(0);\n    xpad.set(x);\n    xpad[len >> 5] |= 0x80 << len % 32;\n    xpad[xpad.length - 1] = len;\n    x = xpad;\n    let a = 1732584193;\n    let b = -271733879;\n    let c = -1732584194;\n    let d = 271733878;\n    for (let i = 0; i < x.length; i += 16) {\n        const olda = a;\n        const oldb = b;\n        const oldc = c;\n        const oldd = d;\n        a = md5ff(a, b, c, d, x[i], 7, -680876936);\n        d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n        c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n        b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n        a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n        d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n        c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n        b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n        a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n        d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n        c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n        b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n        a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n        d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n        c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n        b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n        a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n        d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n        c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n        b = md5gg(b, c, d, a, x[i], 20, -373897302);\n        a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n        d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n        c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n        b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n        a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n        d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n        c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n        b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n        a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n        d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n        c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n        b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n        a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n        d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n        c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n        b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n        a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n        d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n        c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n        b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n        a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n        d = md5hh(d, a, b, c, x[i], 11, -358537222);\n        c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n        b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n        a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n        d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n        c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n        b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n        a = md5ii(a, b, c, d, x[i], 6, -198630844);\n        d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n        c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n        b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n        a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n        d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n        c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n        b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n        a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n        d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n        c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n        b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n        a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n        d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n        c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n        b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n        a = safeAdd(a, olda);\n        b = safeAdd(b, oldb);\n        c = safeAdd(c, oldc);\n        d = safeAdd(d, oldd);\n    }\n    return Uint32Array.of(a, b, c, d);\n}\nfunction uint8ToUint32(input) {\n    if (input.length === 0) {\n        return new Uint32Array();\n    }\n    const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0);\n    for (let i = 0; i < input.length; i++) {\n        output[i >> 2] |= (input[i] & 0xff) << ((i % 4) * 8);\n    }\n    return output;\n}\nfunction safeAdd(x, y) {\n    const lsw = (x & 0xffff) + (y & 0xffff);\n    const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n    return (msw << 16) | (lsw & 0xffff);\n}\nfunction bitRotateLeft(num, cnt) {\n    return (num << cnt) | (num >>> (32 - cnt));\n}\nfunction md5cmn(q, a, b, x, s, t) {\n    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n    return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n    return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n    return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n    return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nexport default md5;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport function stringToBytes(str) {\n    str = unescape(encodeURIComponent(str));\n    const bytes = new Uint8Array(str.length);\n    for (let i = 0; i < str.length; ++i) {\n        bytes[i] = str.charCodeAt(i);\n    }\n    return bytes;\n}\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(version, hash, value, namespace, buf, offset) {\n    const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n    const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace;\n    if (typeof namespace === 'string') {\n        namespace = parse(namespace);\n    }\n    if (namespace?.length !== 16) {\n        throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    }\n    let bytes = new Uint8Array(16 + valueBytes.length);\n    bytes.set(namespaceBytes);\n    bytes.set(valueBytes, namespaceBytes.length);\n    bytes = hash(bytes);\n    bytes[6] = (bytes[6] & 0x0f) | version;\n    bytes[8] = (bytes[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = bytes[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(bytes);\n}\n", "import md5 from './md5.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v3(value, namespace, buf, offset) {\n    return v35(0x30, md5, value, namespace, buf, offset);\n}\nv3.DNS = DNS;\nv3.URL = URL;\nexport default v3;\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random || (options.rng || rng)();\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nexport default v4;\n", "function f(s, x, y, z) {\n    switch (s) {\n        case 0:\n            return (x & y) ^ (~x & z);\n        case 1:\n            return x ^ y ^ z;\n        case 2:\n            return (x & y) ^ (x & z) ^ (y & z);\n        case 3:\n            return x ^ y ^ z;\n    }\n}\nfunction ROTL(x, n) {\n    return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n    const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n    const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n    const newBytes = new Uint8Array(bytes.length + 1);\n    newBytes.set(bytes);\n    newBytes[bytes.length] = 0x80;\n    bytes = newBytes;\n    const l = bytes.length / 4 + 2;\n    const N = Math.ceil(l / 16);\n    const M = new Array(N);\n    for (let i = 0; i < N; ++i) {\n        const arr = new Uint32Array(16);\n        for (let j = 0; j < 16; ++j) {\n            arr[j] =\n                (bytes[i * 64 + j * 4] << 24) |\n                    (bytes[i * 64 + j * 4 + 1] << 16) |\n                    (bytes[i * 64 + j * 4 + 2] << 8) |\n                    bytes[i * 64 + j * 4 + 3];\n        }\n        M[i] = arr;\n    }\n    M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);\n    M[N - 1][14] = Math.floor(M[N - 1][14]);\n    M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n    for (let i = 0; i < N; ++i) {\n        const W = new Uint32Array(80);\n        for (let t = 0; t < 16; ++t) {\n            W[t] = M[i][t];\n        }\n        for (let t = 16; t < 80; ++t) {\n            W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n        }\n        let a = H[0];\n        let b = H[1];\n        let c = H[2];\n        let d = H[3];\n        let e = H[4];\n        for (let t = 0; t < 80; ++t) {\n            const s = Math.floor(t / 20);\n            const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n            e = d;\n            d = c;\n            c = ROTL(b, 30) >>> 0;\n            b = a;\n            a = T;\n        }\n        H[0] = (H[0] + a) >>> 0;\n        H[1] = (H[1] + b) >>> 0;\n        H[2] = (H[2] + c) >>> 0;\n        H[3] = (H[3] + d) >>> 0;\n        H[4] = (H[4] + e) >>> 0;\n    }\n    return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexport default sha1;\n", "import sha1 from './sha1.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v5(value, namespace, buf, offset) {\n    return v35(0x50, sha1, value, namespace, buf, offset);\n}\nv5.DNS = DNS;\nv5.URL = URL;\nexport default v5;\n", "import { unsafeStringify } from './stringify.js';\nimport v1 from './v1.js';\nimport v1ToV6 from './v1ToV6.js';\nfunction v6(options, buf, offset) {\n    options ??= {};\n    offset ??= 0;\n    let bytes = v1({ ...options, _v6: true }, new Uint8Array(16));\n    bytes = v1ToV6(bytes);\n    if (buf) {\n        for (let i = 0; i < 16; i++) {\n            buf[offset + i] = bytes[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(bytes);\n}\nexport default v6;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v6ToV1(uuid) {\n    const v6Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n    const v1Bytes = _v6ToV1(v6Bytes);\n    return typeof uuid === 'string' ? unsafeStringify(v1Bytes) : v1Bytes;\n}\nfunction _v6ToV1(v6Bytes) {\n    return Uint8Array.of(((v6Bytes[3] & 0x0f) << 4) | ((v6Bytes[4] >> 4) & 0x0f), ((v6Bytes[4] & 0x0f) << 4) | ((v6Bytes[5] & 0xf0) >> 4), ((v6Bytes[5] & 0x0f) << 4) | (v6Bytes[6] & 0x0f), v6Bytes[7], ((v6Bytes[1] & 0x0f) << 4) | ((v6Bytes[2] & 0xf0) >> 4), ((v6Bytes[2] & 0x0f) << 4) | ((v6Bytes[3] & 0xf0) >> 4), 0x10 | ((v6Bytes[0] & 0xf0) >> 4), ((v6Bytes[0] & 0x0f) << 4) | ((v6Bytes[1] & 0xf0) >> 4), v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v7(options, buf, offset) {\n    let bytes;\n    if (options) {\n        bytes = v7Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.seq, buf, offset);\n    }\n    else {\n        const now = Date.now();\n        const rnds = rng();\n        updateV7State(_state, now, rnds);\n        bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);\n    }\n    return buf ? bytes : unsafeStringify(bytes);\n}\nexport function updateV7State(state, now, rnds) {\n    state.msecs ??= -Infinity;\n    state.seq ??= 0;\n    if (now > state.msecs) {\n        state.seq = (rnds[6] << 23) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n        state.msecs = now;\n    }\n    else {\n        state.seq = (state.seq + 1) | 0;\n        if (state.seq === 0) {\n            state.msecs++;\n        }\n    }\n    return state;\n}\nfunction v7Bytes(rnds, msecs, seq, buf, offset = 0) {\n    if (!buf) {\n        buf = new Uint8Array(16);\n        offset = 0;\n    }\n    msecs ??= Date.now();\n    seq ??= ((rnds[6] * 0x7f) << 24) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n    buf[offset++] = (msecs / 0x10000000000) & 0xff;\n    buf[offset++] = (msecs / 0x100000000) & 0xff;\n    buf[offset++] = (msecs / 0x1000000) & 0xff;\n    buf[offset++] = (msecs / 0x10000) & 0xff;\n    buf[offset++] = (msecs / 0x100) & 0xff;\n    buf[offset++] = msecs & 0xff;\n    buf[offset++] = 0x70 | ((seq >>> 28) & 0x0f);\n    buf[offset++] = (seq >>> 20) & 0xff;\n    buf[offset++] = 0x80 | ((seq >>> 14) & 0x3f);\n    buf[offset++] = (seq >>> 6) & 0xff;\n    buf[offset++] = ((seq << 2) & 0xff) | (rnds[10] & 0x03);\n    buf[offset++] = rnds[11];\n    buf[offset++] = rnds[12];\n    buf[offset++] = rnds[13];\n    buf[offset++] = rnds[14];\n    buf[offset++] = rnds[15];\n    return buf;\n}\nexport default v7;\n", "import validate from './validate.js';\nfunction version(uuid) {\n    if (!validate(uuid)) {\n        throw TypeError('Invalid UUID');\n    }\n    return parseInt(uuid.slice(14, 15), 16);\n}\nexport default version;\n"],
+  "mappings": "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",
+  "names": ["v1Bytes", "version", "v1Bytes", "_state"]
+}
